【发布时间】:2014-02-28 20:43:29
【问题描述】:
我们使用 SQL Server 2005 数据库。一些数据仓库表每天都会被截断并重新加载。当用户对同一张表运行 SELECT 语句时,我们会遇到死锁问题。
场景
- 用户运行报告(SELECT 语句)。
- 对上述 SELECT 中使用的表执行 TRUNCATE。
- TRUNCATE 从 SELECT 语句接收一个硬块。 SELECT 语句立即暂停。这会造成无限死锁。
有人对 SQL Server 机制有详细的解释吗?另外,有什么解决办法吗?
【问题讨论】:
-
“无限死锁”是什么意思?死锁监视器应该检测到死锁并回滚。您是否收到死锁受害者错误?或者你只是在谈论阻塞?如果是这样,请显示阻塞 DMV 的输出。
标签: sql-server-2005 data-warehouse truncate