2011-04-04 61 views
1

這是我的問題:SQL Server中4列的單向同步

我有一箇舊的數據庫,沒有任何限制。有一些表格從舊數據庫複製到新數據庫。這個副本很簡單,我每天晚上在Job上運行。

在我的新數據庫(很好的約束)我做了所有這些鬆散的表與主表的約束。所有這些表都有一個由3ID和一個字符串組成的密鑰。

我的主表將把這些3ID和一個字符串轉換爲1個ID,所以這個表將有5列。

在寬鬆的表中,一些記錄可以是雙重的,所以要在主表中插入ID,我會採用3個ID和一個字符串,並將它們插入我的主表中。

舊數據庫中的表每日更新。該副本每天運行,並且從主表我想與複製的表進行一對多的關係。

這給了我這個問題:

我該如何更新主表,什麼也不做與已經插入鑰匙,並添加新的鑰匙?如果在舊數據庫中刪除舊密鑰,請勿刪除舊密鑰。

我正在考慮對舊數據庫中的所有鍵作出獨特的視圖,但是如何將其更新到主表?這需要在其他表的每日副本之前運行(或者在約束條件下它會失敗)

另一個想法是在我的網站中運行Linq-to-SQL主表的這一更新,看起來很乾淨。

因此,在短期:

  • 舊的數據庫是SQL Server 2000中
  • 新的數據庫是SQL Server 2008的

  • 舊的數據庫沒有限制,一些表格的副本每天發生。

  • 應該有一個主表,將3ID和1string鍵轉換爲1ID鍵,並對其他表進行約束。

  • 主表應在複印作業之前更新,否則約束將失敗。主表將是一張表的幾列不同。這個截然不同的地方將在舊數據庫的視圖中。

  • 只有新行可以在主數據庫中添加

沒有人有一些想法,一些指導?

形象化DB:

這些鬆散的表是關於公司的詳細信息。 1個表有地址1個表有聯繫人,另一個表具有我們系統的用戶名和登錄名(對於1個公司,可能多於1個) 公司由3ID和1字符串標識。主表將列出這些唯一的ID和字符串,以便它們可以被轉換爲1 ID。這1個ID然後用於我的數據庫的其餘部分。然後從主表格到所有那些寬鬆的表格,一對多的關係將被製成。我希望這將清除它一點:)

+0

我你的某些術語有點失落。 「鬆散」桌子是什麼意思?你能舉一個功能性的例子嗎?另外,翻譯多部分ID的功能原因是什麼?你可以在MSSQL列上有一個3列的主鍵,是否有一個特定的原因讓你不想使用該功能?任何人,一個例子都會很有幫助。可能只是我,但我很難想象您的解決方案。 – 2011-04-04 14:13:52

+0

與一個鬆散的表我的意思是:一個表沒有PK,沒有約束,什麼都沒有。只是一個數據的負載。我想將密鑰翻譯爲1 ID的原因是:舊的數據庫正在收斂。很快這將是一個新的系統,可能是一種新的PK,所以這個主表保護我不需要改變一切。路上的例子。 – Stefanvds 2011-04-04 14:16:53

+0

如何在複製作業後提取密鑰並將其插入主表中?意思是使用INSERT INTO(c1,c2,c3)SELECT ... FROM(http://www.devguru.com/technologies/t-sql/7124.asp) – BitKFu 2011-04-04 14:40:55

回答