跳到主要内容
常见问题 SQL Server锁独占使用

提示数据库被锁住无法打开怎么查

「数据库被锁」的实际含义(独占使用、单用户、长事务持锁),查会话与锁的 T-SQL 方法,以及解除路径。

发布于 2026/11/11 所属频道 SQL Server

简短答案

「数据库被锁」实际是几种情况之一:数据库处于单用户/独占状态、有会话正持锁、或被标记为只读。先查会话与状态,再决定解除方式。

排查步骤

  1. 查数据库状态与会话:
SELECT d.name, d.user_access_desc
FROM sys.databases d;
-- 占用会话
SELECT session_id, login_name, host_name, command
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID(N'库名');
  1. 若是单用户模式(维护时切的):ALTER DATABASE 库名 SET MULTI_USER; 恢复。
  2. 若被某个会话持锁:评估业务后 KILL 会话ID,或等长事务结束。
  3. 只读库:ALTER DATABASE 库名 SET READ_WRITE;(先确认磁盘与文件正常)。
  4. 在 SSMS 数据库属性可看「状态」与「访问」选项。
  5. 版本行为以 SQL Server 2022 Developer 条目页核对。

现象对照表

提示语 实际状态
已被「xxx」独占使用 单用户模式下有会话连接
无法打开,只读 数据库被设为 READ_ONLY
等待锁 长事务持锁

操作小结

  1. 先分清「独占使用/只读/持锁」三种状态。
  2. 解除前评估业务影响。
  3. 恢复多用户与读写后验证。

相关链接

本文内容基于公开资料整理,仅供参考;涉及授权与合规的操作请以厂商官方文档为准。

相关推荐下载

按本文主题匹配的官方原版镜像条目

配套 PE 工具

制作启动盘、备份数据、修复引导

其他常见问题

同一集合内的相近主题,按标签与关键词匹配