我试图在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
Run Code Online (Sandbox Code Playgroud)
小智 8
通过将服务器选项"remote proc transaction promotion"设置为"false",可以防止对链接服务器使用分布式事务:
EXEC sp_serveroption 'servername', 'remote proc transaction promotion', 'false'
Run Code Online (Sandbox Code Playgroud)
链接服务器无法开始分布式事务错误是由于 MSDTC(MS 分布式事务协调器)中的问题造成的。问题可能由许多问题引起。包括MSDTC未运行、被防火墙阻止等。
如果您需要事务,您几乎必须自己调试问题,因为它是环境问题。如果您可以重写以避免需要交易,您的生活会更简单。为了确保这是 MSDTC 问题,请编写一个不依赖于 MSDTC 的简单查询。例如
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
Run Code Online (Sandbox Code Playgroud)
如果这有效,那么它绝对是 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 问题的所有内容(还有其他一些问题)。
| 归档时间: |
|
| 查看次数: |
24038 次 |
| 最近记录: |