データベースエラー: 現在オープンされているデータベースをドロップできません


このエラーの原因は、一般的に次のいくつかの要素に関連している可能性があります。

  1. セッションの管理不備: データベースを削除する前に、データベースのセッションを明示的にクローズする必要があります。セッションを終了せずにデータベースを削除しようとすると、エラーが発生します。

例:

-- データベースのセッションを終了する
USE master;
GO
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- データベースをドロップする
USE master;
GO
DROP DATABASE [DatabaseName];
GO
  1. 別のセッションがデータベースに接続している: データベースにアクティブなセッションが存在する場合、データベースを削除することはできません。データベースに接続している他のユーザーまたはプロセスを確認し、それらの接続を終了させる必要があります。

例:

-- データベースに接続しているセッションを確認する
USE master;
GO
SELECT * FROM sys.sysprocesses WHERE DB_NAME(dbid) = 'DatabaseName';
-- 特定のセッションを終了させる
USE master;
GO
KILL [session_id];
-- データベースをドロップする
USE master;
GO
DROP DATABASE [DatabaseName];
GO
  1. データベースがトランザクション内で使用されている: データベースがアクティブなトランザクション内で使用されている場合、データベースを削除することはできません。すべてのトランザクションを完了またはロールバックさせる必要があります。

例:

-- すべてのトランザクションをロールバックさせる
USE master;
GO
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- データベースをドロップする
USE master;
GO
DROP DATABASE [DatabaseName];
GO