Sql server SQL Server-相同的查询、相同的数据库、不同的结果
我在SQLServer2008中有一个数据库,有两个表。我正在Management Studio上运行以下查询:Sql server SQL Server-相同的查询、相同的数据库、不同的结果,sql-server,locking,isolation-level,Sql Server,Locking,Isolation Level,我在SQLServer2008中有一个数据库,有两个表。我正在Management Studio上运行以下查询: select M.FD_BROWSER_SHORT_NAME AS X, Count(1) AS Y from TB_EVENTS E INNER JOIN TB_MACHINES M ON E.FD_ID = M.FD_ID AND E.FD_ID_NET = M.FD_ID_NET where E.FD_EVENT_CODE = 30 group by
select M.FD_BROWSER_SHORT_NAME AS X, Count(1) AS Y
from TB_EVENTS E
INNER JOIN TB_MACHINES M ON E.FD_ID = M.FD_ID AND E.FD_ID_NET = M.FD_ID_NET
where E.FD_EVENT_CODE = 30
group by M.FD_BROWSER_SHORT_NAME
having Count(1) > 10
运行此查询时,结果如下:
X Y
OP 23
CR 1809
IE 5392
MZ 1000
然后在同一数据库(同一会话)上再次运行查询(F5)。结果更改为:
X Y
OP 1023
CR 1809
IE 5392
再次运行查询时,结果将恢复正常:
X Y
OP 23
CR 1809
IE 5392
MZ 1000
同时,在同一台服务器上,我有一个C#应用程序更改数据库(插入和更新)。当我停止此应用程序时,问题就停止了
首先,我认为问题与锁有关。然后我尝试在SQL语句之前添加以下内容:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
但问题不断出现
我试图在另一台服务器上重现这个问题,但没有发生。我尝试将数据库迁移到另一台服务器和另一个版本的SQL server,但仍然发生这种情况
问题发生在另一个包含聚合函数的查询中
我还尝试更新统计数据并重建所有索引。没什么
有什么想法吗?也许你的C#应用程序在你设置事务之前就锁定了。
尝试读取未提交的文件,并查看显示的内容:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED