web-dev-qa-db-ja.com

SQL Server 2008 R2がシングルユーザーモードでスタックする

失敗したローカルデータベースで(VS SQL Serverデータベースプロジェクトから)DBデプロイを実行すると、データベースはシングルユーザーモードが残った状態のままになります(デプロイはシングルユーザーモードとして実行されます)。

SSMSから接続して、次のようなものを試してみてください。

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

エラーが表示されます:

現在、データベース「MyDatabase」の状態またはオプションを変更することはできません。データベースはシングルユーザーモードであり、ユーザーは現在接続されています。

データベースをオフラインにしてみましたが、SSMSは成功したと言っていますが、実際には何もしていないようです。これまでのところ、データベースをドロップして再作成することでこれを回避することができました(これはローカルテストデータベースにすぎないため、大丈夫です)。ただし、ステータスをリセットできるようにしたいと思います。

このデータベースをシングルユーザーモードから削除するようにSQL Serverを説得するにはどうすればよいですか?

33
Paul Michaels

マスターデータベースでの最初の実行後のクエリ

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
115
mehdi lotfi

これは答えられました ここ 、コードは:

use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER
1
Tristan

以下のコマンドを試してください

最初にこれら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
1
Pankil Agrawal

DAC(専用管理者接続)を使用します。最初にそれを有効にしたことを確認してくださいadminのSSMSタイプ:マスターALTER DATABASE SET MULTI_USERに接続した後のサーバー名

0
Ankit