web-dev-qa-db-fra.com

La base de données 'XXX' est en transition. Essayez la déclaration plus tard

im essayant de se connecter à une base de données de serveur sql j'obtiens cette erreur

Database 'XXX' is in transition. Try the statement later.

j'ai annulé une longue requête plus tôt dans la journée, mais pour une raison quelconque, je ne parviens pas à récupérer la base de données. Y a-t'il quelque chose que je puisse faire?

27
Rod Johnson

Cela peut parfois arriver si vous essayez de mettre une base de données hors ligne ou d'effectuer certaines autres opérations et qu'elles échouent. Parfois, le verrou peut être effacé si vous fermez l'instance SSMS qui a tenté l'opération, puis la rouvrez. Fermez et rouvrez toutes les instances SSMS attachées au serveur.

Cela peut également se produire si vous essayez de mettre la base de données hors ligne pendant qu'une longue requête est en cours d'exécution. Vérifiez le moniteur d'activité et essayez de supprimer toutes les requêtes de longue durée, le cas échéant et en toute sécurité.

Si aucun des éléments ci-dessus ne fonctionne, fermez toutes les instances SSMS, puis redémarrez SQL via le Gestionnaire de configuration SQL Server. Habituellement, cela le guérira, bien que la base de données puisse être en mode de récupération au début.

40
phoebus

Curieusement, j'ai résolu ce problème en fermant simplement SSMS et en rouvrant.

11
Josh

La fermeture de SSMS a également fonctionné pour moi, selon le problème, vous pouvez essayer ceci:

ALTER DATABASE [Name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [Name] SET MULTI_USER

Cette idée est venue de cette question (et de mon expérience personnelle): https://stackoverflow.com/questions/4230290/sql-server-2008-how-do-i-disconnect-everyone-from-my-db

3
Watki02

Il existe une option disponible dans SQL Server Management Studio pour mettre une base de données en ligne/hors ligne. Mais il a besoin d'une autorisation administrative.

Pour y accéder, cliquez avec le bouton droit sur la base de données -> Tâches -> Mettre en ligne.

1
rchacko

Je sais que c'est déjà répondu, mais juste pour ajouter; si la situation est telle que vous essayez de la mettre hors ligne, puis qu'elle échoue, vous pouvez essayer de tuer le SPID qui tente de modifier l'état de la base de données.

Effectuez sp_who ou sp_who2 et recherchez un SPID qui tourne sur la base de données en essayant de mettre la base de données hors ligne. TUEZ ce SPID, et vous vous retrouvez avec une base de données en ligne ou hors ligne qui n'est PAS dans l'état de transition.

0
Jun Sato