DROP DATABASE (Transact-SQL)

從 SQL Server 的執行個體中移除一個或多個使用者資料庫或資料庫快照集,或從 Windows Azure SQL Database 伺服器中移除使用者資料庫。

適用於:SQL Server (目前版本 中的 SQL Server 2008)、Windows Azure SQL Database (目前版本中第一次發行的版本)。

主題連結圖示 Transact-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 次快取存放區排清。」只要在該時間間隔內快取發生排清,這個訊息就會每五分鐘記錄一次。

Windows Azure SQL Database

卸除資料庫時,不但會從 SQL Server 執行個體中刪除該資料庫,同時也會刪除該資料庫所用的實體磁碟檔。如果資料庫或其任何一個檔案在卸除時離線,磁碟檔就不會被刪除。這些檔案可以利用 [Windows 檔案總管],以手動方式刪除。若要從目前伺服器中移除資料庫而不刪除在檔案系統中的檔案,請使用 sp_detach_db

無論資料庫的狀態為何,都可予刪除:離線、唯讀、有疑問,依此類推。若要顯示資料庫的目前狀態,請使用 sys.databases 目錄檢視。

互通性

SQL Server

若要卸除針對異動複寫而發行的資料庫,或是針對合併式複寫而發行或訂閱的資料庫,必須先從該資料庫移除複寫。如果資料庫損毀,或者無法先移除複寫,或者兩種情況都有,多半還是能夠卸除資料庫,方法是利用 ALTER DATABASE,將資料庫設為離線,然後再卸除它。

如果資料庫有涉及記錄傳送,請在卸除資料庫之前移除記錄傳送。如需詳細資訊,請參閱<關於記錄傳送 (SQL Server)>。

Windows Azure SQL Database

限制事項

核心

系統資料庫是無法卸除的。

DROP DATABASE 陳述式必須執行自動認可模式,且不能在明確或隱含的交易中。自動認可模式是預設的交易管理模式。

您無法卸除目前正在使用的資料庫。也就是開放給任何使用者讀取或寫入的資料庫。若要從資料庫移除使用者,請使用 ALTER DATABASE,將資料庫設為 SINGLE_USER。

SQL Server

在卸除資料庫之前,必須先卸除該資料庫上的任何資料庫快照集。

Windows Azure SQL Database

您必須連接至 master 資料庫,才能卸除資料庫。

DROP DATABASE 陳述式必須是 SQL 批次中的唯一陳述式,而且您一次只能卸除一個資料庫。

權限

SQL Server

需要資料庫的 CONTROL 權限,或是 ALTER ANY DATABASE 權限,或 db_owner 固定資料庫角色的成員資格。

Windows Azure SQL Database

只有伺服器層級主體登入 (由佈建程序所建立) 或 dbmanager 資料庫角色成員可以卸除資料庫。

範例

A. 卸除一個資料庫

下列範例會移除 Sales 資料庫。

適用於:SQL Server 和Windows Azure SQL Database

DROP DATABASE Sales;

B. 卸除多個資料庫

下列範例會移除每一個列出的資料庫。

適用於:SQL Server

DROP DATABASE Sales, NewSales;

C. 卸除資料庫快照集

下列範例會移除名為 sales_snapshot0600 的資料庫快照集,而不會影響來源資料庫。

適用於: SQL Server

DROP DATABASE sales_snapshot0600;

請參閱

參考

ALTER DATABASE (Transact-SQL)

CREATE DATABASE (Transact-SQL)

EVENTDATA (Transact-SQL)

sys.databases (Transact-SQL)