web-dev-qa-db-ja.com

SQL Serverはデータベースが使用中であると教えてくれましたが、使用されていません

SQL Serverは、データベースを削除または復元しようとしたときにデータベースが使用中であることを通知し続けますが、次のメタデータクエリを実行すると、

select * from sys.sysprocesses 
where dbid 
  in (select database_id from sys.databases where name = 'NameOfDb')

何も返しません。

CHECKPOINT_QUEUE待機タイプである1つのプロセスを返す場合があります。そのプロセスを強制終了しようとしても、許可されません(ユーザー以外のプロセスを強制終了することはできません)。

誰もが何が悪いのか考えていますか?

21
tuseau

データベースをブロックするものはたくさんあります。たとえば、そのデータベースでクエリウィンドウを開いている場合、そのウィンドウはロックされます。 IIS上のWebアプリケーションのような外部アクセスをカウントしません。

強制的にドロップしたい場合は、既存の接続を閉じるオプションを確認するか、SQL Serverのサービスを手動で停止してみてください。

14
Smur

私はこのスクリプトが好きです。殺害に苦労しないでください。

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
33
MahmutHAKTAN

バックアップからデータベースを復元しようとしたときに、同じ問題が発生していました。解決策は、復元を実行する前に、[オプション]ページで[既存のデータベースを上書きする(置換あり)]および[宛先データベースへの既存の接続を閉じる]をオンにすることでした。以下のスクリーンショットです。

enter image description here

13
jbooker