复制表时覆盖IDENTITY约束

时间:2017-02-07 19:38:57

标签: sql-server

我有两个数据库:A和B.

我有一个.dtsx工作使用"传输SQL Server对象任务编辑器"将表从A复制到B.这不是脚本;看起来像附图。

其中一个表的IDENTITY列定义如下:SOMEID INT IDENTITY(1,1) NOT NULL

它出现(但我还没有确认),当表从A复制到B时,SomeID列被重写,因此对于同一记录,A和B之间的SOMEID值不匹配。 / p>

复制开始时,B上的表不存在。

这有意义吗?

如何在复制表时强制它们匹配? (我需要在我正在使用的GUI的上下文中回答,而不是脚本)。

请原谅我的描述,因为我不是Windows开发人员,所以我很难谷歌找到答案,因为我不知道正确的术语。

enter image description here

3 个答案:

答案 0 :(得分:1)

OleDBDestination中有一个复选框(出于性能原因),将标识插入设置为ON。只需检查它,id列将被写入目的地

答案 1 :(得分:0)

您需要使用此SQL设置身份插入:

SET IDENTITY_INSERT ON

https://msdn.microsoft.com/en-us/library/ms188059.aspx

答案 2 :(得分:0)

我一直在使用类似下面的内容:

set identity_insert [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] on

INSERT INTO [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] ([key], [disExtID])
SELECT [Copy of key],[Copy of disExtID] 
FROM [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID tmp]

set identity_insert [USI_MD_TEMP].[dbo].[CS-DISCOUNT EXTID] off

此处[key]不是主键。