将结果集插入临时表时SQL Server 2005 DB2链接服务器错误



我们有一个针对SQLServer2005上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工作得很好,显示了正确的结果集,但一旦我们尝试将结果集放入临时表中,就会出现错误。

我搜索了这里和许多其他地方,并尝试了以下内容。

  1. sp_configure"远程进程传输",0
  2. 在"链接服务器属性">"服务器选项"中将"启用分布式事务的提升"设置为false。我没有看到这个选项
  3. 在链接服务器属性>RPC上,RPC输出和分发服务器的值设置为TRUE
  4. 已使用Openquery,但不能使用动态SQL或传递参数

这个表包含很多行。我们需要在DB2端执行查询,以减少基于参数的结果集。

任何帮助都会被大量占用!

您是否已启动MSDTC服务(DTC(?

在Windows 2008下:

  • 从管理工具->组件服务->计算机->我的计算机:本地DTC。右键单击"属性",转到MSDTC选项卡,然后选择"安全配置">
  • 启用"网络dtc访问"one_answers"允许出站"复选框
  • 启用"无需身份验证"复选框

如果不起作用,请尝试禁用连接池。

最新更新