Welcome

首页 / 数据库 / SQLServer / OLE DB provider “SQLNCLI11” for linked server “dbLink01”

OLE DB provider “SQLNCLI11” for linked server “dbLink01”2015-02-18OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed transac

从网上搜集了以下几个解决方案,但对于非同网段的分布式事务,还是解决不了:

我这边报处错误的详细信息是:

异常信息:The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed transaction.

OLE DB provider "SQLNCLI11" for linked server "dbLink01" returned message "没有活动事务。".

导致错误的应用程序或对象的名称:.Net SqlClient Data Provider

引发当前异常的方法:

异常相关帮助:

堆栈信息:

在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)

在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)

在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

1、 检查本地机器与目标机器的MSDTC(Distributed Transaction Coordinator)服务是否已经启用,具体位置如下图:

2、MSDTC设置

打开“管理工具――组件服务”,以此打开“组件服务――计算机 – 我的电脑 --- distributed transaction coordinator –本地DTC上右键属性安全选项卡上设置:选中“网络DTC访问”。在客户端管理中选中“允许远程客户端”“允许远程管理”,在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”,保证DTC登陆账户为:NT   AuthorityNetworkService。