Impossible de supprimer la base de données en cours d’utilisation

Comment éviter l’erreur impossible de supprimer la base de données avec SQL Server ? Ou simplement l’erreur SQL Server 3702. Il est possible de gérer les bases de données SQL avec des scripts ou via les différentes fenêtres de SQL Server Management Studio. Par exemple, vous pouvez simplement supprimer une base de données avec une commande SQL DROP DATABASE.

Cependant, s’il existe des connexions actives sur la base de données à supprimer, celle-ci renvoie un message d’erreur, car une base de données avec une connexion active ne peut pas être supprimée.

1. Script de suppression de base SQL Server qui génère l’erreur 3702

Le texte exact du message d’erreur est celui-ci : « Impossible de supprimer la base de données car elle est actuellement en cours d’utilisation. (Microsoft SQL Server, Erreur : 3702) ». Le message d’erreur en Anglais est : « Cannot drop the database because it is currently in use ».

Note : Prenez soin de vérifier les sauvegardes de la base de données avant de la supprimer complètement. Surtout dans les projets importants et les environnements de production.

Ce type de script génère l’erreur :

USE [master];
GO

DROP DATABASE [DB1];
GO

Une autre méthode consiste à vérifier l’existence de la base de données sur le serveur, avant d’exécuter la commande Drop Database, comme ceci par exemple :

USE [master];
GO

IF EXISTS (
   SELECT name 
   FROM master.dbo.sysdatabases
   WHERE name = 'DB1'
)
DROP DATABASE [DB1];
GO

Pour éviter cette erreur, fermez toutes les connexions actives à la base de données avant le dépôt et terminez les requêtes en cours. Ensuite, fermez les onglets dans SSMS ou terminez explicitement les connexions ouvertes sur la base de données. Enfin, fermez les onglets actifs si un seul utilisateur est actuellement connecté.

2. Exécuter la commande sp_who2 pour identifier les sessions actives

Dans la capture d’écran, nous identifions les sessions actives pour la base de données DB1. Nous voyons un utilisateur avec le SPID 51.

sp_who2;
Utiliser la commande sp_who2 pour corriger l'erreur SQL Server 3702 Impossible de supprimer la base de données
Utiliser la commande sp_who2 pour corriger l’erreur SQL Server 3702 Impossible de supprimer la base de données

Cet autre article explique comment créer une base de données avec SSMS simplement depuis l’interface graphique utilisateur et avec les options par défaut.

3. Fermer les sessions actives avec la commande SQL Server kill

kill 51

Modifier la requête avec les numéros SPID trouvés dans votre base. La commande SQL kill permet d’éviter l’erreur SQL Server 3702.

Utilisez la requête kill pour mettre fin aux sessions et régler l'erreur 3702 Impossible de supprimer la base de données
Utilisez la requête kill pour mettre fin aux sessions et régler l’erreur 3702 Impossible de supprimer la base de données

4. Répétez l’opération pour toutes les connexions SQL actives

Maintenant la base de données est supprimée sans message d’erreur. Le but ici est de terminer toutes les sessions active pour pouvoir supprimer la base.

Conclusion

Cet article a expliqué comment éviter un message d’erreur courant de SQL Server: Impossible de supprimer la base de données car elle est actuellement en cours d’utilisation. Pour aller plus loin, voici la documentation officielle de la commande T-SQL kill. En effet, il s’agit d’un objet qui permet de nombreuses connexions de différents utilisateurs en même temps.

Comment effacer complètement une base de données SQL Server ?

Une base de données, contrairement à une table ne s’efface pas. Une base de données doit être supprimée pour en effacer tout le contenu. Utiliser la commande DROP DATABASE pour supprimer une base de données SQL Server.

Pour aller plus loin et en savoir plus sur les bases de données. Voici comment installer une deuxième instance SQL Server sur le même serveur.

Installer une deuxième instance SQL Server

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *