最近在操作远程链接服务器时,发现一个奇怪的问题,单笔更新操作可以,批量操作时,提示执行成功,并返回影响的行数,但查询结果,却并没有发生变化。
如下的语句可以执行:
UPDATE [192.168.1.1].DB1.dbo.ddfhmx SET jga=60.91 WHERE fhdbh='1206280028' AND fhdmxbh='002'
这样写就不行了:
UPDATE a SET a.xsdj=b.xsdj ,a.jga=b.relatedPrice
FROM [192.168.1.1].DB1.dbo.ddfhmx a
LEFT JOIN [192.168.1.1].DB1.dbo.ddmx b ON a.ddbh=b.ddbh
WHERE a.fhdbh='1206280028' AND (a.xsdj<>b.xsdj OR a.jga<>b.relatedPrice)
百思不得其解,最后更改写法,使用OPENQUERY就OK了。如下:
UPDATE OPENQUERY([192.168.1.1],'SELECT a.jga,b.relatedPrice
FROM DB1.dbo.ddfhmx a
LEFT JOIN DB1.dbo.ddmx b ON a.ddbh=b.ddbh
WHERE a.fhdbh=''1206280028'' AND (a.xsdj<>b.xsdj OR a.jga<>b.relatedPrice)')
SET jga=relatedPrice
有关OPENQUERY的详细说明,请参考微软网站:http://technet.microsoft.com/zh-cn/library/ms188427.aspx