DROP DATABASE (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Eltávolít egy vagy több felhasználói adatbázist vagy adatbázis pillanatképet az SQL Server adatbázismotor egyik példányából.

Transact-SQL szintaxis konvenciók

Syntax

SQL Server szintaxis.

DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ]
[ ; ]

Azure SQL Database, Azure Synapse Analytics ja Analytics Platform System syntax.

DROP DATABASE database_name
[ ; ]

Arguments

HA LÉTEZIK

Vonatkozik: SQL Server 2016 (13.x) és újabb verziók

Feltételesen csak akkor ejti el az adatbázist, ha már létezik.

database_name

Megadja az eltávolítandó adatbázis nevét. Az adatbázisok listájának megjelenítéséhez használja a sys.databases katalógus nézetet.

database_snapshot_name

Megadja az adatbázis pillanatképének nevét, amelyet törölni kell.

Remarks

Egy adatbázis függetlenül eltávolítható állapotától: offline, csak olvasható, gyanús és így tovább. Az adatbázis aktuális állapotának megjelenítéséhez használja a sys.databases katalógus nézetet.

Egy kidobott adatbázis csak egy biztonsági mentés visszaállításával hozható létre újra. Az adatbázis pillanatképek nem menthetők le, ezért nem lehet visszaállítani.

Amikor egy adatbázist kiesnek, a fő adatbázist le kell menteni.

Az adatbázis eltávolítása törli az adatbázist az SQL Server egy példányáról, és törli az adatbázis által használt fizikai lemezfájlokat. Ha az adatbázis vagy bármelyik fájlja offline van, amikor elengedik, a lemezfájlok nem törülnek. Ezeket a fájlokat manuálisan törölhetjük egy fájlkezelővel, például a Fájlkezelővel. Ha eltávolítani akarsz adatbázist a jelenlegi szerverről anélkül, hogy törölnéd a fájlokat, használd a sp_detach_db-t.

Warning

Az SQL Server 2016 (13.x) és későbbi verziókban sikeres lesz egy olyan adatbázis eltávolítása, amelyhez FILE_SNAPSHOT biztonsági mentések tartoznak, de a kapcsolódó pillanatképeket tartalmazó adatbázis-fájlokat nem töröljük, hogy elkerüljék az ezekre az adatbázis-fájlokra vonatkozó biztonsági mentések érvénytelenítését. A fájlt lerövidítik, de fizikailag nem törlik, hogy a FILE_SNAPSHOT biztonsági mentések érintetlenek maradjanak. További információért lásd: SQL Server backup and restore with Azure Blob Storage.

SQL Server

Az adatbázis snapshot eldobása törli az SQL Server egyik példányából származó adatbázis snapshotját, és törli a snapshot által használt fizikai NTFS fájlrendszer ritka fájljait. A ritka fájlok adatbázis-pillanatképek használatával kapcsolatos információkért lásd: Adatbázis snapshotok (SQL Server). Az adatbázis pillanatkép eldobása törli a bejegyzéseket a tervgyorsítótárból, amely az adatbázis snapshotjához tartozik, nem az egész példányból. A tervgyorsítótár törlése az összes későbbi végrehajtási terv újrafordítását okozza, és a lekérdezési teljesítmény hirtelen, átmeneti csökkenését okozhatja.

Minden kiürített cachestore-re a terv gyorsítótárában az SQL Server hibanaplója tartalmazza a következő információs üzenetet. Ezt az üzenetet öt percenként naplózza a rendszer, amíg a gyorsítótárat az adott időintervallumon belül kiüríti a rendszer.

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.

Interoperabilitás

SQL Server

Ha egy tranzakciós replikációra közzétett adatbázist vagy merge replikációra előrendelt adatbázist kell eltávolítani, először el kell távolítanod a replikációt az adatbázisból. Ha egy adatbázis sérült, vagy a replikációt nem lehet először eltávolítani (vagy mindkettő), a legtöbb esetben még mindig el lehet ejteni az adatbázist úgy ALTER DATABASE , hogy offline lesz, majd lezárod.

