【问题标题】:How to have a trigger in one DB insert data into another DB over linked server connection如何让一个数据库中的触发器通过链接服务器连接将数据插入另一个数据库
【发布时间】:2017-08-26 12:51:16
【问题描述】:
我在 SQL Server 2012 上创建了一个链接服务器。通过它我们可以成功地执行插入和选择操作,但是在我的本地服务器表上添加触发器以在链接服务器表上插入数据时。
我收到一个错误:
没有交易处于活动状态
我们已从防火墙入站/出站启用 DTC 组件,并且 DTC 服务也已启用。我在网上搜索了很多。几乎什么都试过了。有什么我们可以尝试做的事情吗?请?
这是我们在启用触发器的本地表上执行插入时遇到的错误截图:
【问题讨论】:
标签:
sql-server
sql-server-2012
oledb
linked-server
【解决方案1】:
如果您不需要远程更新查询的事务,您可以使用 OpenQuery 来完成。您必须在 nvarchar(max) 中使用 args 构造查询,然后执行 sp_executesql。类似的东西:
declare @Query nvarchar(MAX);
SET @Query = 'select * from openquery(REMOTE_SERVER,''insert table ..' + @field + '..'')';
EXEC sp_executesql @Query;
注意 nvarchar 中的双引号。