このエラーの原因は、一般的に次のいくつかの要素に関連している可能性があります。
- セッションの管理不備: データベースを削除する前に、データベースのセッションを明示的にクローズする必要があります。セッションを終了せずにデータベースを削除しようとすると、エラーが発生します。
例:
-- データベースのセッションを終了する
USE master;
GO
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- データベースをドロップする
USE master;
GO
DROP DATABASE [DatabaseName];
GO
- 別のセッションがデータベースに接続している: データベースにアクティブなセッションが存在する場合、データベースを削除することはできません。データベースに接続している他のユーザーまたはプロセスを確認し、それらの接続を終了させる必要があります。
例:
-- データベースに接続しているセッションを確認する
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
- データベースがトランザクション内で使用されている: データベースがアクティブなトランザクション内で使用されている場合、データベースを削除することはできません。すべてのトランザクションを完了またはロールバックさせる必要があります。
例:
-- すべてのトランザクションをロールバックさせる
USE master;
GO
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- データベースをドロップする
USE master;
GO
DROP DATABASE [DatabaseName];
GO