2013-07-03 45 views
0

我想從我的本地mssql 2005服務器將數據插入觸發器到遠程mssql 2005服務器。插入到遠程服務器MSSQL 2005

我有一張表Syr;我創建了一個觸發器(AFTER INSERT)來檢測是否添加了一些東西。 我想將該數據複製到另一個遠程服務器的同一個表。 我的問題是,如果我只是在普通查詢中執行插入語句(這非常簡單,只是爲了測試而使用靜態數據),它會成功;我甚至可以從遠程服務器中選擇。 但是當我把這個簡單的插入到扳機區塊:「無法啓動分佈式事務」

CREATE TRIGGER T_SyrInserted 
ON [DBProba].[dbo].[Syr] 
AFTER INSERT 
AS BEGIN 

INSERT INTO [RemoteSrv].[DBProba].[dbo].[Syr] (SyrId, SyrNm) VALUES (15000734, 'valami') 
END 

解決:

  • 設置DTC認證爲無
  • 我碰到一個錯誤「因爲XACT_ABORT爲OFF,所以無法執行嵌套事務」,因此在插入語句之前添加了一行:SET XACT_ABORT ON;我不知道什麼是「嵌套」我曾與一個簡單的插入而精做...
+2

DTC兩端開啓?... –

+0

嘗試在「正常查詢」中執行exec'BEGIN DISTRIBUTED TRANSACTION'。在觸發器上下文中執行的查詢會自動包裝在事務中。如果觸發代碼中有任何分佈式查詢,則該事務將自動提升爲分佈式事務。 –

+0

分佈式事務控制正在兩臺服務器上運行。防火牆已關閉。允許DTC訪問,允許入站,允許。 – Zui

回答

0
你的情況

update語句打開一個本地事務,並插入語句也將打開,這將是與遠程服務器的事務分佈式事務的情況。

爲了使這項工作,你必須啓動DTC http://support.microsoft.com/kb/817064

要了解更多關於分佈式事務,你可以檢查鏈接http://msdn.microsoft.com/en-us/library/windows/desktop/ms681205%28v=vs.85%29.aspx

+0

謝謝你們。我將身份驗證設置爲none(DTC屬性),並在插入之前在SET XACT_ABORT ON觸發器中添加了一行,並且看起來正在工作。 – Zui