Чтобы избежать этой ошибки, используйте приведенный ниже скрипт T-SQL в базе данных master. Обязательно запустите это (и измените @dbname) для каждой базы данных, в которой вы запускаете команду ALTER DATABASE.
"База данных не может быть заблокирована исключительно для выполнения
Операция "
Этот сценарий "убийцы соединений" будет работать, если Windows установила соединения JDBC с базой данных. Но этот сценарий не может уничтожить соединения JDBC для служб Linux (например, JBoss). Так что вы все равно получите эту ошибку, если не остановите JBoss вручную. Я не пробовал другие протоколы, но, пожалуйста, прокомментируйте, если вы узнаете больше информации при создании новых систем.
USE master;
DECLARE @dbname sysname
Set @dbname = 'DATABASE_NAME_HERE-PROD'
Declare @spid int
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname)
While @spid Is Not Null
Begin
Execute ('Kill ' + @spid)
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname) and spid > @spid
End