-4

親愛なる私はSQLServer2008を使用しています。

私のWindowsアプリケーションには、すべてのデータベースのリストを含むコンボボックスがあります。

コンボボックスで選択したデータベースを削除したい。

しかし、クエリを実行すると、次の例外が発生します。

現在使用中のため、データベース「dm12」を削除できません

これがコードです

 USE dm12
 GO
 DROP DATABASE dm12
 GO
4

2 に答える 2

2

データベースを削除する場合は、最初にデータベースを使用してから、データベースmasterを削除します。

交換

USE dm12

USE Master;

SQL ServerManagementStudioで同じデータベース接続を使用してクエリタブを開いていないことを確認してください。

それでも同じ例外が発生する場合は、SQL ServerManagementStudioを完全に閉じてください。もう一度開いて、通常どおり接続します

于 2013-03-16T05:25:15.730 に答える
0

十分な権限があれば、次のコードでデータベースを正常に削除できることがほぼ保証されます。しかし、なぜデータベースをアプリケーション層から直接削除するのか、誰かが誤ってデータベースを削除してしまうリスクをどのように制御するのか....

データベースを単一ユーザーに変更してすぐにロールバックすると、すべての不完全なトランザクションがロールバックされ、dm12 データベースへのその他の接続がすぐに切断されます。


    USE master;
    GO
    ALTER DATABASE dm12
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;
    GO
    DROP DATABASE dm12;
    GO

于 2013-03-16T08:05:53.733 に答える