5061: ALTER DATABASE failed because a lock could not be placed on database(ALTER DATABASE 失败,因为无法在数据库上加锁)
SQL Server含义
ALTER DATABASE 操作(例如切换到单用户模式、更改文件、设置选项)无法在数据库上获取所需的锁,因为其他活动连接/会话正在使用该数据库。
原因
在数据库正在使用时尝试了该操作;由于存在活动用户连接,无法获取 SET SINGLE_USER、RESTRICTED_USER 或类似选项更改所需的排他锁。在应用连接处于打开状态时频繁部署/维护时很常见。
解决方法
找出连接到该数据库的其他会话(sys.dm_exec_sessions、sp_who2)并安全地关闭它们。进行维护时,使用 ROLLBACK 选项在回滚未结事务的同时更改模式:ALTER DATABASE [db] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 在应用流量较低时或维护窗口内执行操作。完成后记得切换回 MULTI_USER。
同一数据库的其他条目
- 40501The service is currently busy. Retry the request after 10 seconds(服务当前繁忙。请在 10 秒后重试请求)
- 8645A time out occurred while waiting for memory resources to execute the query(等待执行查询所需的内存资源时超时)
- 8651Could not perform the operation because the requested memory grant was not available(无法执行操作,因为请求的内存授予不可用)
- 3702Cannot drop database because it is currently in use(无法删除数据库,因为它当前正在使用)
- 15138The database principal owns a schema in the database, and cannot be dropped(数据库主体在数据库中拥有架构,无法删除)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings(INSERT/UPDATE 失败,因为以下 SET 选项的设置不正确)
- 468Cannot resolve the collation conflict(无法解决排序规则冲突)