失敗したローカルデータベースで(VS SQL Serverデータベースプロジェクトから)DBデプロイを実行すると、データベースはシングルユーザーモードが残った状態のままになります(デプロイはシングルユーザーモードとして実行されます)。
SSMSから接続して、次のようなものを試してみてください。
ALTER DATABASE MyDatabase
SET MULTI_USER;
GO
エラーが表示されます:
現在、データベース「MyDatabase」の状態またはオプションを変更することはできません。データベースはシングルユーザーモードであり、ユーザーは現在接続されています。
データベースをオフラインにしてみましたが、SSMSは成功したと言っていますが、実際には何もしていないようです。これまでのところ、データベースをドロップして再作成することでこれを回避することができました(これはローカルテストデータベースにすぎないため、大丈夫です)。ただし、ステータスをリセットできるようにしたいと思います。
このデータベースをシングルユーザーモードから削除するようにSQL Serverを説得するにはどうすればよいですか?
マスターデータベースでの最初の実行後のクエリ
exec sp_who
犯人が見つからない場合は、試してください
SELECT request_session_id FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('YourDatabase')
次に、次のクエリでデータベースを使用するすべてのプロセスを強制終了します。
KILL spid
次に、次のクエリを実行します。
USE Master
ALTER DATABASE YourDatabase SET MULTI_USER
これは答えられました ここ 、コードは:
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER
以下のコマンドを試してください
最初にこれら3つのコマンドを実行します
USE [master]
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption MyDBName, 'single user', 'FALSE';
次に、これら2つのコマンドを実行します
ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
DAC(専用管理者接続)を使用します。最初にそれを有効にしたことを確認してくださいadminのSSMSタイプ:マスターALTER DATABASE SET MULTI_USERに接続した後のサーバー名