Sql server 如何通过链接服务器运行远程存储过程并将结果存储在群集服务器上的临时表中

Sql server 如何通过链接服务器运行远程存储过程并将结果存储在群集服务器上的临时表中,sql-server,cluster-computing,linked-server,Sql Server,Cluster Computing,Linked Server,我需要能够运行远程存储过程并将其结果存储在临时表中,以便对数据进行进一步处理。我可以自行运行下面的exec语句并将数据返回,但是,当尝试插入临时表时,我收到以下错误消息: 链接服务器LinkedServerName的OLE DB提供程序SQLNCLI返回消息“无事务处于活动状态”。。 信息7391,16级,状态2,第8行 无法执行该操作,因为链接服务器LinkedServerName的OLE DB提供程序SQLNCLI无法开始分布式事务 我不想使用联接,因为它非常慢,所以我想我应该尝试通过在临时

我需要能够运行远程存储过程并将其结果存储在临时表中,以便对数据进行进一步处理。我可以自行运行下面的exec语句并将数据返回,但是,当尝试插入临时表时,我收到以下错误消息:

链接服务器LinkedServerName的OLE DB提供程序SQLNCLI返回消息“无事务处于活动状态”。。 信息7391,16级,状态2,第8行 无法执行该操作,因为链接服务器LinkedServerName的OLE DB提供程序SQLNCLI无法开始分布式事务

我不想使用联接,因为它非常慢,所以我想我应该尝试通过在临时表中调用远程存储过程来选择所需的数据,然后以这种方式使用它

我尝试了以下说明,但没有成功: 我认为主要的问题是我运行下面SQL的源服务器是一个集群服务器,并且我缺少DTC的一些设置。 有什么想法吗

--drop table #tmp

CREATE TABLE #tmp
(
    col1 int,
    col2 int
);

insert into #tmp (col1, col2)
exec [LinkedServerName].[RemoteDBName].dbo.remote_sproc '04/01/2011', '04/06/2011'

select * from #tmp

虽然我没有找到在集群服务器设置上使用分布式事务的方法,但我确实找到了使用OPENROWSET远程获取数据的替代方法。就性能而言,它似乎非常类似于使用链接服务器,并且在我们的生产环境中运行良好

/*
-- run the following once to configure SQL server to use OPENROWSET...

sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO

*/

-- still need a table to store the result set in to work
-- with the data after we grab it...

declare @table table
(
    col1 int,
    col2 int
);

-- use openrowset instead of a linked server

insert into @table
select *
FROM OPENROWSET('SQLNCLI', 'Server=HOSTNAME;Uid=USERNAME;Pwd=PASSWORD',
     'EXEC DBName.dbo.sprocName ''Param1'', ''Param2''')

select * from @table