DBAtlas · 数据库运维图谱

1204: The instance of the SQL Server Database Engine cannot obtain a LOCK resource(SQL Server 数据库引擎实例无法获取 LOCK 资源)

SQL Server

含义

SQL Server 无法分配锁管理器所需的内存,无法再创建更多的锁。由于锁内存池已耗尽,操作失败。

原因

同时持有过多细粒度(行/页)锁:大型、无索引或批量的 DML;锁升级被阻止;服务器上的整体内存压力;或长时间运行的未结事务。偶尔外部内存压力也是诱因。

解决方法

将大型操作拆分为小批次,以减少并发锁的数量。使用合适的索引减少扫描/锁定的行数。检查禁用锁升级的配置:跟踪标志 1211/1224 以及 ALTER TABLE ... SET (LOCK_ESCALATION = DISABLE); 用 SELECT name, lock_escalation_desc FROM sys.tables; 和 DBCC TRACESTATUS(-1); 检查。检查服务器内存和 max server memory 设置,并缓解内存压力。

在 DBAtlas 中打开 →

同一数据库的其他条目