1. ホーム
  2. sql

[解決済み] SQLスクリプトで「既存の接続を閉じる」を指定する方法

2022-04-23 07:13:35

質問

SQL Server 2008でスキーマのアクティブな開発を行っており、頻繁にデータベースのドロップ/作成スクリプトを再実行したいと思います。その際

USE [master]
GO

IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO

よくこんなエラーが出ます。

Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.

オブジェクトエクスプローラーペインでデータベースを右クリックし、コンテキストメニューから「Delete task」を選択すると、「close existing connections"」というチェックボックスがあります。

このオプションをスクリプトで指定する方法はありますか?

どのように解決するのですか?

全員の接続を解除し、トランザクションをロールバックすることができます。

alter database [MyDatbase] set single_user with rollback immediate

この後、データベースを安全に削除することができます :)