【问题标题】:How to copy table data from one SQL Server into another SQL server?如何将表数据从一个 SQL Server 复制到另一个 SQL Server?
【发布时间】:2018-06-08 10:53:00
【问题描述】:

如何将数据从一个 SQL Server 数据复制到另一个。我正在尝试将表数据从 server1 复制到 server2。在 server1.table1 中,如果我有 10 行并添加了另外 5 行,则表中的数据会被添加/删除,一段时间后前 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

但是我用过Identity insert。

【问题讨论】:

  • @B3S :任何建议我该怎么做,我在 server1 中的表 Data1 得到更新,一些数据也被删除。但我需要将所有数据放入我的 server2 表 Data2 中。所以我使用了EXCEPT。但问题在于 Identity 列,因为在我的 server1,table - Data1 中,很少有数据被删除,或者当新数据被添加时,它以 id -11 开头,例如。我需要将添加到我 server1 的 Data1 中的最后一个数据复制到 server2 中。

标签: sql sql-server sql-scripts


【解决方案1】:

因为消息很清楚,您还必须定义列定义以及在标识列中显式插入值,如下所示。你只需要替换最后一个insert

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

注意:这只是针对您的错误消息的解决方案,我希望查询的其余部分能够按照您的期望工作。

【讨论】:

  • 我收到错误“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'Data2' 中插入标识列的显式值。”
  • 这行在SET IDENTITY_INSERT [Server2].[database2].[dbo].[Data2] ON 之前也需要,最后请OFF
  • 是的,它奏效了。谢谢!但是现在我在服务器到服务器复制方面遇到了问题。找不到对象“Server2.database2.dbo.Data2”,因为它不存在或您没有权限。我检查了权限,一切看起来都很好。是否与语法有关,[Server2].[database2].[dbo].[Data2]
  • 您必须create linked server 才能执行此操作,因此如果您已经执行此操作,则一定是权限问题。如果仍然无法正常工作,请与完全特权用户一起尝试,然后您可以在单独的问题中询问此问题。链接服务器参考docs.microsoft.com/en-us/sql/relational-databases/…
  • 谢谢@Susang。但是我正在使用第三方软件进行 Sql 服务器数据库连接,这是 rdbDsService,因此我无法控制流量。现在我的疑问是我是否还必须创建链接服务器。 ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多