Как скопировать данные таблицы с одного сервера SQL на другой сервер SQL? - PullRequest
0 голосов
/ 08 июня 2018

Как я могу скопировать данные с одного SQL-сервера на другой.Я пытаюсь скопировать данные таблицы с server1 на server2.В server1.table1 данные из таблицы добавляются / удаляются для примера, если у меня есть 10 строк и добавляется еще пять строк, через некоторое время первые десять удаляются.С другой стороны, я копирую на другой сервер, server2.table2.Я использую функцию EXCEPT для копирования int data2 is server2.Мой следующий код:

Для сервера1.

CREATE TABLE database1.dbo.Data1
   (MachineId bigint IDENTITY(1,1) PRIMARY KEY,
   MachineName varchar(50) NOT NULL,
    ProgramName varchar(255) NOT NULL,
   );
GO

Для сервера2.

CREATE TABLE database2.dbo.Data2
       (MachineId bigint IDENTITY(1,1) PRIMARY KEY,
       MachineName varchar(50) NOT NULL,
        ProgramName varchar(255) NOT NULL,
       );
GO

 SET IDENTITY_INSERT [Server2].[database2].[dbo].[Data2] ON 
GO
Insert into [Server2].[database2].[dbo].[Data2] SELECT * from [Server1].[database1].[dbo].[Data1] EXCEPT SELECT * from [Server2].[database2].[dbo].[Data2]

Но я получаю сообщение об ошибке:

Явное значение для столбца идентификаторов в таблице '[Server2]. [Database2]. [Dbo]. [Data2]' можно указывать только в том случае, если используется список столбцов, а для IDENTITY_INSERT установлено значение ON

НоЯ использовал его Идентификационная вставка.

1 Ответ

0 голосов
/ 08 июня 2018

Поскольку в сообщении ясно, что вы также должны определить определение столбца, чтобы явно вставить значение в столбец идентификаторов, как показано ниже.Вам просто нужно заменить последний insert блок

INSERT INTO [Server2].[database2].[dbo].[Data2] (MachineId, MachineName, ProgramName)
SELECT * FROM [Server1].[database1].[dbo].[Data1] 
EXCEPT 
SELECT * FROM [Server2].[database2].[dbo].[Data2]

Примечание: это решение только для вашего сообщения об ошибке, и я надеюсь, что остальная часть запроса будет работать в соответствии с вашими ожиданиями.

...