我试图执行一个存储过程并将其结果简单地插入一个临时表中,并且我收到以下消息:
由于链接服务器“ MyServerName”的OLE DB提供程序“ SQLNCLI”无法开始分布式事务,因此无法执行该操作。链接服务器“ MyServerName”的OLE DB提供程序“ SQLNCLI”返回消息“没有事务处于活动状态”。
我的查询如下所示:
INSERT INTO #TABLE EXEC MyServerName.MyDatabase.dbo.MyStoredProcedure Param1, Param2, Param3
确切的列号,名称,不是问题所在。
在两台计算机上都允许并启动了MSDTC,也调用了远程过程。
这些机器不在同一个域中,但是我可以从我的机器上执行远程查询并获得结果。我什至可以执行存储过程并查看其结果,只是不能将其插入另一个表中。
编辑
哦,我忘了提一下,存储过程不会触发任何触发器。它仅将记录插入临时表中,并创建临时表以进行数据处理。
好吧,经过大量的教程和研究后,我改变了所有我认为对它起作用所必需的配置,但是仍然没有。
今天,由于不间断的故障,我们不得不在开发服务器上强制重新启动电源,而当我们启动服务器时,您猜怎么着?有用!
因此,仅作记录用途,我更改了一些特定的MSDTC配置,将其添加为链接服务器并允许RPC IN和OUT,并将RPC配置更改为“无需验证”。
我记得在某处读过,更改此配置后,即使Windows表示它已经重新启动了该服务,也需要重新启动。
自从更改服务器以来,我已经像两次一样重新启动了服务器,但它仍然无法正常工作。但是像今天一样,在完全关闭然后再打开后,它仍然可以工作!
至于语法,我保持不变。