Ha az adatbázis részt vesz a napló szállításában, távolítsd el a napló szállítását, mielőtt ledobnád az adatbázist. További információt a Napló áttelepítése (SQL Server)témakörben talál.

Limitations

A rendszeradatbázisokat nem lehet megszüntetni.

Az állításnak DROP DATABASE automatikus commitási módban kell futnia, és nem engedélyezett explicit vagy implicit tranzakcióban. Az automatikus kötelező mód az alapértelmezett tranzakciókezelési mód.

Warning

Nem lehet kidobni egy jelenleg használt adatbázist. Ez azt jelenti, hogy bármely felhasználó zárat tart olvasás vagy írás céljából. Az egyik módja annak, hogy eltávolítsd a felhasználókat az adatbázisból, ALTER DATABASE ha SINGLE_USER-re állítod be az adatbázist. Ebben a stratégiában a és DROP DATABASE rendszert ugyanabban a kötetben kell végrehajtaniALTER DATABASE, hogy elkerüld a másik kapcsolatot, amely egy felhasználós ülés engedélyezettségét állítja. További információért lásd D példát.

SQL Server

Az adatbázis bármely pillanatképét el kell hagyni, mielőtt az adatbázist eltávolíthatnánk.

Ha egy adatbázis engedélyezett lenne a Stretch Database-ben, nem távolítja el a távoli adatokat. Ha törölni akarod a távoli adatokat, manuálisan kell eltávolítanod.

Important

A Stretch Database elavult az SQL Server 2022 -ben (16.x) és az Azure SQL Database-ben. Ez a funkció az adatbázismotor egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.

Azure SQL Database

Ahhoz, hogy az adatbázist elengedje, csatlakoznod kell master az adatbázishoz.

Az utasításnak DROP DATABASE kell lennie az egyetlen utasításnak egy SQL batchben, és egyszerre csak egy adatbázist lehet kidobni.

Azure Synapse Analytics

Ahhoz, hogy az adatbázist elengedje, csatlakoznod kell master az adatbázishoz.

Az utasításnak DROP DATABASE kell lennie az egyetlen utasításnak egy SQL batchben, és egyszerre csak egy adatbázist lehet kidobni.

Permissions

SQL Server

Megköveteli az CONTROL adatbázis engedélyét, ALTER ANY DATABASE vagy a db_owner fix adatbázis szerepének tagságát.

Azure SQL Database

Csak a szerverszintű fő bejelentkezés (amelyet a provisioning folyamat hozott létre) vagy a dbmanager adatbázis szerepének tagjai dobhatnak el adatbázist.

Elemzési platformrendszer (PDW)

Megköveteli az CONTROL adatbázis engedélyét, ALTER ANY DATABASE vagy a db_owner fix adatbázis szerepének tagságát.

Examples

A. Egyetlen adatbázis eltávolítása

A következő példa eltávolítja az adatbázist Sales .

DROP DATABASE Sales;

B. Több adatbázis eltávolítása

A következő példa eltávolítja az összes felsorolt adatbázist.

DROP DATABASE Sales, NewSales;

C. Dobj ki egy adatbázis-pillanatképet

A következő példa eltávolít egy adatbázis pillanatképet, amelynek neve sales_snapshot0600, anélkül, hogy befolyásolná a forrás adatbázist.

DROP DATABASE sales_snapshot0600;

D. Dobj el egy adatbázist, miután ellenőrizte, létezik-e

A következő példa először ellenőrzi, hogy létezik-e nevű Sales adatbázis. Ha igen, a példa megváltoztatja az adatbázis nevét Sales egyfelhasználós módra, hogy minden más munkamenetet leszakítson, majd kiesik az adatbázis. További információért SINGLE_USER a lehetőségek megtekintéseALTER DATABASE SET.

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