Копирование таблиц из одной базы данных в другую

#sql

#sql

Вопрос:

Эта инструкция SQL выполняется, но затем останавливается:

 SET IDENTITY_INSERT [CPI].[dbo].[Transactions] ON
GO

insert into CPI.dbo.Transactions 
(customerid = 24, TransactionId, DepartmentId, ItemId, CategoryId, Quantity, Cost, DateCreated, InvoiceNumber, DataSource, DataSourceId, ImportId, LastUpdate)
select customerid = 104, TransactionId, DepartmentId, ItemId, CategoryId, Quantity, Cost, DateCreated, InvoiceNumber, DataSource, DataSourceId, ImportId, LastUpdate
from Analyzer.dbo.transactions
  

но это обрабатывается около 5 минут, а затем эта ошибка:

Сообщение 547, уровень 16, состояние 0, строка 4 Инструкция INSERT конфликтовала с ограничением ВНЕШНЕГО КЛЮЧА «FK_Transactions_Customers». Конфликт произошел в базе данных «CPI», таблице «dbo.Customers», столбце «CustomerID». Выполнение инструкции завершено.

Комментарии:

1. Если вы публикуете код или XML, пожалуйста , выделите эти строки в текстовом редакторе и нажмите на кнопку «код» (101 010) на панели инструментов редактора, чтобы красиво оформить и выделить синтаксис!

Ответ №1:

Сообщение довольно четкое: вы пытаетесь вставить значение в Transactions таблицу, которая имеет CustomerId ссылку на таблицу dbo.Customers (в столбце CustomerId ), которая не существует в таблице customers.

Очевидно, что существует связь с внешним ключом между Transactions и Customers , и ваш оператор INSERT нарушает эту ссылочную целостность.

Скорее всего, вы а) не синхронизировали свою Customers таблицу между двумя серверами (пока) или б) каким-то образом пропустили некоторые записи.