觸發器 實現兩台服務器的數據同步


第一,先配置兩台電腦,具體的步驟請參見http://support.microsoft.com/kb/839279/en-us 

 

第二,創建連接服務器,代碼如下: 

exec   sp_addlinkedserver  'srv2','','SQLOLEDB','192.168.0.14' 

exec   sp_addlinkedsrvlogin   'srv2','false',null,'sa','sa123456' 

 說明:這兩個存儲過程是系統定義的,直接用就行。參數解釋,'srv2':鏈接服務器的別名,通過這個別名你就可以在后面引用到鏈接服務器。中間有一個空字符串,不知道是啥意思,不用管它。'SQLOLEDB':數據提供方式,微軟的一種機制,沒必要管它,直接下上去就行了。'192.168.0.14' :連接服務器的IP地址。'sa':登錄鏈接服務器的用戶名。'sa123456'

, 登錄連接服務器的密碼。

第三,創建觸發器: 

create   trigger   t_test   on   orderText  

for  delete  

as

set    xact_abort   on 

begin  distributed   tran

    delete   from    srv2.CsFoods.dbo.FoodType1

    where   TypeId  in(select   id   from   deleted) 

    commit tran

第四,測試。

這里,我們刪除一條數據

delete from orderText where id=1

這條數據一被刪除,馬上會觸發srv2服務器上的CsFoods數據庫中的FoodType1數據表中的TypeId為1的數據被刪除。

 

 

備注:昨天我們經理讓我做一個觸發器,能使兩台服務器上的的數據實現同步刪除。當時我就在網上瘋狂地Baidu和Google,但是發現,很多文章都差不多,我照着他們說的做了,但還是不行,一直抱錯。我仔細看了看,代碼應該沒有問題,問題肯定在配置上,也就是我這邊的兩台電腦的配置不正確。仔細想想,這些配置都是我根據網上那些所謂高手的文章,一點一點配的呀。后來,我發現了一片英文的文章,我照着它上面說的配置方法,直接就搞定了。后來想了想,網上很多配置的方法不科學,配置的項太多了。至於具體的配置,開篇我已給出了一個鏈接。

 

如果想在同一台服務器上訪問另一個數據庫,這個更簡單,方法一:按照上面的SQL代碼添加鏈接服務器,但不用配置那些東西了,直接可以訪問到。

方法二:很簡單很簡單,直接用數據庫名就能訪問到。比如 select *  from  Northwind.dbo.orders。推薦第二種方法。  

 


免責聲明!

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



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