第一,先配置兩台電腦,具體的步驟請參見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。推薦第二種方法。