23

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

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

何も返しません。

場合によっては、CHECKPOINT_QUEUE の waittype である 1 つのプロセスが返されます。そのプロセスを強制終了しようとしても、できません (非ユーザー プロセスを強制終了することはできません)。

何が悪いのか誰にも分かりますか?

4

3 に答える 3

36

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

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
于 2012-12-02T18:10:04.333 に答える
17

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

ここに画像の説明を入力

于 2016-08-22T19:53:04.560 に答える
15

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

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

于 2011-02-24T13:40:02.203 に答える