我想通过链接服务器更新行。我在本地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