2008-10-17 68 views
1

我知道這應該是db 101,但是它只是不如我可以清楚。我正在使用SQL2005快遞,我想將數據從數據庫A複製到數據庫B. DatabaseB已經包含現有的數據 - 它甚至可能包含已更改或不存在PK的數據 - 例如:SQL Server 2005-當主鍵發生變化時在兩個數據庫之間移動數據的最佳方式

數據庫 PK1 =桃子 PK2 =蘋果

數據庫B PK1 =桃子 PK2 =桔子 pk3 =蘋果

現在A & B都有與pk相關的相關表。

從歷史上看,我會編寫一個應用程序,從A中選擇數據並通過插入/更新過程(使用.NET)將它複製到B中,但obv非常繁瑣,有些優點是我可以有一個下拉菜單允許您選擇複製 - 和B複製到如果存在的話,或者說增加新的 - 例如:

(下拉菜單 - 選擇源) 桃子 蘋果

(下拉菜單 - 選擇目標) -new- 桃子 桔子 蘋果

我打算使用SSIS,但目標數據庫只有SQL Express,所以這是不可用的,也沒有時間去了解它(以前使用dts的時間很多,但不是這個新的工具)。在SQL2000中,我只是使用DTS,但現在更復雜的模式我甚至不知道我會相信這一點。

任何建議,或者我應該繼續寫我的自定義應用程序將數據從A遷移到B?

進出口期待着大家的建議 - 我很想繼續往下,我覺得是這樣做:-)

回答

1

如果服務器在同一個網絡上添加鏈接服務器(看最好的辦法的路徑在線交易sql書籍)。然後你可以在兩臺服務器上運行查詢。

SQL Server 2005 Express很糟糕,它不包含SSIS。但是,您也可以使用BCP(批量複製,也可以在在線的Transact SQL書籍中查看)將數據複製到目標服務器上的不同表格。它可能在你的路徑,所以從DOS你可以鍵入bcp /?獲取選項列表。一旦數據在您的目標服務器上的表中,您就可以針對它運行查詢。

您確實需要創建鍵之間的映射。我不知道如何從桃子/蘋果中得到桃子/橘子/蘋果。毫無疑問,有一些業務邏輯。一旦鏈接服務器或在一臺服務器上獲取數據。您可以使用業務邏輯將舊主鍵映射到新鍵。或者您手動填寫的映射表(oldkey,newkey)或(oldkey1,oldkey2,newkey1,newkey2,newkey3)。

+0

沒想到使用BCP,我會在那個loook可能是有趣的道路。蘋果等等只是表明它可能已經存在於目標數據庫中,在不同的pk下。不知道爲什麼,但對我來說真的很難:-) – schmoopy 2008-10-17 17:52:02

+0

無論哪種方式,你需要通過業務規則或映射表從pka映射到pkb。 – Cervo 2008-10-17 18:20:02

0

不真正熟悉SQL Server Express的限制,但可以備份嗎?然後導入爲另一個數據庫?

相關問題