觸發器實現跨服務器

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

最進在作項目時遇到了一個比較棘手的問題,有兩個數據庫分別部署在不一樣的服務器上,系統要求兩個服務器實現數據同步操做即熱備份,因而就不能不用到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訪問勾選上,容許遠程客戶端,容許遠程管理,容許入站,
容許出站,不要求身份驗證勾選上。
注意:以上步驟須要兩臺服務器都要配置。

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

相關文章
相關標籤/搜索