动态链接服务器查询OLE DB提供程序“SQLNCLI11”用于链接服务器返回消息没有事务处于活动状态

时间:2017-03-14 07:21:20

标签: sql-server

我在Windows 8.1专业版上使用sql server 2014

并调用在触发器

中调用动态链接服务器查询的过程

(我不会提供完整的代码,但会将其视为算法

CREATE PROCEDURE DynamicLinkedQuery(@InstanceName NVARCHAR(32),@DatabaseName NVARCHAR(64),@SchemaName NVARCHAR(64), @TableName NVARCHAR(64))
as
begin 
declare 
        @SqlQuery NVARCHAR(MAX)


Select @SQlQuery='INSERT INTO ['+ @InstanceName+ '].['+@DatabaseName+'].'  + @SchemaName + '.' + @TableName + ' Values(3)'
--assuming we have one int columns in destination table 

EXECUTE sp_Executesql @SQLQuery 

End

因为我使用的是动态链接服务器查询,所以它被认为是 分布式查询

所以我们必须在两个链接的服务器上运行分布式事务处理协调器服务

当然首先使用此链接中提到的以下步骤进行配置

http://www.virtualizationhowto.com/2015/04/ole-db-provider-sqlncli11-linked-server-unable-distributed-transaction/

但我仍然收到错误

链接服务器“ServerName”的OLE DB提供程序“SQLNCLI11”返回消息“没有事务处于活动状态。”。

但是当我执行非动态查询时,如

INSERT INTO RemoteServerName.RemoteDataBaseName.RemoteSchemaName.RemoteTableName 值(1,1)

每件事都没问题并且操作已经完成

请问是什么原因以及我在LocalDtc中错过的配置是什么

我应用了这个解决方案

Linked servers SQLNCLI problem. "No transaction is active"

但它从来没有对我有用

1 个答案:

答案 0 :(得分:0)

我发现因为我的两台服务器位于两个不同的域中

我必须解决DNS问题

所以我将第一个服务器名称放在第二个服务器名称的hosts文件中 我的问题解决了