ある日、データベースを削除するため、DROP DATABASE文を実行
DROP DATABASE 〇〇
go
すると。。。
データベース'〇〇'は現在使用中なので削除できません
となり、削除できません。
削除対象のデータベースが接続されているため、削除ができなくなっているのです。
そこで、本記事では、コマンドライン上で強制的に削除する方法を紹介します。
本記事では、SQLServerを対象にしています。他のリレーショナルデータベースとは異なる可能性があります。
解決方法
以下のコマンドを実行します。
ALTER DATABASE 〇〇
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE ○○
データベース○○に対する変更を行うコマンドです。
SET SINGLE_USER
シングルユーザモードに設定します。
シングルユーザモードは、同時に複数のユーザがデータベース接続できなくします。つまり他のユーザの接続を切断します。
WITH ROOLBACK IMMEDIATE
現在のトランザクションを即座にロールバックします。
つまり、他のユーザでSQL文が実行されている場合、その処理を中止させ、SQL文が実行される前に戻すことを意味します。
この操作でシングルユーザモードへの切り替えを確実にしています。
このコマンドで自分以外のユーザの接続を切断したため、削除できるはずです。
もう一度、DROP DATABASEコマンドを実行します。
DROP DATABASE 〇〇
go
今度は、うまく削除できるでしょう。
めでたしめでたし。