sql-server - 如何让一个数据库中的触发器通过链接服务器连接将数据插入到另一个数据库中

标签 sql-server sql-server-2012 oledb linked-server

我在 SQL Server 2012 上创建了一个链接服务器。通过它,我们可以成功执行插入和选择操作,但是当需要在本地服务器表上添加触发器以在链接服务器表上插入数据时。

我收到错误:

No Transaction is active

我们已启用防火墙入站/出站的 DTC 组件,并且 DTC 服务也已启用。我在网上搜索了很多。几乎尝试了一切。有什么事情我们可以尝试并把它做好吗?请?

这是我们在启用触发器的本地表上执行插入时遇到的错误的屏幕截图:

ERROR SNAP

最佳答案

如果您不需要远程更新查询上的事务,您可以使用 OpenQuery 来完成。您必须使用 nvarchar(max) 中的参数构造查询,然后执行 sp_executesql。像这样的东西:

declare @Query nvarchar(MAX);
SET @Query = 'select * from openquery(REMOTE_SERVER,''insert table ..' + @field + '..'')';
EXEC sp_executesql @Query;

注意 nvarchar 中的双引号。

关于sql-server - 如何让一个数据库中的触发器通过链接服务器连接将数据插入到另一个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45895568/

相关文章:

c# - MS Access 的 INSERT INTO 语句中的语法错误

c# - 通过 SSL 连接到 SQL Server 并获取服务器证书

sql - 使用 sysobjects 表中的表名创建 Sql Server View

sql - 在 View 上创建全文索引时出现问题

SQL 满足以下要求

vb.net - OleDbCommandBuilder 生成的 INSERT INTO 语句中存在语法错误

sql-server - 使用查询中的子字符串函数将数据从 Excel 导入 SQL 服务器

sql - 必须有更好的方法来处理本地化数据库字段

sql - 更新 ID 匹配的数据和用例以选择哪些数据

SQL Server : Compare nullable column in where clause