DROP DATABASE (Transact-SQL)

Supprime un ou plusieurs bases de données ou instantanés de base de données à partir d'une instance de SQL Server. 

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

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

Arguments

  • database_name
    Spécifie le nom de la base de données à supprimer. Pour afficher une liste des bases de données, utilisez la vue de catalogue sys.databases.

  • database_snapshot_name
    Spécifie le nom d'un instantané de base de données à supprimer.

Notes

Pour utiliser l'instruction DROP DATABASE, le contexte de base de données de la connexion ne peut pas être identique à la base de données ou à l'instantané de base de données à supprimer.

L'instruction DROP DATABASE doit être exécutée en mode autocommit et elle n'est pas autorisée dans une transaction implicite ou explicite. Le mode autocommit est le mode par défaut pour la gestion des transactions. Pour plus d'informations, consultez Transactions en mode autocommit.

Suppression d'une base de données

Les bases de données système ne peuvent pas être supprimées.

Si vous supprimez une base de données, celle-ci l'est également dans une instance de SQL Server. Il en est de même pour les fichiers disque physiques utilisés par la base de données. Si la base de données ou l'un de ses fichiers est hors connexion lors de la suppression, les fichiers disque ne sont pas supprimés. Ces fichiers peuvent être supprimés manuellement à l'aide de l'Explorateur Windows. Pour supprimer une base de données du serveur actif sans supprimer les fichiers du système de fichiers, utilisez sp_detach_db.

Vous ne pouvez pas supprimer une base de données en cours d'utilisation, c'est-à-dire ouverte par un utilisateur pour une opération de lecture ou d'écriture. Pour supprimer des utilisateurs de la base de données, utilisez ALTER DATABASE pour affecter à la base de données la valeur SINGLE_USER.

Les instantanés de base de données doivent être supprimés avant que la base de données ne soit supprimée.

Si la base de données intervient dans l'envoi de journaux, supprimez l'envoi de journaux avant de supprimer la base de données. Pour plus d'informations, consultez Administration de la copie des journaux de transaction.

Une base de données peut être supprimée quel que soit son statut : hors ligne, en lecture seule, suspecte, etc. Pour afficher l'état actuel d'une base de données, utilisez la vue de catalogue sys.databases.

Une base de données supprimée ne peut être recréée que par la restauration d'une copie de sauvegarde. Les instantanés de base de données ne peuvent pas être sauvegardés et ne peuvent donc pas être restaurés.

Lorsque vous supprimez une base de données, vous devez effectuer une sauvegarde de la base de données master.

Suppression d'un instantané de base de données

Si vous supprimez un instantané de base de données, celui-ci l'est également dans une instance de SQL Server. Il en est de même pour les fichiers partiellement alloués du système de fichiers physiques NTFS utilisés par l'instantané. Pour plus d'informations sur l'utilisation des fichiers partiellement alloués par des instantanés de base de données, consultez Fonctionnement des captures instantanées de base de données.

La suppression d'un instantané de base de données efface le cache de plan pour l'instance de SQL Server. Cette opération entraîne la recompilation de tous les plans d'exécution ultérieurs et peut entraîner une baisse temporaire et brutale des performances des requêtes. Pour chaque mémoire cache effacée du cache du plan, le journal des erreurs de SQL Server contient le message d'information suivant : « SQL Server a rencontré %d occurrence(s) de vidages de mémoire cache pour la mémoire cache '%s' (partie du cache du plan) en raison d'opérations de maintenance de base de données ou de reconfiguration. ». Ce message est enregistré toutes les cinq minutes si le cache est vidé au cours de cet intervalle.

Suppression d'une base de données utilisée dans la réplication

Pour supprimer une base de données publiée à des fins de réplication transactionnelle, ou bien une base de données publiée ou abonnée à une réplication de fusion, vous devez d'abord supprimer sa réplication. Pour plus d'informations sur la suppression d'une réplication à partir d'une base de données, consultez Suppression de la réplication. Si une base de données est endommagée, si vous ne pouvez pas supprimer la réplication dans un premier temps ou si les deux cas de figure se présentent, vous pouvez toujours, dans la plupart des cas, supprimer la base de données à l'aide de l'instruction ALTER DATABASE pour la déconnecter, puis la supprimer.

Autorisations

Requiert l'autorisation CONTROL sur la base de données, ou l'autorisation ALTER ANY DATABASE, ou l'appartenance au rôle de base de données fixe db_owner.

Exemples

A. Suppression d'une base de données unique

L'exemple suivant supprime la base de données Sales.

DROP DATABASE Sales;

B. Suppression de plusieurs bases de données

L'exemple suivant supprime chacune des bases de données répertoriées.

DROP DATABASE Sales, NewSales;

C. Suppression d'un instantané de base de données

L'exemple suivant supprime un instantané de base de données, appelé sales_snapshot0600, sans affecter la base de données source.

DROP DATABASE sales_snapshot0600;