|
|
1
2
SQL Server 2000未使用
这可能与执行计划中优化的更改有关。某些索引的锁定顺序可能与SQL Server 2000中的不同。或者,SQL Server 2008正在使用SQL Server 2000对该特定查询完全忽略的索引。 在没有更多信息的情况下,很难准确地说出正在发生的事情,但是要阅读锁类型并检查两个冲突查询的执行计划。这里有一个很好的地方 short article 这就解释了为什么事情会陷入僵局的另一个例子。 |
|
|
2
1
read committed是SQL Server 2000中的默认隔离级别,而不是read uncommitted。 http://msdn.microsoft.com/en-us/library/aa259216(SQL.80).aspx 我想象你的应用程序中有什么东西在设置隔离级别——可能是通过连接对象属性之一。看一看 here 用于通过ADO、ODBC和OLE DB设置事务隔离级别的方法。 在SQL Server 2008中也可以这样做,但是……您确定您的应用程序应该在未提交的读取下运行吗?你的应用程序是专门为处理数据移动和幻象读取而设计的吗? |
|
|
3
1
实际上,我很惊讶您没有在SQL Server 2000中遇到问题。似乎每周我们都在修复锁定表的存储过程,因为有人忘记了nolock。 |
|
|
4
1
您可以研究快照隔离,这将允许应用程序在写入线程仍在忙于更新行时读取旧版本的行。 |