我在存储过程中有一个 SQL 插入查询,用于将行插入到 链接服务器 桌子。

由于存储过程是在父事务中调用的,因此此 Insert 语句尝试使用 DTC 将行插入到链接服务器中。

我想 避免 DTC 不参与其中。

有什么方法可以让插入 SQL 语句忽略事务范围(例如提示)吗?

有帮助吗?

解决方案

我的建议是,将要插入的任何内容存储到临时表中,一旦过程结束,就运行跨服务器插入。据我所知,一旦进入 SProc 执行,就无法忽略您所在的事务。

相反,如果您使用.NET 2.0 的 System.Transaction 命名空间,您可以告诉特定语句不要参与任何父作用域事务。这需要您用代码而不是存储过程编写一些逻辑,但可以工作。

这是一个 相关链接.

祝你好运,艾伦。

其他提示

尝试使用OpenQuery调用链接的服务器查询/SP,而不是对我有用的直接调用

因此,而不是插入...从 mylinkedserver.pubs.dbo.authors 选择 *

例如声明@TSQL varchar(8000),@var char(2)select @var ='ca'select @tsql ='select * from openquery(mylinkedserver,''''select * select * select * from pubs.dbo.authors state ='''''''''''''' ' + @var +'''''')'

插入 .....执行(@TSQL)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top