【问题标题】:Linked servers SQLNCLI problem. "No transaction is active"链接服务器 SQLNCLI 问题。 “没有交易处于活动状态”
【发布时间】:2010-05-28 19:37:15
【问题描述】:

我试图执行一个存储过程并将其结果简单地插入到一个临时表中,我收到以下消息:

无法执行操作,因为 OLE DB 提供程序“SQLNCLI” 对于链接服务器“MyServerName”无法开始分布式 交易。用于链接服务器的 OLE DB 提供程序“SQLNCLI” “MyServerName”返回消息“没有事务处于活动状态。”。

我的查询如下所示:

INSERT INTO #TABLE
EXEC MyServerName.MyDatabase.dbo.MyStoredProcedure Param1, Param2, Param3

确切的列号,名称,问题不是结果。

MSDTC 允许并在两台计算机上启动,远程过程调用也是如此。

这些机器不在同一个域中,但我可以从我的机器执行远程查询并获得结果。我什至可以执行存储过程并查看其结果,只是无法将其插入另一个表中。

编辑


哦,我忘了说,存储过程不会触发任何触发器。它只将记录插入到它自己创建的用于数据处理的临时表中。

【问题讨论】:

    标签: sql sql-server sql-server-2005 linked-server sqlncli


    【解决方案1】:

    好吧,在学习了很多教程并进行了大量研究之后,我已经更改了所有我认为让它工作所需的配置,但它仍然没有。

    今天我们不得不在我们的开发服务器上强制重启电源,因为没有中断,当我们启动服务器时,你猜怎么着?有效!

    为了记录,我更改了一些特定的 MSDTC 配置,将其添加为链接服务器并允许 RPC IN 和 OUT,并将 RPC 配置更改为“不需要身份验证”或类似的内容。

    我记得在某处读到,在您更改此配置后,需要重新启动,即使 Windows 说它已经重新启动了服务。

    自从我更改服务器后,我已经像...一样重新启动了服务器两次,但它仍然无法正常工作。但是和今天一样,完全关机再开机,就可以了!

    至于语法,我保持不变。

    【讨论】:

      【解决方案2】:

      您还必须检查 IP 网络配置中的 DNS 名称解析。

      例如,您有一个名为 server-a.mydomain.com 的服务器和另一个名为 server-b.otherdomain.com 的服务器,登录 server-a 并执行“ping server-b”(没有域) .

      如果它响应“Ping 请求找不到主机服务器-b。请检查名称并重试。”这就是问题所在。

      转到控制面板>网络连接>右键单击网卡>属性> Internet协议>属性>高级> DNS>按顺序附加此DNS后缀。 在这里添加本地域:mydomain.com,然后添加远程域:otherdomain.com 单击确定直到退出

      现在,如果您执行“ping server-b”,它应该会响应如下内容:

      使用 32 字节数据 Ping server-b.otherdomain.com [192.168.1.2]: 来自 192.168.1.2 的回复:字节=32 时间=12ms TTL=64 回复来自 192.168.1.2:字节=32 时间=9ms TTL=64

      现在再次尝试执行分布式事务。

      【讨论】:

        【解决方案3】:

        我有幸在链接服务器连接的两端安全地重新启动 SQL Server 服务。我不必重新启动机器。

        【讨论】:

          【解决方案4】:

          您是否尝试过使用 openquery?

          insert into table select * from openquery(myservername, 'exec mydatabase.dbo.mystoredproc param1, param2, param3')
          

          【讨论】:

          • 来自 MSDN 文档:(msdn.microsoft.com/en-us/library/ms188427(SQL.90).aspx) 在 SQL Server 2000 和更高版本中,OPENQUERY 不能用于在链接服务器上执行扩展存储过程。但是,可以通过使用四部分名称在链接服务器上执行扩展存储过程。例如:EXEC SeattleSales.master.dbo.xp_msver
          • 原帖并未具体说明它是扩展存储过程还是常规存储过程。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-04
          • 2014-10-21
          • 1970-01-01
          • 2012-04-04
          • 1970-01-01
          • 1970-01-01
          • 2014-10-27
          相关资源
          最近更新 更多