代码如下:SET @deletesqlStr=' DELETE  a  FROM ['+@HostAddress+'].db1.dbo.T1 a '
+' , db2..T2 b '
+' where a.F1 = b. F1 ' 
+' and a.F2 = b.F2 ' 
+' and a.F3 = b.F3 '
+' and a.F4 = b.F4 '
+' and a.F5 = b.F5 '
+' and a.F6 = b.F6 '
EXEC(@deletesqlStr) SELECT @ResultCode = @@ERROR
IF @ResultCode <> 0 GOTO END_PROC1代码正常执行,@ResultCode为0,无错误。
在HostAddress那台机器上也监视过了,这句代码确实执行了,但是数据没有被删掉。奇怪的是,如果不是在SP里,而是在查询分析器里单独执行这段,数据就能够被删掉。

解决方案 »

  1.   

    已做好链接服务器,否则执行就会报错。为了排错,已经把SP的其它代码都删掉了,只剩下插入和删除。插入代码如下,
    EXEC( 'INSERT INTO db2..T2 SELECT DISTINCT * FROM ['+@HostAddress+'].db1.dbo.T1')
    执行后@@ERROR=0,@@rowcount>0,但是数据没有插进去。直接在查询分析器里单独执行,数据能够被插入和删掉。
      

  2.   

    难道依旧是分布式事务的问题?都启动下MSDTC服务看看?