DROP DATABASE (Transact-SQL)DROP DATABASE (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

1 つ以上のユーザー データベースまたはデータベース スナップショットを SQL ServerSQL Server のインスタンスから削除します。Removes one or more user databases or database snapshots from an instance of SQL ServerSQL Server.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- SQL Server Syntax
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
-- Azure SQL Database, Azure Synapse Analytics and Analytics Platform System Syntax
DROP DATABASE database_name [;]

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

IF EXISTS 適用対象: SQL ServerSQL Server ( SQL Server 2016 (13.x) から 現在のバージョンまで)。IF EXISTS Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x) through current version).

条件付きでは既に存在する場合にのみ、データベースを削除します。Conditionally drops the database only if it already exists.

database_name 削除するデータベースの名前を指定します。database_name Specifies the name of the database to be removed. データベースの一覧を表示するには、sys.databases カタログ ビューを使用します。To display a list of databases, use the sys.databases catalog view.

database_snapshot_name 適用対象: SQL Server 2008SQL Server 2008 以降。database_snapshot_name Applies to: SQL Server 2008SQL Server 2008 and later.

削除するデータベース スナップショットの名前を指定します。Specifies the name of a database snapshot to be removed.

全般的な解説General Remarks

データベースは、オフライン、読み取り専用、未確認などの状態に関係なくドロップすることができます。A database can be dropped regardless of its state: offline, read-only, suspect, and so on. データベースの現在の状態を表示するには、sys.databases カタログ ビューを使用します。To display the current state of a database, use the sys.databases catalog view.

削除されたデータベースは、バックアップを復元することによってのみ、再作成できます。A dropped database can be re-created only by restoring a backup. データベース スナップショットはバックアップできません。したがって復元もできません。Database snapshots cannot be backed up and, therefore, cannot be restored.

データベースを削除する場合は、master データベースをバックアップする必要があります。When a database is dropped, the master database should be backed up.

データベースを削除すると、SQL ServerSQL Server のインスタンスからそのデータベースが削除され、そのデータベースで使用されている物理ディスク ファイルも削除されます。Dropping a database deletes the database from an instance of SQL ServerSQL Server and deletes the physical disk files used by the database. 削除の際にデータベースまたはディスク ファイルのいずれかがオフラインの場合、ディスク ファイルは削除されません。If the database or any one of its files is offline when it is dropped, the disk files are not deleted. これらのファイルは Windows エクスプローラーを使用して手動で削除できます。These files can be deleted manually by using Windows Explorer. ファイルをファイル システムから削除せずにデータベースを現在のサーバーから削除するには、sp_detach_db を使用します。To remove a database from the current server without deleting the files from the file system, use sp_detach_db.

警告

FILE_SNAPSHOT を持つデータベースを削除すると、関連付けられているバックアップは成功しますが、スナップショットが関連付けられているデータベース ファイルは、これらのデータベース ファイルを参照するバックアップの無効化を回避するためには削除されません。Dropping a database that has FILE_SNAPSHOT backups associated with it will succeed, but the database files that have associated snapshots will not be deleted to avoid invalidating the backups referring to these database files. ファイルは切り捨てられますが、FILE_SNAPSHOT のバックアップをそのままの状態に保つために物理的には削除されません。The file will be truncated, but will not be physically deleted in order to keep the FILE_SNAPSHOT backups intact. 詳細については、「Windows Azure BLOB ストレージ サービスを使用した SQL Server のバックアップと復元」を参照してください。For more information, see SQL Server Backup and Restore with Microsoft Azure Blob Storage Service. 適用対象: SQL Server 2016 (13.x) から 現在のバージョンまで。Applies to: SQL Server 2016 (13.x) through current version.

SQL ServerSQL Server

データベース スナップショットを削除すると、SQL ServerSQL Server のインスタンスからデータベース スナップショットが削除され、スナップショットで使用されている物理的な NTFS ファイル システムのスパース ファイルが削除されます。Dropping a database snapshot deletes the database snapshot from an instance of SQL ServerSQL Server and deletes the physical NTFS File System sparse files used by the snapshot. データベース スナップショットによるスパース ファイルの使用の詳細については、データベース スナップショットに関するページを参照してください。For information about using sparse files by database snapshots, see Database Snapshots. データベース スナップショットを削除すると、SQL ServerSQL Server のインスタンスのプラン キャッシュが消去されます。Dropping a database snapshot clears the plan cache for the instance of SQL ServerSQL Server. プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. プラン キャッシュ内のキャッシュストアが消去されるたびに、"SQL ServerSQL Server は、一部のデータベース メンテナンス操作または再構成操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました" という情報メッセージが SQL ServerSQL Server エラー ログに含まれます。For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". このメッセージは、5 分以内にキャッシュがフラッシュされる限り、5 分間隔でログに記録されます。This message is logged every five minutes as long as the cache is flushed within that time interval.

相互運用性Interoperability

SQL ServerSQL Server

