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

时间:2013-02-26 00:01:08

标签: sql sql-server sql-server-2005 db2 linked-server

我们在SQL Server 2005上有一个针对DB2的链接服务器。 当我们尝试将链接服务器上的简单查询结果集放入临时表时返回此错误。

链接服务器“SOMEDSN”的OLE DB提供程序“MSDASQL”返回消息“[IBM] [CLI驱动程序] SQL0998N在事务或启发式处理期间发生错误。原因代码=”16“.Subsode =”2-8004D026“.SQLSTATE = 58005 ”。 Msg 7391,Level 16,State 2,Line 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'remote proc trans',0
  2. 关于链接服务器属性>服务器选项将“启用分布式事务的促销”设置为false。我没有看到这个选项。
  3. 关于链接服务器属性> RPC,RPC out和distributor设置为TRUE值
  4. 使用Openquery,但它不能使用动态SQL或传递参数。
  5. 该表包含很多行。我们需要在DB2端执行查询以根据参数减少结果集。

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

1 个答案:

答案 0 :(得分:0)

您是否启动了MSDTC服务(DTC)?

在Windows 2008下:

  • 来自管理工具 - >组件服务 - >计算机 - >我的 电脑:本地DTC。右键单击“属性”,转到“MSDTC”选项卡 选择“安全配置”。
  • 启用“网络直播访问”和“允许出站”复选框。
  • 启用“无需身份验证”
  • 复选框

如果不起作用,请尝试disabling connection pooling