OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed transac

本文涉及的产品
云防火墙,500元 1000GB
简介: 从网上搜集了以下几个解决方案,但对于非同网段的分布式事务,还是解决不了: 我这边报处错误的详细信息是: 异常信息:The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed t

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

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

异常信息: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、 检查本地机器与目标机器的MSDTCDistributed Transaction Coordinator)服务是否已经启用,具体位置如下图:


2、MSDTC设置

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


3、打开双方服务器,再打开SSMS,右击数据库服务器属性,在连接选项卡勾选"需要将分布式事务用于服务器到服务器的通信." 重启双方数据库服务。

4、检查两台机器能够相互ping通Hostname。注意是机器名,而不是IP。若不可以,进行如下设置:在目录“%windir%\system32\drivers\etc”下的hosts文件,写上IPHostName的对应信息,如 “10.25.11.185 GSMAJK”。另外,你也可以使用DTCping工具来测试是否可以在两台机器之间使用MSDTC。

5、 打开双方135端口

        MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。  使用“telnet IP 135 ”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放。

6、允许msdtc服务通过防火墙,没有该选项时,通过点击【允许运行另一程序】按钮添加,位置为C:/windows/system32/msdtc.exe。或者直接关闭防火墙也可以。






相关文章
|
SQL 安全 测试技术
MS SQL 错误:The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "test" was unable to begin a distributed transact
一同事在测试服务器(系统:Windows 2008 R2 Standard 数据库:SQL SERVER 2008 R2)通过链接服务器test使用分布式事务测试时出错,出错信息如下: set xact_abort on begin tran update test.
1479 0
|
SQL 数据库 数据库管理
Replication-Replication Distribution Subsystem: agent xxxxxx failed. Column names in each table must be unique
原文:Replication-Replication Distribution Subsystem: agent xxxxxx failed. Column names in each table must be unique   最近遇到一个关于发布订阅(Replication)的奇葩问题,特此记录一下这个案例。
1036 0
|
SQL Go
A Beginner’s Guide to the OUTPUT Clause in SQL Server
原文 A Beginner’s Guide to the OUTPUT Clause in SQL Server T-SQL supports the OUTPUT clause after the inception of SQL server 2005 and later editions.
1308 0
|
Oracle 关系型数据库
Mandatory Patching Requirement for Database Versions 11.2.0.3 or Earlier, Using DB Links (DOC ID 2335265.1)
Mandatory Patching Requirement for Database Versions 11.2.0.3 or Earlier, Using DB Links (DOC ID 2335265.
2804 0