DROP DATABASE (Transact-SQL)
1 つ以上のデータベースまたはデータベース スナップショットを SQL Server のインスタンスから削除します。
構文
DROP DATABASE { database_name | database_snapshot_name } [ ,...n ]
[;]
引数
database_name
削除するデータベースの名前を指定します。データベースの一覧を表示するには、sys.databases カタログ ビューを使用します。database_snapshot_name
削除するデータベース スナップショットの名前を指定します。
説明
DROP DATABASE を使用する場合には、接続のデータベース コンテキストを、削除するデータベースまたはデータベース スナップショットと同じにすることはできません。
DROP DATABASE ステートメントは、自動コミット モードで実行する必要があり、明示的または暗黙的なトランザクションでは許可されません。自動コミット モードは、既定のトランザクション管理モードです。詳細については、「トランザクションの自動コミット」を参照してください。
データベースの削除
システム データベースは削除できません。
データベースの削除では、SQL Server のインスタンスからデータベースを削除し、データベースにより使用される物理ディスク ファイルを削除します。削除の際にデータベースまたはディスク ファイルのいずれかがオフラインの場合、ディスク ファイルは削除されません。これらのファイルは Windows エクスプローラーを使用して手動で削除できます。データベース ファイルをファイル システムから削除せずにデータベースを現在のサーバーから削除するには、sp_detach_db を使用します。
使用中のデータベースは削除できません。使用中のデータベースとは、1 人以上のユーザーが読み込みまたは書き込みのため開いているデータベースです。データベースからそのユーザーを削除するには、ALTER DATABASE を使用して、データベースを SINGLE_USER に設定します。
データベースを削除する前に、そのデータベース上のすべてのデータベース スナップショットを削除する必要があります。
データベースがログ配布を使用している場合は、データベースを削除する前にログ配布を削除します。詳細については、「ログ配布の管理」を参照してください。
データベースは、オフライン、読み取り専用、未確認などの状態にかかわらず、削除することができます。データベースの現在の状態を表示するには、sys.databases カタログ ビューを使用します。
削除されたデータベースは、バックアップを復元することによってのみ、再作成できます。データベース スナップショットはバックアップできません。したがって復元もできません。
データベースを削除する場合は、master データベースのバックアップを作成する必要があります。
データベース スナップショットの削除
データベース スナップショットの削除では、SQL Server のインスタンスからデータベース スナップショットを削除し、スナップショットにより使用される物理的な NTFS ファイル システムのスパース ファイルを削除します。データベース スナップショットによるスパース ファイルの使用の詳細については、「データベース スナップショットの機能」を参照してください。
データベース スナップショットを削除すると、SQL Server のインスタンスのプラン キャッシュが消去されます。プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。プラン キャッシュ内のキャッシュストアが消去されるたびに、"SQL Server は、一部のデータベース メンテナンス操作または再構成操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました。" という情報メッセージが SQL Server エラー ログに記録されます。このメッセージは、キャッシュが 5 分以内にフラッシュされる場合に限り、その間隔でログに記録されます。
レプリケーションで使用されるデータベースの削除
トランザクション レプリケーションに対してパブリッシュされたデータベース、あるいは、マージ レプリケーションに対してパブリッシュまたはサブスクライブされたデータベースを削除するには、まず、データベースからレプリケーションを削除する必要があります。データベースからレプリケーションを削除する方法の詳細については、「レプリケーションの削除」を参照してください。データベースが損傷しているか、レプリケーションを最初に削除できない場合、またはその両方の場合でも、ALTER DATABASE を使用してデータベースをオフラインに設定してから削除すると、ほとんどの場合、データベースを削除できます。
権限
データベースに対する CONTROL 権限、ALTER ANY DATABASE 権限、または db_owner 固定データベース ロールのメンバーシップが必要です。
使用例
A. 1 つのデータベースを削除する
次の例では、データベース Sales を削除します。
DROP DATABASE Sales;
B. 複数のデータベースを削除する
次の例では、一覧表示された各データベースを削除します。
DROP DATABASE Sales, NewSales;
C. データベース スナップショットを削除する
次の例では、sales_snapshot0600 というデータベース スナップショットを、ソース データベースには影響を与えずに削除します。
DROP DATABASE sales_snapshot0600;