【问题标题】:Inserting Results Of Stored Procedure From Linked Server从链接服务器插入存储过程的结果
【发布时间】:2011-10-16 00:36:03
【问题描述】:

是否可以将远程存储过程的结果插入到临时表中?例如

CREATE TABLE #test(id INT)
INSERT INTO #test 
EXEC [linkedserver].remoteDB.dbo.tst
DROP TABLE #test

其中 tst 是一个返回 ID 的存储过程。

如果我自己运行 exec,它可以正常工作

EXEC [linkedserver].remoteDB.dbo.tst

但是当我把它作为插入的一部分时,我得到了这个错误

链接服务器“linkedserver”的 OLE DB 提供程序“SQLNCLI”返回消息“合作伙伴事务管理器已禁用其对远程/网络事务的支持。”。 消息 7391,第 16 层,状态 2,第 2 行 无法执行该操作,因为链接服务器“linkedserver”的 OLE DB 提供程序“SQLNCLI”无法开始分布式事务。"

一台机器运行 SQL Server 2005,另一台机器运行 2008,两者都运行“分布式事务协调器”服务。

【问题讨论】:

    标签: sql-server sql-server-2008 linked-server


    【解决方案1】:

    在我看来,对远程事务的支持尚未正确启用。

    您是否尝试过按照此处的说明进行操作:

    【讨论】:

      【解决方案2】:

      我认为原因是当我们单独调用 EXEC 时,它不会在事务中调用,所以没问题。当我们调用 INSERT EXEC 时,它是在一个 txn 中调用的,因此远程服务器必须启用网络 txn 支持。但是我们可以避免这样做:

      https://dba.stackexchange.com/questions/46541/how-to-insert-in-table-from-remote-stored-procedure-without-creating-a-distribut

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多