正如我所看到的,SQL 2008不再以非常簡單的方法通過Internet提供複製。不僅如此,我可以看到合併複製方法在數據庫上安裝了太多觸發器和視圖,並添加了名爲「rowguid」的附加字段。通過觸發器進行SQL自定義複製
今天我們有更多的磁盤空間可用,然後是處理器的速度。所以我決定爲SQL Server編寫自己的通用複製。它需要以下步驟。
這有一個前提,我所有的表都有一個單一的主鍵(無論是BIGINT或nvarchar(50))
Setup Table : SyncItems
SyncItemID (Primary,AutoNumber)
SyncTable (nvarchar(50) name of table)
RowID (bigint)
RowIDStr (nvarchar(50))
RowOp (nvarchar(10), 'Inserted','Updated','Deleted')
RowTime (datetime, current_timestamp)
,我還可以設置三個觸發器上的每個數據庫的表,它可以插入一個用於指定DML的SyncItems中的項目。
現在,所有複製器只能首先掃描SyncItems並加載修改後的表格行並在目標位置進行更新。
問:
我已經建立的數據庫恢復模型滿。有沒有其他方法可以讀取DML歷史記錄並進行復制,而不是設置觸發器?
事務日誌的歷史記錄保存了多久?在基於觸發器的自定義複製中,我可以刪除較舊的記錄,因此我們可以相應地截斷表格。
如果我可以讀取事務日誌並手動複製,那將非常棒,因爲我們甚至可以複製DDL事務。我嘗試使用搜索各種存儲過程,並做了足夠的谷歌搜索,但沒有發現任何提示。
有沒有讀取複製發佈者日誌的選項?爲了不使用SQL Server自己的複製,我們可以編寫我們自己的可以通過互聯網複製數據的複製代理程序?
(我曾經嘗試網絡同步,以及各種選項,但我們的數據是巨大的,它不是實際使用的網絡同步)
從我在這裏閱讀的內容來看,你似乎假設一次只有一行將被觸發處理。確保您的觸發器可以處理多行插入,更新和刪除。 – HLGEM 2009-07-28 21:37:52
是的,他們可以處理多行。 – 2009-07-28 23:37:47