DROP DATABASE (Transact-SQL)
Supprime une ou plusieurs bases de données ou captures instantanées de base de données à partir d'une instance de SQL Server.
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'une capture instantanée 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 à la capture instantanée 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 captures instantanées de base de données doivent être supprimées 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 connexion, en lecture seule, suspect, 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 captures instantanées de base de données ne peuvent pas être sauvegardées et ne peuvent donc pas être restaurées.
Lorsque vous supprimez une base de données, vous devez effectuer une sauvegarde de la base de données master.
Suppression d'une capture instantanée de base de données
Si vous supprimez une capture instantanée de base de données, celle-ci l'est également dans une instance de SQL Server. Il en est de même pour les fichiers fragmentés du système de fichiers physiques NTFS utilisés par la capture instantanée. Pour plus d'informations sur l'utilisation des fichiers fragmentés par des captures instantanées de base de données, consultez Fonctionnement des captures instantanées de base de données.
La suppression d'une capture instantanée 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 ou de reconfiguration de base de données. 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
Pour exécuter DROP DATABASE, un utilisateur doit au moins disposer de l'autorisation CONTROL sur la base de données.
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'une capture instantanée de base de données
L'exemple suivant supprime une capture instantanée de base de données, appelée sales_snapshot0600, sans affecter la base de données source.
DROP DATABASE sales_snapshot0600;