如何防止插入查询注册到分布式事务中?
-
09-06-2019 - |
题
我在存储过程中有一个 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)
不隶属于 StackOverflow