2010-04-27 37 views
1

我有兩個SQL Server 2008企業數據庫(在兩臺機器上),其中一個數據庫是master數據庫,另一個數據庫是slave數據庫。如何編寫T-SQL來比較和複製數據?

我想將源數據庫中的表的更新傳輸到目標數據庫中的表(兩個表具有相同的架構,它們都使用單個列作爲唯一主鍵)。傳輸規則(總之,規則是保持目標數據庫相同,因爲源數據庫的更新源數據庫),

  1. 如果在源數據庫中的新行,但不是在目標數據庫,將該行插入到目標數據庫中;
  2. 如果源數據庫中不存在但存在於目標數據庫中的行,請刪除目標數據庫中的行;
  3. 如果在源數據庫中某行的內容(即主鍵列以外的列)發生更改,請將新內容更新到目標數據庫。

由於事先 喬治

+1

就我個人而言,我會節省您的時間和精力,併購買RedGate SQL Compare - http://www.red-gate.com/products/SQL_Compare/如果您將時間放在任何價值上,它都是非常值得的! – 2010-04-27 11:02:00

+0

我需要一些免費的腳本。 :-) – George2 2010-04-27 11:04:46

+1

幾天前你不問這個問題嗎? :http://stackoverflow.com/questions/2718608/sql-server-database-synchronization-issues/2718823#2718823 – 2010-04-27 11:07:07

回答

1

您可以使用從Visual Studio(VSTS)嚮導SQL服務器項目[看看這個tutorial瞭解更多]中,你可以選擇你的主數據庫,然後在嚮導中選擇您的其他配置。

最後它會從您的主數據庫中獲取您的數據/架構,然後您可以將其與任何其他具有數據或架構比較的其他SQL Server數據庫進行比較。

它還會生成更新腳本,並可以直接將所有更改應用於從屬數據庫。

您需要visual studio團隊系統數據庫版本支持。

+0

我覺得它是一個手動過程。任何自動同步數據的方法? – George2 2010-04-27 11:41:18

+0

我在新建的SQL Server項目中發現,我只能創建SQL Server 2000和SQL Server 2005項目,爲什麼我無法創建SQL Server 2008項目? – George2 2010-04-27 11:43:13

+1

@ George2 - 您需要安裝此更新才能在VS 2008中獲得sql server 2008項目類型[在VS2010中它已經可用]。 http://www.microsoft.com/downloads/details.aspx?FamilyID=BB3AD767-5F69-4DB9-B1C9-8F55759846ED&displaylang=en#filelist – Krunal 2010-04-27 11:48:08