我们在 SQL Server 2005 上有一个针对 DB2 的链接服务器。当我们尝试将来自链接服务器的简单查询结果集放入临时表时,返回此错误。
链接服务器“SOMEDSN”的 OLE DB 提供程序“MSDASQL”返回消息“[IBM][CLI Driver] SQL0998N 事务或启发式处理期间发生错误。原因代码 =“16”。子代码 =“2-8004D026”。SQLSTATE=58005“ . 消息 7391,级别 16,状态 2,第 21 行 由于链接服务器“SOMEDSN”的 OLE DB 提供程序“MSDASQL”无法开始分布式事务,因此无法执行操作。
DECLARE @FilterCode varchar(20);
Set @FilterCode = '11122';
Create Table #TmpTable (
Id Int
)
Insert Into #TmpTable
EXEC ('Select A.Id From SCM1.DB2TBL1 A Where A.FilterCode = ?', @FilterCode) At SOMEDSN;
Exec 在显示正确的结果集的情况下工作得很好,但是一旦我们尝试将结果集放入临时表中,就会出现错误。
我在这里和许多其他地方搜索并尝试了以下内容。
- sp_configure '远程进程传输', 0
- 在 Linked Server Properties > Server Options 上将“Enable Promotion of Distributed Transactions”设置为 false。我没有看到这个选项。
- 在链接服务器属性 > RPC 上,RPC 输出和分配器设置为值 TRUE
- 使用了 Openquery,但它不能使用动态 SQL 或传递参数。
该表包含很多行。我们需要在 DB2 端执行查询,根据参数减少结果集。
任何帮助都将被大大占用!