2011-01-13 26 views
1

我們已經開發了從一個數據庫模式到另一個數據庫模式的大型數據遷移。我們已經基於目標數據庫將是空的想法構建它,然而幾個月前我們開始將客戶端放在新應用程序上,這意味着他們的數據被安置在新模式(目標數據庫)中。SSIS數據遷移主鍵身份衝突

現在我們處於主鍵可能從源重疊到目標數據庫的情況,我們正在努力想出一個解決方案。我能想到的唯一解決方案是檢查目標中是否存在該ID,將源中的ID更新爲比目標中最大的ID多1,然後遷移該記錄。這對於數百張表格來說似乎非常麻煩。有任何想法嗎?

+0

是否有可能只有兩組表視圖加入?在插入記錄時開始編輯PK通常不是一個好主意 - 很長一段時間你會遇到級聯數據完整性問題。 – JNK 2011-01-13 18:04:39

回答

2

對不起,我不知道SSIS的任何內容,但以下幾種方法可以解決使用SQL的問題。

當插入到目標表中時,不要插入標識。在插入行時,在映射表中捕獲新插入的標識和舊標識,請參閱MERGE + OUTPUT INTO。使用映射表來更新尚未插入的表格,用舊的標識替換舊的標識。

當然,爲了這個工作,插入到表中必須按照不會導致外鍵或違反約束的順序完成。

如果您不做所有這些工作,並且您可以在短時間內鎖定用戶,DBCC CHECK INDENT可用於「保留」身份。然後可以使用這些新身份來更新舊數據,然後使用SET IDENTITY_INSERT ON進行插入。