我在存储过程中有一个 SQL 插入查询,用于将行插入到链接服务器表中。
由于存储过程在父事务中被调用,因此此 Insert 语句尝试使用 DTC 将行插入链接服务器。
我想避免DTC 参与其中。
有什么方法可以让插入 SQL 语句忽略事务范围?
我在存储过程中有一个 SQL 插入查询,用于将行插入到链接服务器表中。
由于存储过程在父事务中被调用,因此此 Insert 语句尝试使用 DTC 将行插入链接服务器。
我想避免DTC 参与其中。
有什么方法可以让插入 SQL 语句忽略事务范围?
我的建议是您将要插入的任何内容存储到临时表中,并且一旦该过程结束运行跨服务器插入。据我所知,一旦您在 SProc 执行中,就无法忽略您所在的事务。
相反,如果您使用 .NET 2.0 的 System.Transaction 命名空间,您可以告诉特定语句不要参与任何父范围事务。这将要求您在代码而不是存储过程中编写一些逻辑,但会起作用。
这是一个相关链接。
祝你好运,艾伦。
尝试使用 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)