在什么情况下,我们将使不同的用户在SQL Server的表中看到不同的行?
时间:2020-03-05 18:58:54 来源:igfitidea点击:
SQL Server 2000版。
我们有一堆台式机正在与MSSQL Server通讯。当查找特定记录时,某些台式机返回正确的数据,但某些台式机不返回正确的数据。
SQL命令为" SELECT * FROM PODORDH WHERE([NO] = 6141)"
在一个或者两个桌面上,这将返回一条记录。在服务器和所有其他台式机上,不返回任何记录。
我需要看哪些区域?什么会导致这种情况发生?
解决方案
回答
检查我们要连接到每台计算机上的数据库和服务器的查询是否足够简单,除非我们要连接到不同的数据库或者服务器,否则在任何地方都必须得到相同的答案。
回答
此错误可能是由于用户删除/插入了事务中的记录,但尚未提交该事务而导致的。
回答
如果只是一个工作站返回该行,则听起来该工作站具有尚未提交的开放事务。
否则,隔离级别对于不同的工作站可能是不同的,即。有些会看到未提交的数据,而另一些不会呢?
回答
如果要以每台计算机上不同的用户身份连接到服务器,则可能要查看从中选择的表的权限。
如果某些用户而不是其他用户有权读取该表,则可能会得到我们描述的结果。
回答
可能找到记录的一个或者两个用户使用的是不同的架构名称,因此使用的是不同的表。 IE多数用户正在使用dbo.PODORDH,但是一个或者两个用户正在使用otheruser.PODORDH。
回答
在用完上述所有选项之后,我将研究行锁和表锁。如果是这种情况,它应该返回一个错误,指出它遇到了锁。我们是否正在运行可能吞下错误的应用程序?