2017-02-07 50 views
0

我有兩個數據庫:A和B.覆蓋相同的約束,當表被複制

我有使用「傳輸SQL Server對象任務編輯器」從A表複製到B的.dtsx程序工作這不是劇本;它看起來像附加的圖像。

其中一個表具有如下定義的IDENTITY列:SOMEID INT IDENTITY(1,1) NOT NULL

看來(但我還沒有確認),當從A複製到B時,SOMEID列被重寫,所以SOMEID值在A和B之間對於同一記錄不匹配。

副本開始時,表格不存在於B上。

這有道理嗎?

如何強制它們在表格被複制時匹配? (我需要在我使用的GUI環境中回答,而不是腳本)。

請原諒我的描述,因爲我不是Windows開發人員,所以我很難谷歌的答案,因爲我不知道正確的術語。

enter image description here

+0

如果第二個表從第一個表中獲取數據,則該表不應具有標識列。 – HLGEM

+0

您必須顯示程序包在生成和填充B上的表時使用的腳本。如果只是在不使用SET IDENTITY_INSERT ON的情況下執行插入,那麼不,不能保證您將獲得相同的IDENTITY任何給定行的值。 –

+0

我想你可以在目標表中使用SET IDENTITY_INSERT ON。 https://msdn.microsoft.com/en-us/library/ms188059.aspx – McNets

回答

1

有在OleDBDestination一個複選框(由性能原因者優先)設置標識插入ON 。只需點擊它和id列將我一直在使用類似下面的寫入目的地

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 

這裏[關鍵]是不是主鍵。