关于sql:如何防止插入查询注册到分布式事务中?

关于sql:如何防止插入查询注册到分布式事务中?

How to prevent an Insert query from enrolling into a Distributed Transaction?

我在存储的proc中有一个SQL插入查询,用于将行插入链接的服务器表中。

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

我想避免DTC参与其中。

有什么方法可以使Insert 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 * FROM pubs.dbo.authors WHERE state ='''''@VAR''''''')'

插入.....
EXEC(@TSQL)


推荐阅读