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.

Erreur SQL Server 3702 Impossible de supprimer la base de données car elle est en cours d’utilisation

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.

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é.

Pour la deuxième étape, exécutez ces deux opérations :

Première opération : 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

Deuxième opération : fermer les sessions avec la commande SQL Server kill

kill 51

Modifier la requête avec les numéros SPID trouvés dans votre base.

La commande kill SQL 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

Répétez l’opération jusqu’à ce qu’aucune connexion active ne soit visible dans la liste.

Maintenant la base de données est supprimée sans message d’erreur.

Pour aller plus loin, voici la documentation officielle de la commande T-SQL kill. L’erreur de la commande sql « unable to drop the database because it is currently in use » est classique. En effet, il s’agit d’un objet qui permet de nombreuses connexions de différents utilisateurs en même temps.

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.

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.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*