web-dev-qa-db-fra.com

SQL Server me dit que la base de données est en cours d'utilisation mais qu'elle ne l'est pas

SQL Server me dit toujours qu'une base de données est en cours d'utilisation lorsque j'essaie de la supprimer ou de la restaurer, mais lorsque j'exécute cette requête de métadonnées:

select * from sys.sysprocesses 
where dbid 
  in (select database_id from sys.databases where name = 'NameOfDb')

Il ne renvoie rien.

Parfois, il renverra 1 processus qui est un type d'attente CHECKPOINT_QUEUE. Si j'essaie de tuer ce processus, il ne me le permettra pas (ne peut pas tuer un processus non utilisateur).

Quelqu'un a une idée de ce qui ne va pas?

21
tuseau

Il pourrait y avoir beaucoup de choses bloquant votre base de données. Par exemple, si une fenêtre de requête est ouverte sur cette base de données, elle sera verrouillée par vous. Sans compter les accès externes, comme une application Web sur IIS.

Si vous voulez vraiment forcer la suppression, cochez l'option Fermer les connexions existantes ou essayez d'arrêter manuellement le service SQL Server.

14
Smur

j'aime ce script. Ne luttez pas pour tuer ..

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
33
MahmutHAKTAN

J'avais le même problème lors de la tentative de restauration d'une base de données à partir d'une sauvegarde. La solution pour moi était de vérifier que j'ai coché "Remplacer la base de données existante (AVEC REMPLACER)" et "Fermer les connexions existantes à la base de données de destination" dans la page Options AVANT de faire la restauration. Voici une capture d'écran ci-dessous.

enter image description here

13
jbooker