如何将表数据从一个SQL Server复制到另一个SQL服务器?

时间:2018-06-08 10:53:00

标签: sql sql-server sql-scripts

如何将数据从一个SQL Server数据复制到另一个SQL Server数据中。我试图将表数据从server1复制到server2。在server1.table1中,如果我有10行并且还有5行被添加,那么表中的数据会被添加/删除一段时间,之后前十个行被删除。另一方面,我正在复制到另一台服务器server2.table2。我使用 EXCEPT 函数来复制int data2是server2。我的以下代码是。

对于Server1。

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

对于server2。

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]

但是我收到了一个错误:

  

表中标识列的显式值   ' [服务器2] [DATABASE2] [DBO] [数据2]&#39。;只能在a时指定   使用列列表并且IDENTITY_INSERT为ON

但我已经使用了Identity insert。

1 个答案:

答案 0 :(得分:4)

由于消息很清楚,您还必须定义列定义,以便明确地在标识列中插入值,如下所示。您只需要替换最后insert

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

注意:这只是您的错误消息的解决方案,我希望其余的查询将按照您的期望运行。