Come forzare il rilascio del database in SQL Server 2008


68

Sto cercando di forzare l'eliminazione di un database, ma dopo averlo eliminato, quando provo a ricreare il database, visualizzo l'errore

impossibile creare il file C: \ Programmi ..... [nomefile] .mdf perché esiste già

Ecco la mia domanda per forzare l'eliminazione del database

Use master;
ALTER database [databasename] set offline with ROLLBACK IMMEDIATE;
DROP database [databasename];

Ho capito che la query sopra sta eliminando il database, ma non sta eliminando i file .ldfe .mdf. Come eliminare completamente il database?

Una query normale

Drop database [databasename] ; //deletes the database completely, including the ldf and mdf's.

Come forzare l'eliminazione di un database, che elimina anche i file .mdfe .ldf?

Risposte:


116

Questo è un comportamento previsto e documentato :

Il rilascio di un database elimina il database da un'istanza di SQL Server ed elimina i file del disco fisico utilizzati dal database. Se il database o uno dei suoi file non è in linea quando viene eliminato, i file del disco non vengono eliminati. Questi file possono essere eliminati manualmente utilizzando Esplora risorse. Per rimuovere un database dal server corrente senza eliminare i file dal file system, utilizzare sp_detach_db.

Quindi perché stai portando prima offline il tuo database? Basta impostarlo in SINGLE_USERmodalità e quindi rilasciarlo come documentato nella documentazione online di SQL Server. -

USE master;
ALTER DATABASE [databasename] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [databasename] ;

Nota, i backup del database non verranno eliminati come parte del processo sopra documentato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.