SQL2008远程服务器执行关联delete问题
本帖最后由 vincent_cheung 于 2013-06-13 09:29:50 编辑
最近做服务器升级,从SQL2000升级为2008,有一简单的SQL语句问题无法解决,求教。
系统环境:
原服务器:DELL2950,Windows 2003 R2,SQL Server 2000
现服务器:IBM3650M3,Windows 2008 R2(x64),SQL Server 2008(x64)
现象描述:
服务器SQL Server中建立远程服务器至另一SQL Server 2000,执行类似以下的一条SQL语句:
delete from table1 where id in (select id from 远程服务器.数据库.dbo.table1)
升级前执行没有问题,非常快,可是升级以后执行很慢,原来几十秒就可以执行完,升级以后用了几个小时都没有执行完这个操作,何解?开始考虑为64位的原因,做成32位问题依旧,可是在其他服务器上的Windows 2003 R2+SQL Server2008(x86)上运行就没有问题。将delete的in方式改为join的方式,执行同样慢。后来查MSDN,打了一大堆的补丁(现在SQL2008已为SP1),均无效,已经晕了,大家帮我判断一下是什么原因吧。
------解决方案--------------------远程的delete跟update遇到数据类型不一致貌似就会触发服务器级的游标
你本地id的数据类型与远程的是否一致?尝试一下把本地的tb的id数据转换与远程一致的试试