You need to enable JavaScript to run this app.
云数据库 SQL Server 版

云数据库 SQL Server 版

复制全文
常见问题
建立数据库时遇到 Could not obtain exclusive lock on database 'model' 报错怎么办?
复制全文
建立数据库时遇到 Could not obtain exclusive lock on database 'model' 报错怎么办?

本文介绍在建立数据库遇到 Could not obtain exclusive lock on database 'model' 报错时的解决方案。

说明

您的账号需要被授予 VIEW SERVER STATE 权限或更高权限。

  1. 执行以下命令排查是否有其他会话占用锁。

    IF
    EXISTS(SELECT request_session_id FROM
    sys.dm_tran_locks
    WHERE resource_database_id =
    DB_ID('Model'))
    PRINT
    'Model Database being used by some other session'
    ELSE
    PRINT
    'Model Database not used by other session'
    

    如果输出如下,则表示被其他会话占用了锁。

    Model Database being used by some other session
    完成时间:2024-04-07T7:24:54.6358865+08:00
    
  2. 执行以下命令查看当前 Modle 被哪些会话占用。

    SELECT request_session_id FROM
    sys.dm_tran_locks WHERE resource_database_id =DB_ID('Model');
    
  3. 执行以下命令查询当前会话的相关信息和执行的 SQL 语句。

    说明

    • 只能查看当前会话的信息,当前会话有可能是空闲的。

    • 如果 session_id 对应的进程已不再活跃,可能无法通过这种方法找到具体的 SQL 语句。

    SELECT
        r.session_id,
        r.start_time,
        r.status,
        r.command,
        r.wait_type,
        r.wait_time,
        r.blocking_session_id,
        r.cpu_time,
        r.total_elapsed_time,
        ST.text AS sql_text
    FROM 
        sys.dm_exec_requests AS r
    CROSS APPLY 
        sys.dm_exec_sql_text(r.sql_handle) AS ST
    WHERE 
        r.session_id = <your_session_id>; //<your_session_id>替换为从 sys.dm_tran_locks 视图找到的 request_session_id 的值
    
  4. 业务判断是否可以终止对应的会话,或者等待会话执行完再操作。

最近更新时间:2024.05.21 16:16:56
这个页面对您有帮助吗?
有用
有用
无用
无用