问:如何防止SQL Server将锁升级?
答:SQL Server使用锁来保持事务在数据库内部的完整性和一致性。SQL Server支持具有不同粒度的多种锁类型。例如,行锁是一个高级锁,而页锁是一个低级锁。SQL Server自动将大量的高级锁升级为少量的低级锁,从而降低系统开销,但同时也可能导致应用程序内不可预测的阻塞。
升级在锁的数量超过锁升级极限时自动进行。这一极限是一个内部设置,设计用于保护系统资源。该极限值不能由用户设置,但在以跟踪标记1211(无文档记载)启动SQL Server时,该锁升级将被禁用。
请注意,如果禁用了锁升级,管理系统的职责将由您承担。如果SQL Server内存不足,系统可能会崩溃。一个更好的解决方案为,如果肯定需要行级锁,可以执行较短的事务。