Condividi tramite


DROP DATABASE (Transact-SQL)

Rimuove uno o più database utente o snapshot di database da un'istanza di SQL Server o più database utente dal server SQL Database di Windows Azure.

Si applica a: SQL Server (da SQL Server 2008 fino alla versione corrente), SQL Database di Windows Azure (dalla versione iniziale fino alla versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

-- 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 [;]

Argomenti

  • database_name
    Specifica il nome del database da rimuovere. Per visualizzare un elenco di database, utilizzare la vista del catalogo sys.databases.

  • database_snapshot_name
    Specifica il nome di uno snapshot del database da rimuovere.

    Si applica a: Solo SQL Server.

Osservazioni generali

Core

Un database può essere rimosso indipendentemente dallo stato: offline, di sola lettura, sospetto e così via. Per visualizzare lo stato corrente di un database, utilizzare la vista del catalogo sys.databases.

È possibile ricreare un database rimosso solo tramite il ripristino di un backup. Non è possibile eseguire il backup degli snapshot di un database e, di conseguenza, non è possibile ripristinarli.

Dopo la rimozione di un database, è necessario eseguire il backup del database master.

SQL Server

La rimozione di un database comporta l'eliminazione del database in un'istanza di SQL Server e dei relativi file su disco utilizzati. Se il database o uno dei relativi file è offline quando viene rimosso, i file su disco non vengono eliminati. Questi file possono essere eliminati manualmente tramite Esplora risorse. Per rimuovere un database dal server corrente senza eliminare i file dal file system, utilizzare sp_detach_db.

La rimozione di uno snapshot di database comporta l'eliminazione dello snapshot del database in un'istanza di SQL Server e dei file sparse fisici del file system NTFS utilizzati dallo snapshot. Per informazioni sull'utilizzo dei file sparse da parte degli snapshot di database, vedere Snapshot del database (SQL Server). La rimozione di uno snapshot del database comporta la cancellazione della cache dei piani per l'istanza di SQL Server. La cancellazione della cache dei piani comporta la ricompilazione di tutti i piani di esecuzione successivi e può causare un improvviso peggioramento temporaneo delle prestazioni di esecuzione delle query. Per ogni archivio cache cancellato nella cache dei piani, il log degli errori di SQL Server contiene il seguente messaggio informativo: "SQL Server ha rilevato %d occorrenza/e di scaricamento dell'archivio cache '%s' (parte della cache dei piani) a causa di operazioni di manutenzione o riconfigurazione del database". Questo messaggio viene registrato ogni cinque minuti per l'intervallo di tempo necessario allo scaricamento della cache.

SQL Database di Windows Azure

La rimozione di un database comporta l'eliminazione del database in un'istanza di SQL Server e dei relativi file su disco utilizzati. Se il database o uno dei relativi file è offline quando viene rimosso, i file su disco non vengono eliminati. Questi file possono essere eliminati manualmente tramite Esplora risorse. Per rimuovere un database dal server corrente senza eliminare i file dal file system, utilizzare sp_detach_db.

Un database può essere rimosso indipendentemente dallo stato: offline, di sola lettura, sospetto e così via. Per visualizzare lo stato corrente di un database, utilizzare la vista del catalogo sys.databases.

Interoperabilità

SQL Server

Per rimuovere un database pubblicato per la replica transazionale, o pubblicato o sottoscritto per la replica di tipo merge, è necessario innanzitutto rimuovere la replica dal database. Se un database è danneggiato, se non è possibile rimuovere prima la replica o se si verificano entrambe le situazioni, nella maggior parte dei casi è comunque possibile eliminare il database tramite ALTER DATABASE per impostarlo offline e, successivamente, rimuoverlo.

Se il database è coinvolto nel log shipping, rimuovere quest'ultimo prima di eliminare il database. Per ulteriori informazioni, vedere Informazioni sul log shipping (SQL Server).

SQL Database di Windows Azure

Nessuno

Limitazioni e restrizioni

Core

I database di sistema non possono essere eliminati.

L'istruzione DROP DATABASE deve essere eseguita in modalità autocommit e non è consentita in una transazione esplicita o implicita. La modalità autocommit è la modalità predefinita per la gestione delle transazioni.

Non è possibile rimuovere un database in uso, ovvero aperto per la lettura o la scrittura da parte di un utente. Per rimuovere gli utenti dal database, utilizzare ALTER DATABASE per impostare il database su SINGLE_USER.

SQL Server

Prima di poter rimuovere un database, è necessario eliminare tutti gli snapshot del database.

SQL Database di Windows Azure

È necessario essere connessi al database master per eliminare un database.

L'istruzione DROP DATABASE deve essere l'unica istruzione in un batch SQL ed è possibile eliminare un solo database alla volta.

Autorizzazioni

SQL Server

È richiesta l'autorizzazione CONTROL per il database, l'autorizzazione ALTER ANY DATABASE o l'appartenenza al ruolo predefinito del database db_owner.

SQL Database di Windows Azure

Solo l'account di accesso dell'entità a livello di server (creato dal processo di provisioning) o i membri del ruolo del database dbmanager possono eliminare un database.

Esempi

A. Rimozione di un singolo database

Nell'esempio seguente viene rimosso il database Sales.

Si applica a: SQL Server e SQL Database di Windows Azure

DROP DATABASE Sales;

B. Rimozione di più database

Nell'esempio seguente vengono rimossi tutti i database elencati.

Si applica a: SQL Server

DROP DATABASE Sales, NewSales;

C. Rimozione di uno snapshot di database

Nell'esempio seguente viene rimosso uno snapshot di database, denominato sales_snapshot0600, senza influire sul database di origine.

Si applica a: SQL Server

DROP DATABASE sales_snapshot0600;

Vedere anche

Riferimento

ALTER DATABASE (Transact-SQL)

CREATE DATABASE (Transact-SQL)

EVENTDATA (Transact-SQL)

sys.databases (Transact-SQL)