DROP DATABASE (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Rimuove uno o più database o snapshot di database da un'istanza di SQL Server.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

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.

Osservazioni

Per utilizzare DROP DATABASE, il contesto del database della connessione non può essere lo stesso del database o dello snapshot del database da rimuovere.

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. Per ulteriori informazioni, vedere Transazioni con autocommit.

Rimozione di un database

I database di sistema non possono essere eliminati.

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 non è in linea 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.

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.

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

Se il database è coinvolto nella distribuzione dei log, rimuovere la distribuzione dei log prima di eliminare il database. Per ulteriori informazioni, vedere Distribuzione dei log.

Un database può essere rimosso a prescindere dallo stato: non in linea, 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.

Rimozione di uno snapshot di database

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 Funzionamento degli snapshot del database.

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 temporaneo peggioramento delle prestazioni di esecuzione delle query. In SQL Server 2005 Service Pack 2 il log degli errori di SQL Server contiene il messaggio informativo seguente per ogni archivio cache cancellato nella cache dei piani: "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 tutta la durata dello scaricamento della cache.

Rimozione di un database utilizzato nelle repliche

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. Per ulteriori informazioni su come rimuovere la replica da un database, vedere Rimozione della replica. Se un database è danneggiato o non è possibile rimuovere prima la replica, o quando si verificano entrambe le situazioni, nella maggior parte dei casi è comunque possibile eliminare il database tramite ALTER DATABASE per impostare il database non in linea e quindi rimuoverlo.

Autorizzazioni

Per eseguire DROP DATABASE, un utente deve disporre almeno dell'autorizzazione CONTROL per il database.

Esempi

A. Rimozione di un singolo database

Nell'esempio seguente viene rimosso il database Sales.

DROP DATABASE Sales;

B. Rimozione di più database

Nell'esempio seguente vengono rimossi tutti i database elencati.

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.

DROP DATABASE sales_snapshot0600;

Vedere anche

Riferimento

ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.databases (Transact-SQL)

Altre risorse

Eliminazione di un database
Rimozione di uno snapshot del database

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta di informazioni sulla cancellazione della cache dei piani nella sezione "Rimozione di uno snapshot di database".

17 luglio 2006

Nuovo contenuto:
  • Aggiunta del riferimento all'utilizzo di sp_detach_db come alternativa per la rimozione di un database.