トランザクション レプリケーションに対してパブリッシュされたデータベース、あるいは、マージ レプリケーションに対してパブリッシュまたはサブスクライブされたデータベースを削除するには、まず、データベースからレプリケーションを削除する必要があります。To drop a database published for transactional replication, or published or subscribed to merge replication, you must first remove replication from the database. データベースが損傷している場合またはレプリケーションを最初に削除できない場合、あるいはその両方の場合であっても、ALTER DATABASE を使用してデータベースをオフラインに設定してから削除すると、ほとんどの場合、データベースを削除できます。If a database is damaged or replication cannot first be removed or both, in most cases you still can drop the database by using ALTER DATABASE to set the database offline and then dropping it.

データベースがログ配布に関与している場合は、データベースを削除する前にログ配布を削除します。If the database is involved in log shipping, remove log shipping before dropping the database. 詳しくは、「 ログ配布について」をご覧ください。For more information, see About Log Shipping.

制限事項と制約事項Limitations and Restrictions

システム データベースは削除できません。System databases cannot be dropped.

DROP DATABASE ステートメントは、自動コミット モードで実行する必要があり、明示的または暗黙的なトランザクションでは許可されません。The DROP DATABASE statement must run in autocommit mode and is not allowed in an explicit or implicit transaction. 自動コミット モードは、既定のトランザクション管理モードです。Autocommit mode is the default transaction management mode.

使用中のデータベースは削除できません。You cannot drop a database currently being used. 使用中のデータベースとは、1 人以上のユーザーが読み込みまたは書き込みのために開いているデータベースです。This means open for reading or writing by any user. データベースからユーザーを削除するには、ALTER DATABASE を使用して、データベースを SINGLE_USER に設定する方法があります。One way to remove users from the database is to use ALTER DATABASE to set the database to SINGLE_USER.

警告

これは、任意のスレッドによる最初の連続する接続で SINGLE_USER スレッドを受け取り、接続できなくなるため、失敗しない方法です。This is not a fail-proof approach, since first consecutive connection made by any thread will receive the SINGLE_USER thread, causing your connection to fail. SQL Server では、負荷時にデータベースを削除する組み込みの方法は提供されていません。Sql server does not provide a built-in way to drop databases under load.

SQL ServerSQL Server

データベースを削除する前に、そのデータベース上のすべてのデータベース スナップショットを削除する必要があります。Any database snapshots on a database must be dropped before the database can be dropped.

Stretch データベースのデータベースの有効化を削除しても、リモートのデータは削除されません。Dropping a database enable for Stretch Database does not remove the remote data. リモートのデータを削除する場合は、手動で削除する必要があります。If you want to delete the remote data, you have to remove it manually.

Azure SQL データベースAzure SQL Database

データベースを削除するには、master データベースに接続する必要があります。You must be connected to the master database to drop a database.

DROP DATABASE ステートメントは SQL バッチ内の唯一のステートメントである必要があります。また、一度に削除できるデータベースは 1 つだけです。The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

Azure Synapse AnalyticsAzure Synapse Analytics

データベースを削除するには、master データベースに接続する必要があります。You must be connected to the master database to drop a database.

DROP DATABASE ステートメントは SQL バッチ内の唯一のステートメントである必要があります。また、一度に削除できるデータベースは 1 つだけです。The DROP DATABASE statement must be the only statement in a SQL batch and you can drop only one database at a time.

アクセス許可Permissions

SQL ServerSQL Server

データベースの CONTROL 権限、ALTER ANY DATABASE 権限、または db_owner 固定データベース ロールのメンバーシップが必要です。Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

Azure SQL データベースAzure SQL Database

データベースを削除できるのは、(プロビジョニング プロセスによって作成される) サーバーレベル プリンシパルのログイン、または dbmanager データベース ロールのメンバーだけです。Only the server-level principal login (created by the provisioning process) or members of the dbmanager database role can drop a database.

Parallel Data WarehouseParallel Data Warehouse

データベースの CONTROL 権限、ALTER ANY DATABASE 権限、または db_owner 固定データベース ロールのメンバーシップが必要です。Requires the CONTROL permission on the database, or ALTER ANY DATABASE permission, or membership in the db_owner fixed database role.

Examples

A.A. 1 つのデータベースを削除するDropping a single database

次の例では、Sales データベースを削除します。The following example removes the Sales database.

DROP DATABASE Sales;

B.B. 複数のデータベースを削除するDropping multiple databases

適用対象: SQL Server 2008SQL Server 2008 以降。Applies to: SQL Server 2008SQL Server 2008 and later.

次の例では、一覧表示された各データベースを削除します。The following example removes each of the listed databases.

DROP DATABASE Sales, NewSales;

C.C. データベース スナップショットを削除するDropping a database snapshot

適用対象: SQL Server 2008SQL Server 2008 以降。Applies to: SQL Server 2008SQL Server 2008 and later.

次の例では、sales_snapshot0600 というデータベース スナップショットを、ソース データベースには影響を与えずに削除します。The following example removes a database snapshot, named sales_snapshot0600, without affecting the source database.

DROP DATABASE sales_snapshot0600;

参照See Also