我想通過鏈接服務器更新行。我在本地SQL-Server上用this指令創建了鏈接服務器。來自鏈接服務器的SQL-Server觸發器更新問題
我可以使用下面的代碼更新查詢分析器上的行。沒有錯誤返回並且行更新鏈接服務器上成功。
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = 'A', B = 'B'
WHERE id = 1
但是,當我創建了一個更新觸發器,以我的表像下面我本地SQL Server上,
ALTER TRIGGER [TriggerLocalServerTable]
ON dbo.[LocalServerTable]
FOR UPDATE
AS
DECLARE @A varchar(4)
DECLARE @B varchar(4)
DECLARE @id int
BEGIN
SELECT
@A = A,
@B = B,
@id = id
FROM inserted
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = @A, B = @B
WHERE id = @id
END
當觸發執行,返回此錯誤象下面,
OLE DB鏈接的提供商「SQLNCLI」 服務器「LinkedServer」返回的消息 「合作伙伴交易管理器已禁止 支持 遠程/網絡事務。「。消息 7391,級別16,狀態2,TriggerLocalServerTable,45號線 因爲OLE DB提供程序「SQLNCLI」爲 鏈接服務器「LinkedServer」無法 啓動分佈式事務操作無法進行 程序 。
我申請this指令本地服務器解決問題,任何更改。
更多詳情;
- 如果定義我的鏈接服務器與其 遠程IP地址。
- 我的本地服務器和鏈接服務器 不在同一個域中。
- 鏈接服務器的安全設置是 「被 國產使用此安全上下文」
- 本地服務器版本在Windows Server 2003的SP2,SQL-Server版本是2005 非標準。
- 鏈接的服務器操作系統版本是2008和 SQL-Server版本2008(64位)。
- 我無法使用RDP訪問遠程服務器
。我只能從sql 端口(1433)訪問。 - 我將「安全選項」中的鏈接服務器「RPC」和「RPC 輸出」設置爲「真」。
你有什麼想法解決這個問題。 現在非常感謝你。
編輯: 我解決了這個問題。首先,我在[TriggerLocalServerTable]上創建了更新觸發器。這個觸發器的工作是將新的更新字段插入到本地表中。這張新表格用於更新臨時數據。然後,我創建了一個每小時都在LinkedServer上運行更新文件的作業。此作業從臨時表中獲取數據,然後更新到LinkedServer表的字段。
問候,Kerberos。
是的,它的本地服務器和「分散安裝致敬的交易協調員「servis雕像是」開始「的。但如果你問關於鏈接服務器,我不知道。因爲我不能訪問這個服務器。 – Kerberos 2010-11-13 12:51:22