既にシングルユーザーモードになっているデータベースにアクセスしようとすると、最初にデータベースへのすべての接続を閉じる必要があります。そうしないと、エラーメッセージが表示されます。
メッセージ5064、レベル16、状態1、行1データベース 'DatabaseName'の状態またはオプションの変更は、現時点ではできません。データベースはシングルユーザーモードであり、ユーザーは現在データベースに接続しています。メッセージ5069、レベル16、状態1、行1のALTER DATABASEステートメントが失敗しました。
次のクエリは、データベースにアクセスしているプロセスを強制終了します。
-- Create the sql to kill the active database connections
declare @execSql varchar(1000), @databaseName varchar(100)
-- Set the database name for which to kill the connections
set @databaseName = 'DatabaseName'
set @execSql = ''
select @execSql = @execSql + 'kill ' + convert(char(10), spid) + ' '
from master.dbo.sysprocesses
where db_name(dbid) = @databaseName
and
DBID <> 0
and
spid <> @@spid
exec(@execSql)
GO
その後、通常どおりデータベースをマルチユーザーモードに戻すことができるはずです。
ALTER DATABASE 'DatabaseName' SET MULTI_USER