2013-05-01 214 views
0

我們有兩臺服務器在本地(windows server 2003)和一臺在godaddy(windows server 2008)中,在兩臺服務器中安裝了sql server 2005,並在兩臺服務器中創建了鏈接服務器。sql server 2005中的鏈接服務器

我們已經啓用了在godaddy的服務器觸發一個sampletbl表,每當我們試圖插入來自GoDaddy的數據庫本地數據庫使用啓用了扳機,那麼我們所面臨的以下錯誤的數據。

鏈接服務器「211_TEST」的OLE DB提供程序「SQLNCLI」返回消息「沒有事務處於活動狀態」。
Msg 7391,Level 16,State 2,Procedure 36to211,Line 8
由於鏈接服務器「211_TEST」的OLE DB提供程序「SQLNCLI」無法啓動分佈式事務,因此無法執行該操作。

觸發代碼如下:

set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
GO 
ALTER trigger [dbo].[36to211] on [dbo].[SampleTbl] 
FOR INSERT 
as 
Declare @a int; 
Declare @b int; 
Declare @c int; 
select @a=TETS_DET,@b=TEST_DET2,@c=TEST_DET3 from SampleTbl 
insert into [211_TEST].[MAPBULLION].[dbo].[TEST1] 
(TETS_DET,TEST_DET2,TEST_DET3) 
values 
(@a,@b,@c) 

這裏[211_TEST]是鏈接服務器名稱,MAPBULLION是在本地服務器上的數據庫和TEST1是在本地服務器的表名。

檢查所有的MSDTC設置,他們是按慾望

請提供解決方案。

這是我們正試圖執行插入來自GoDaddy的服務器到本地服務器上的數據查詢:

insert into sampletbl (TETS_DET, TEST_DET2, TEST_DET3) 
VALUES ('5', '6', '7') 
+0

這將是非常不可靠的(正如你可以看到的)。您應該使用觸發器插入GoDaddy服務器上的日誌表,然後以rgaulr批處理(例如每五分鐘)加載一次。或者,您可以使用日誌傳送或複製,這是保持數據庫同步的「本地」方式。對於您的特定問題,表中發生的插入可能位於事務中,因此它試圖在事務中登記鏈接的服務器,並且它不能。 – 2013-05-01 05:45:26

回答