親愛なる私はSQLServer2008を使用しています。
私のWindowsアプリケーションには、すべてのデータベースのリストを含むコンボボックスがあります。
コンボボックスで選択したデータベースを削除したい。
しかし、クエリを実行すると、次の例外が発生します。
現在使用中のため、データベース「dm12」を削除できません
これがコードです
USE dm12
GO
DROP DATABASE dm12
GO
親愛なる私はSQLServer2008を使用しています。
私のWindowsアプリケーションには、すべてのデータベースのリストを含むコンボボックスがあります。
コンボボックスで選択したデータベースを削除したい。
しかし、クエリを実行すると、次の例外が発生します。
現在使用中のため、データベース「dm12」を削除できません
これがコードです
USE dm12
GO
DROP DATABASE dm12
GO
データベースを削除する場合は、最初にデータベースを使用してから、データベースmaster
を削除します。
交換
USE dm12
と
USE Master;
SQL ServerManagementStudioで同じデータベース接続を使用してクエリタブを開いていないことを確認してください。
それでも同じ例外が発生する場合は、SQL ServerManagementStudioを完全に閉じてください。もう一度開いて、通常どおり接続します
十分な権限があれば、次のコードでデータベースを正常に削除できることがほぼ保証されます。しかし、なぜデータベースをアプリケーション層から直接削除するのか、誰かが誤ってデータベースを削除してしまうリスクをどのように制御するのか....
データベースを単一ユーザーに変更してすぐにロールバックすると、すべての不完全なトランザクションがロールバックされ、dm12 データベースへのその他の接続がすぐに切断されます。
USE master;
GO
ALTER DATABASE dm12
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE dm12;
GO