Sql-Server

無法獲得數據庫“模型”的排他鎖 - 誰在使用它?

  • May 10, 2021

嘗試執行以下查詢以創建新數據庫時:

   CREATE DATABASE [Lunch]
    CONTAINMENT = NONE
    ON  PRIMARY 
   ( NAME = N'Lunch', 
FILENAME = N'E:\Data Files\Lunch.mdf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB ), 
    FILEGROUP [DATA] 
   ( NAME = N'Lunch_Data', 
FILENAME = N'E:\Data Files\Lunch_Data.ndf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB ), 
    FILEGROUP [NONCLUSTERED_INDEXES] 
   ( NAME = N'Lunch_nonclusteredindexes', 
FILENAME = N'E:\Data Files\Lunch_nonclusteredindexes.ndf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB )
    LOG ON 
   ( NAME = N'Lunch_log', 
FILENAME = N'F:\logFiles\Lunch_log.ldf' , 
SIZE = 524288KB , 
FILEGROWTH = 524288KB )
   GO

收到以下錯誤消息:

消息 1807,第 16 層,狀態 3,第 1 行

無法獲得數據庫“模型”的排他鎖。

稍後重試該操作。

消息 1802,第 16 層,狀態 4,第 1 行

創建數據庫失敗。

無法創建列出的某些文件名。檢查相關錯誤。

什麼是使用模型數據庫並且不允許我獲得排他鎖?

您的model數據庫現在已鎖定,因此您應該做的是找出已鎖定的會話,這可以使用以下方法完成sys.dm_tran_locks

select request_session_id
from sys.dm_tran_locks
where resource_type = 'database' and
     resource_database_id = 3 and
     request_type = 'LOCK' and
     request_status = 'GRANT';

您可以讓一個使用者剛剛打開一個帶有model數據庫上下文的 SSMS 查詢視窗,並且從未在那裡執行任何查詢,但該會話仍然S鎖定數據庫資源。

找到鎖定會話後,只需將其殺死。

引用自:https://dba.stackexchange.com/questions/216773