Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Odstraní jednu nebo více uživatelských databází nebo snímků databáze z instance Databázový stroj systému SQL Server.
Syntax
Syntaxe SQL Server.
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ]
[ ; ]
Azure SQL Database, Azure Synapse Analytics a Analytics Platform System syntax.
DROP DATABASE database_name
[ ; ]
Arguments
POKUD EXISTUJE
platí pro: SQL Server 2016 (13.x) a novější verze
Podmíněně zruší databázi pouze pokud už existuje.
database_name
Specifikuje název databáze, která má být odstraněna. Pro zobrazení seznamu databází použijte katalogový pohled sys.databases .
database_snapshot_name
Specifikuje název snímku databáze, který má být odstraněn.
Remarks
Databáze může být odstraněna bez ohledu na její stav: offline, pouze pro čtení, podezřelá a podobně. Pro zobrazení aktuálního stavu databáze použijte sys.databases katalogový pohled.
Ztracenou databázi lze znovu vytvořit pouze obnovením zálohy. Snímky databáze nelze zálohovat, a tedy je nelze obnovit.
Když je databáze odstraněna, hlavní databáze by měla být zálohována.
Vyhození databáze smaže databázi z instance SQL Server a smaže fyzické diskové soubory používané databází. Pokud je databáze nebo některý z jejích souborů při ztrátě offline, diskové soubory se nemažou. Tyto soubory lze ručně smazat pomocí správce souborů, jako je Průzkumník souborů. Pro odstranění databáze ze současného serveru bez mazání souborů ze souborového systému použijte sp_detach_db.
Warning
V SQL Server 2016 (13.x) a novějších verzích bude úspěšné vyřadit databázi, která obsahuje FILE_SNAPSHOT zálohy, ale databázové soubory s přidruženými snapshoty nebudou smazány, aby se zabránilo zneplatnění záloh odkazujících na tyto databázové soubory. Soubor bude zkrácen, ale fyzicky nebude smazán, aby zálohy zůstaly FILE_SNAPSHOT neporušené. Pro více informací viz SQL Server zálohování a obnova s Azure Blob Storage.
SQL Server
Vypuštěním snímku databáze se smaže snímek z instance SQL Server a smaže se řídké soubory fyzického NTFS souborového systému, které snapshot používá. Pro informace o využití řídkých souborů pomocí snímků databáze viz Database snapshots (SQL Server). Vypuštění snímku databáze vymaže záznamy v plánové cache spojené se snímkem databáze, nikoli celou instanci. Vymazání mezipaměti plánu způsobí rekompilace všech následných plánů spuštění a může způsobit náhlé dočasné snížení výkonu dotazů.
Pro každý vymazaný cachestore v plánové cache obsahuje chybový log SQL Server následující informační zprávu. Tato zpráva se protokoluje každých pět minut, dokud se mezipaměť vyprázdní v daném časovém intervalu.
SQL 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.
Interoperability
SQL Server
Chcete-li odstranit databázi publikovanou pro transakční replikaci, nebo publikovanou či předplacenou pro replikaci sloučení, musíte nejprve replikaci z databáze odstranit. Pokud je databáze poškozená, nebo replikace nejdřív může být odstraněna (nebo obojí), ve většině případů můžete databázi stále zrušit tak, že ji použijete ALTER DATABASE na offline a pak ji odložíte.
Pokud je databáze zapojena do přepravy logů, odstraňte odeslání logů před ukončením databáze. Další informace naleznete v tématu o log shippingu (SQL Server).
Limitations
Systémové databáze nelze zrušit.
Příkaz DROP DATABASE musí běžet v režimu automatického závazku a není povolen v explicitní ani implicitní transakci. Režim automatického potvrzení je výchozí režim správy transakcí.
Warning
Nemůžeš zrušit databázi, která je právě používána. To znamená, že zámky musí být drženy pro čtení nebo zápis jakýmkoli uživatelem. Jedním ze způsobů, jak uživatele z databáze odstranit, je ALTER DATABASE nastavit databázi na SINGLE_USER. V této strategii byste měli vykonávat and ALTER DATABASEDROP DATABASE ve stejné dávce, abyste předešli dalšímu připojení, které by tvrdilo, že je relace pro jednoho uživatele povolena. Pro více informací viz Příklad D.
SQL Server
Jakékoli snímky databáze v databázi musí být nejprve odstraněny, než může být databáze odstraněna.
Zrušení povolení databáze pro Stretch Database vzdálená data neodstraní. Pokud chcete vzdálená data smazat, musíte je odstranit ručně.
Important
Funkce Stretch Database je v SQL Serveru 2022 (16.x) a Azure SQL Database zastaralá. Tato funkce bude odebrána v budoucí verzi databázového stroje. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
Azure SQL Database
Musíte být připojeni k databázi master , abyste mohli databázi ztratit.
Příkaz DROP DATABASE musí být jediným příkazem v SQL dávkování a můžete najednou vyhodit jen jednu databázi.
Azure Synapse Analytics
Musíte být připojeni k databázi master , abyste mohli databázi ztratit.
Příkaz DROP DATABASE musí být jediným příkazem v SQL dávkování a můžete najednou vyhodit jen jednu databázi.
Permissions
SQL Server
Vyžaduje oprávnění CONTROL k databázi, ALTER ANY DATABASE oprávnění nebo členství v db_owner pevné databázové roli.
Azure SQL Database
Databázi mohou zbavit pouze hlavní přihlášení na úrovni serveru (vytvořené procesem provisioningu) nebo členové databázové role dbmanager .
PdW (Analytics Platform System)
Vyžaduje oprávnění CONTROL k databázi, ALTER ANY DATABASE oprávnění nebo členství v db_owner pevné databázové roli.
Examples
A. Zrušte jednu databázi
Následující příklad databázi Sales odstraní.
DROP DATABASE Sales;
B. Zrušte více databází
Následující příklad odstraní každou z uvedených databází.
DROP DATABASE Sales, NewSales;
C. Vložte snímek databáze
Následující příklad odstraní snímek databáze s názvem sales_snapshot0600, aniž by ovlivnil zdrojovou databázi.
DROP DATABASE sales_snapshot0600;
D. Zrušte databázi poté, co zkontrolujete, zda existuje
Následující příklad nejprve ověřuje, zda existuje databáze s názvem Sales E. Pokud ano, příklad změní databázi pojmenovanou Sales do režimu jednoho uživatele, aby vynutil odpojení všech ostatních relací, a databázi pak ukončí. Pro více informací o SINGLE_USER viz ALTER DATABASE SET možnosti.
USE tempdb;
GO
DECLARE @SQL AS NVARCHAR (1000);
IF EXISTS (SELECT 1
FROM sys.databases
WHERE [name] = N'Sales')
BEGIN
SET @SQL = N'USE [Sales];
ALTER DATABASE Sales SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
USE [tempdb];
DROP DATABASE Sales;';
EXECUTE (@SQL);
END