从链接服务器插入存储过程的结果

时间:2011-07-29 14:29:34

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

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

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

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

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

EXEC [linkedserver].remoteDB.dbo.tst

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

OLE DB提供程序”SQLNCLI“用于链接服务器”linkedserver“返回消息”伙伴事务管理器已禁用其对远程/网络事务的支持。“ Msg 7391,Level 16,State 2,Line 2 无法执行该操作,因为链接服务器“linkedserver”的OLE DB提供程序“SQLNCLI”无法启动分布式事务。

一台计算机正在运行SQL Server 2005,而另一台计算机正在运行“分布式事务处理协调器”服务。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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