SQL查询在链接服务器上给出错误结果

我试图从2个表中提取用户数据,一个在本地,一个在链接服务器上,但是在查询远程服务器时得到了错误的结果.

我把查询减少到了

select * from SQL2.USER.dbo.people where persId = 475785

进行测试,发现当我运行它时,即使我知道这个人存在,我也没有得到任何结果.
(persId是一个整数,db是SQL Server 2000,顺便说一下,dbo.people是一个表)

如果我复制/粘贴查询并在与数据库相同的服务器上运行它,那么它可以工作.

例如,它似乎只会影响某些用户ID

select * from SQL2.USER.dbo.people where persId = 475784

在我想要之前为用户工作正常.

奇怪的是我发现了这一点

select * from SQL2.USER.dbo.people where persId like '475785'

也有效

select * from SQL2.USER.dbo.people where persId > 475784

根据我的预期,从22519开始,而不是475785,带回记录的记录.

希望对某人有意义

有任何想法吗 ?

更新:
由于内部关注对live people表进行任何更改,我暂时移动了我的数据库,因此它们都在同一台服务器上,因此链接服务器问题不适用.一旦整批货物迁移到一个单独的集群,我就能够正确调查.一旦发生这种情况,我会更新更新,我可以通过所有建议.谢谢你的帮助.

最佳答案 LIKE操作的事实不是一个主要线索:LIKE强制整数字符串(所以你可以说WHERE字段LIKE’2%’并且你将得到所有以2开头的记录,即使字段是整数类型).您的不正确的比较会让我认为您的索引已损坏,但您说它们在未通过链接使用时有效…但是,根据使用情况,所选索引可能会有所不同? (我似乎记得一个实例,当我有重复的索引,只有一个是陈旧的,虽然那是很久以前回想起确切的原因).

不过,我会尝试使用DBCC DBREINDEX(tablenname)命令重建索引.如果事实证明这样做会修复您的查询,您可能需要重建它们:here is a script以便轻松地重建它们.

点赞