Sql-Server

對事務插入執行操作

  • October 7, 2021

出於安全目的,使用 MS SQL Server 在兩台伺服器之間複製數據。是否可以在將發布者數據庫發送的數據插入訂閱者表之前對其執行操作?

我有一個表(讓我們稱之為DeviceData),在發布者上有一個列DeviceNameDeviceData正在訂閱者數據庫上訂閱,但是我需要DeviceData有一個引用表的外鍵Device。無論如何要檢查哪些數據不在Device列中的表中DeviceName並在插入Device之前將其插入DeviceData

這是我畫的一個視覺範例: 在此處輸入圖像描述

除了 MBuschi 的好主意之外,您還可以考慮在桌子上使用INSTEAD OF INSERT觸發器的可能性。DeviceData此觸發器將首先驗證您需要的數據是否在Device表中,然後將複製的數據插入到您的DeviceData表中。(這裡是 Microsoft 的觸發器聯機叢書。)

該解決方案的一個優點是它不會在您的複制設置中出現問題(如果您需要編寫腳本並重新部署它)。雖然 Microsoft 提供了有關如何完成 MBuschi 解決方案的文件,但總的來說,我發現複製拓撲的自定義越多,從長遠來看,它就越難管理。

但是使用觸發器的一個更好的優點是它將您使用的數據同步功能與您嘗試支持的關係完整性邏輯分離。因此,如果有一天您決定從複製切換到另一種同步技術,例如 SSIS(甚至是另一種類型的複制),您就不必重新實施解決方案來處理Device表。使用觸發器可確保您的關係完整性邏輯保存在表級別,並且無論插入到DeviceData表中的內容來自何處都可以應用。

引用自:https://dba.stackexchange.com/questions/300785