觸發器實現跨服務器


原文:http://blog.sina.com.cn/s/blog_59c41d0d0100esja.html

最進在做項目時遇到了一個比較棘手的問題,有兩個數據庫分別部署在不同的服務器上,系統要求兩個服務器實現數據同步操作即熱備份,於是就不能不用到SQL觸發器這一武器了,當初也考慮了幾種解決方案:比如程序中同時操作兩個庫或寫一個外掛程序執行數據庫定時任務,但這些方案需要頻繁的連接數據庫,特別是有張實時數據的表,每天都會產生海量的數據,程序中頻繁定時的查詢操作勢必嚴重影響系統運行效率,都沒有觸發器批處理語句來的更直接些,所以最終決定使用觸發器實現。

對觸發器操作我們一般在同一庫中表用的表頻繁,不同的跨數據庫操作就比較少,現在要實現跨服務器執行觸發器操作,簡直不感想象,仔細研究了一下,原來觸發器跨服務器是可以的。

首先:在SQL中執行以下存儲過程語句:
exec sp_addlinkedserver 'RemoteServer ', ' ', 'SQLOLEDB ', '192.168.18.23' ---創建服務器連接
exec sp_addlinkedsrvlogin 'RemoteServer ', 'false ',null, 'sa', '123456789' --創建登陸
sp_dropserver 'RemoteServer ','droplogins'--刪除服務器連接和登陸
說明:執行系統存儲過程 sp_addlinkedserver添加遠程服務器,參數RemoteServer 是為遠程服務器取的引用名,可隨便寫;'192.168.18.23' 為你要操作的遠程服務器地址,執行系統存儲過程 sp_addlinkedsrvlogin 添加遠程服務器登錄身份驗證,調用sp_dropserver可移除遠程服務器注冊信息。參數'RemoteServer 和'droplogins'也可只寫一個。

其次:做好上一步准備之后還需要將服務中遠程分布式服務啟動,以實現SQL跨服務器操作,這是微軟在實現遠程服務器所必需的。右鍵點擊“我的電腦”--“管理”--“服務和應用程序”--“服務”---啟動“Distributed Transaction Coordinator”服務,啟動分布式服務后還要打開遠程服務器以及本地服務器135端口,因為遠程分布式服務需要該端口通訊。
1:打開“控制面板”--“管理工具”--“組件服務”
2:在“計算機”下右擊“我的電腦”--“屬性”--選擇“MSDTC”選項卡
3:點擊“安全性配置”按鈕,
4:網絡DTC訪問勾選上,允許遠程客戶端,允許遠程管理,允許入站,
允許出站,不要求身份驗證勾選上。
注意:以上步驟需要兩台服務器都要配置。

到此位置配置准備工作就可以完成了,下面就可以寫一個觸發器去執行操作遠程服務器上的表了。這樣本地服務器上的每一個數據操作增刪改都會及時同步到遠程服務器數據庫中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM