代码之家  ›  专栏  ›  技术社区  ›  seanyboy

在什么情况下,您会让不同的用户看到SQL Server上表中的不同行?

  •  1
  • seanyboy  · 技术社区  · 16 年前

    SQL Server 2000版。

    我们有一堆桌面在和MSSQL服务器对话。在查找特定记录时,有些桌面会返回正确的数据,而有些则不会。

    SQL命令为“select*from podordh”,其中([否]=6141) 在一个或两个桌面上,这将返回一个记录。在服务器和所有其他桌面上,不返回任何记录。

    我需要看哪些方面?什么会导致这种情况发生?

    6 回复  |  直到 16 年前
        1
  •  4
  •   bastos.sergio    16 年前

    此错误可能来自一个用户,该用户在事务中删除/插入了该记录,但尚未提交所述事务。

        2
  •  3
  •   Rob Bohn    16 年前

    检查每台机器上连接的数据库和服务器-查询非常简单,除非连接到不同的数据库或服务器,否则必须在任何地方得到相同的答案。

        3
  •  2
  •   Rowan    16 年前

    如果只是一个返回行的工作站,那么听起来工作站有一个尚未提交的打开事务。

    否则,是否可能不同工作站的隔离级别不同,例如,有些工作站会看到未提交的数据,而其他工作站则不会?

        4
  •  2
  •   Ben McEvoy    16 年前

    如果您以不同的用户身份从每台计算机连接到服务器,则可能需要查看所选表的权限。

    如果某些用户(而不是其他用户)有权读取该表,您可能会得到所描述的结果。

        5
  •  1
  •   Arthur Miller    16 年前

    在您用尽上面提到的所有选项之后,我将研究行锁和表锁。如果是这种情况,它应该返回一个错误,说明它遇到了锁。您是否正在运行可能会吞咽错误的应用程序?

        6
  •  0
  •   yfeldblum    16 年前

    可能有一两个查找记录的用户使用了不同的模式名,因此使用了不同的表。即大多数用户使用dbo.podordh,但有一两个用户使用otheruser.podordh。