2009-02-12 66 views
4

我需要創建一個SQL Server數據庫,它將通過某個複製機制從另一個數據庫接收更新。我需要編寫插入,更新和刪除觸發器,這些觸發器會在發生這種複製時執行。複製時的SQL Server觸發器

我有觸發器的經驗,但沒有複製。

我應該使用事務性還是合併複製,還是這很重要?

在執行簡單SQL插入語句時設計運行的觸發器是否也會在發生複製時運行?

+0

複製是雙向發生還是單向發生?涉及多少個SQL Server實例? – 2009-02-16 05:29:28

回答

4

嗯,這取決於。

如果您打算應用的更新是隔離表,即給定表的所有數據都來自發布服務器,那麼您可以使用事務複製。

另一方面,如果您希望將表內容(即訂單表)與兩個站點上的訂單組合在一起,那麼您應該考慮使用合併複製。

關於觸發器,有一個「不適用於複製」的配置,您可以應用它來控制其行爲。請參閱以下文章以供參考。

http://msdn.microsoft.com/en-us/library/ms152529.aspx

乾杯,約翰

4

CREATE TRIGGER syntax on MSDN

CREATE TRIGGER 
... 
[ NOT FOR REPLICATION ] 

這表明上的複製執行爲觸發器的默認行爲,並且可以通過指定NOT FOR REPLICATION被禁用。

2

很難與您所提供的信息來回答你的問題。我在你的問題中添加了一些評論,要求澄清信息。

這裏是MSDN上的文章,應該有所幫助:http://msdn.microsoft.com/en-us/library/ms152529.aspx

默認情況下,將觸發複製,除非「NOT FOR複製」期間火規定。它們與簡單插入語句的工作方式相同。

交易和合並複製是非常不同的,但觸發器對於這兩個選項的行爲相似。

0

有幾種替代方案可供選擇,而不是觸發器。

  1. 您可以修改訂閱服務器(目標)數據庫上的複製過程。
  2. 如果使用2008,您可以在訂戶上使用更改跟蹤以查找要「執行某些操作」的表,然後創建批處理以處理「基於集」的數據而不是各行。例如。每個X都運行一個SSIS包。