28 votos

La base de datos 'XXX' está en transición. Pruebe la declaración más tarde

Estoy tratando de conectarme a una base de datos sql server me sale este error

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

Hoy he cancelado una consulta larga pero por alguna razón no consigo que la base de datos vuelva a funcionar. ¿Hay algo que pueda hacer?

4 votos

Con una pregunta como esta deberías ser específico sobre qué servidor SQL y su versión. Supongo que te refieres a uno de los servidores SQL de Microsoft, pero no deberíamos tener que adivinar.

0 votos

Mira esto. Esto funcionó para mí. stackoverflow.com/a/27036481/4273753

40voto

phoebus Puntos 6196

Esto puede ocurrir a veces si se intenta sacar una BD de la red o realizar otras operaciones y éstas fallan. A veces el bloqueo se puede borrar si cierra la instancia de SSMS que intentó la operación y luego la vuelve a abrir. Cierre y vuelva a abrir cualquier instancia de SSMS conectada al servidor.

También puede ocurrir si intentas desconectar la BD mientras se está ejecutando una consulta larga. Comprueba el monitor de actividad e intenta matar cualquier consulta de larga duración, si es aplicable y seguro.

Si nada de lo anterior funciona, cierre todas las instancias de SSMS y reinicie SQL a través del Administrador de configuración de SQL Server. Por lo general, eso lo curará, aunque la DB puede estar en modo de recuperación al principio.

0 votos

Es muy extraño. ¿Sabes por qué está sucediendo?

11voto

Josh Puntos 191

Extrañamente, solucioné este problema simplemente cerrando SSMS y volviendo a abrirlo.

0 votos

Muy fácil. A mí me ha funcionado.

0 votos

Cerrar SSMS y volver a abrirlo también me ha funcionado.

3voto

Watki02 Puntos 221

Aunque a mí también me funcionó cerrar SSMS, dependiendo del problema, podrías probar esto:

ALTER DATABASE [Name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [Name] SET MULTI_USER

Esta idea surgió de esta pregunta (y de la experiencia personal): https://stackoverflow.com/questions/4230290/sql-server-2008-how-do-i-disconnect-everyone-from-my-db

1voto

Nick Puntos 1

Hay una opción disponible en SQL Server Management Studio para tomar una base de datos en línea / fuera de línea. Pero necesita un permiso administrativo.

Para acceder a ella, haga clic con el botón derecho del ratón en la base de datos --> Tareas--> Poner en línea.

0voto

Hans Puntos 111

Sé que ya está contestado, pero sólo para añadir; si la situación es tal que estabas intentando desconectarlo, y luego falló, podrías intentar matar el SPID que está intentando cambiar el estado de la base de datos.

Haz sp_who o sp_who2 y encuentra un SPID que esté girando en la DB intentando sacar la base de datos de la red. Mata a ese SPID, y te quedas con una DB online o offline que NO está en el estado de transición.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: