我正在将数百个存储过程从一台服务器迁移到另一台服务器,因此我想编写一个存储过程以在每台服务器上执行SP并比较输出的差异。从SQL Server中选择存储过程Resutls
为了做到这一点,我通常会用这个语法来得到的结果为表:然后
select * into #tmp1 from OpenQuery(LocalServer,'exec usp_MyStoredProcedure')
select * into #tmp2 from OpenQuery(RemoteServer,'exec usp_MyStoredProcedure')
我会联合他们,做一个计数,获得多少行的结果不同:
select * into #tmp3
from ((select * from #tmp1) union (select * from #tmp2))
select count(*) from #tmp1
select count(*) from #tmp3
然而,在这种情况下,我的存储过程包含OpenQuery
,所以当我尝试把exec
到OpenQuery
,查询失败,出现错误:
The operation could not be performed because OLE DB provider "SQLNCLI"
for linked server "RemoteServer" was unable to begin a distributed transaction.
有没有什么好的解决方法呢?还是有人有任何聪明的想法,我可以做的事情,使这个过程更快?因为现在看来,我必须在每台服务器上运行SP,将结果编写到tmp表中,然后进行比较。这似乎是一个糟糕的解决方案!
感谢您花时间阅读本文,任何帮助将不胜感激!