链接服务器的OLe数据库提供程序“SQLNCLI”无法启动分布式事务

时间:2013-09-06 12:20:57

标签: sql sql-server

我试图在SQL Server 2008中调用存储过程并将获取的数据存储到本地临时表中。

当我尝试运行它时,收到以下错误:

  

由于OLe DB提供程序“SQLNCLI”,无法完成操作   链接服务器无法启动分布式事务

我的代码如下:

create table #temp(
    col1 as int,
    col2 as varchar(50)
)

insert into #temp
exec [192.168.0.9].[db1].[dbo].[tablename] @usr_id=3

2 个答案:

答案 0 :(得分:8)

您可以通过设置服务器选项&#proc; remote proc transaction promotion'来阻止对链接服务器使用分布式事务。到' false':

EXEC sp_serveroption 'servername', 'remote proc transaction promotion', 'false'

Here's the same issue

答案 1 :(得分:3)

链接服务器无法启动分布式事务错误是由于MSDTC(MS分布式事务协调器)中的问题。问题可能来自许多问题。包括MSDTC未运行,被防火墙阻止等。

如果您需要交易,您必须自己调试问题,因为它是环境问题。如果你可以重写以避免交易,你的生活会更简单。只是为了确保它是MSDTC问题,编写一个不依赖于MSDTC的简单查询。 e.g。

create table #temp( col1 as int, col2 as varchar(50) )

insert into #temp 
select col1, col2 from [192.168.0.9].[db1].[dbo].[tablename] where usr_id=3

如果这样可行,那肯定是MSDTC(也许是一个可以避免的问题)

- 添加了这个。花了一点时间寻找MSDTC调试。 http://www.sqlwebpedia.com/content/msdtc-troubleshooting非常好,因为http://www.mssqltips.com/sqlservertip/2083/troubleshooting-sql-server-distributed-transactions-part-1-of-2/它们涵盖了我能记得为MSDTC问题调试的所有事情(以及其他一些问题)。