【问题标题】:dynamic linked server query OLE DB provider "SQLNCLI11" for linked server returned message No transaction is active链接服务器的动态链接服务器查询 OLE DB 提供程序“SQLNCLI11”返回消息没有活动的事务
【发布时间】:2017-08-04 10:20:56
【问题描述】:

我在 windows 8.1 pro 上使用 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”返回消息“没有处于活动状态的事务。”。

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

插入到 RemoteServerName.RemoteDataBaseName.RemoteSchemaName.RemoteTableName 值(1,1)

一切正常,操作完成

请问这是什么原因,我在 LocalDtc 中错过了哪些配置

我应用了这个解决方案

Linked servers SQLNCLI problem. "No transaction is active"

但它从来没有为我工作过

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

    我必须解决 DNS 问题

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2013-03-28
      • 1970-01-01
      • 2013-09-10
      • 2014-07-23
      相关资源
      最近更新 更多