【SQLServer】データベース’○○’は現在使用中なので削除できません 解決方法

ある日、データベースを削除するため、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

今度は、うまく削除できるでしょう。

めでたしめでたし。