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