2010-06-13 44 views
3

我的鏈接服務器設置正確,我可以執行下面的查詢。如何使用鏈接服務器withint Transaction插入到遠程表中?

INSERT INTO [REMOTESERVER] [表] SELECT * FROM [的LocalServer] [表]

然而,當我做事務中同樣的事情

BEGIN TRAN INSERT INTO [RemoteServer]。[Table] SELECT * FROM [LocalServer]。[Table] COMMIT TRAN

我得到這樣

OLE DB提供程序 「SQLNCLI」 的鏈接服務器 「66.70.123.202」 錯誤返回 消息 「無事務處於活動狀態。」 消息7391,級別16,狀態2,第3行 操作無法進行 因爲OLE DB提供程序「SQLNCLI」爲 鏈接服務器「66.70.123.202」是 無法啓動分佈式 交易。

+0

請參閱:http://groups.google.com/group/microsoft.public.sqlserver.server/msg/127255ab5a3a1fe0 – 2010-06-13 20:49:24

+0

據他們說,我應該能夠PING兩個服務器彼此......但如何我可以那樣做嗎?他們在不同的領域。 – Zeus 2010-06-13 21:35:41

+0

所以最後我沒有在交易中做我的過程。我正在嘗試和catch塊中恢復我的數據。 – Zeus 2010-06-18 20:17:46

回答

2

檢查MS DTC服務是否在兩臺服務器上運行,並且配置正確以允許分發查詢。

+0

是的MS DTC運行良好。我能夠查詢並將數據插入遠程服務器而無需開始事務。我設置了「不需要驗證」,允許來自MS DTC的所有輸入和輸出流量。 – Zeus 2010-06-13 21:04:57

+0

您是否嘗試過BEGIN DISTRIBUTED TRAN而不是BEGIN TRAN? – 2010-06-14 07:44:36

+0

您的防火牆是否配置爲允許MS DTC? – 2010-06-14 08:52:28