5

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

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

我想避免DTC 参与其中。

有什么方法可以让插入 SQL 语句忽略事务范围?

4

2 回答 2

4

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

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

这是一个相关链接

祝你好运,艾伦。

于 2008-09-16T20:32:43.583 回答
0

尝试使用 openquery 调用链接服务器查询/sp 而不是直接调用这对我有用

所以不要插入... select * from mylinkedserver.pubs.dbo.authors

例如 DECLARE @TSQL varchar(8000), @VAR char(2) SELECT @VAR = 'CA' SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''' '' + @VAR + ''''''')'

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

于 2018-03-27T10:56:06.327 回答