Метка: error

Ошибка Could not obtain exclusive lock on database ‘model’

Ошибка Could not obtain exclusive lock on database ‘model’

При создании базы данных ошибка — «Could not obtain exclusive lock on database ‘model’. Retry the operation later.«

Exclusive lok

Справка Microsoft Docs:

База данных model используется в качестве шаблона для всех баз данных, созданных для экземпляра SQL Server

При выполнении инструкции CREATE DATABASE первая часть базы данных создается путем копирования в нее содержимого базы данных model . Оставшаяся часть новой базы данных заполняется пустыми страницами.

Ссылка

 

В данном случае кто-то уже блокирует базу, поэтому и возникает ошибка.

Увидеть кто блокирует базу поможет следующий скрипт. Есть кто-то уже использует базу model запрос вернёт Session Id. Данную сессию необходимо разъединить.

IF EXISTS (
        SELECT request_session_id
        FROM sys.dm_tran_locks
        WHERE resource_database_id = DB_ID('model')
        )
BEGIN
    PRINT 'Model Database in use!!'
 
    SELECT *
    FROM sys.dm_exec_sessions
    WHERE session_id IN (
            SELECT request_session_id
            FROM sys.dm_tran_locks
            WHERE resource_database_id = DB_ID('model')
            )
END
ELSE
    PRINT 'Model Database not in used.'

После поисков в интернете, следующий скрипт удаляет Все соединение с базой данных. Таким образом блокировка model снимется.

USE [master]
GO

 DECLARE @kill varchar(max) = '';
 SELECT @kill = @kill + 'BEGIN TRY KILL ' + CONVERT(varchar(5), spid) + ';' + ' END TRY BEGIN CATCH END CATCH ;'
 FROM master..sysprocesses 

EXEC (@kill);

 

После данной процедуры ошибка при создании БД прошла.