La base de datos AlwaysOn de SQL Server se atascó en el modo Sin sincronización / En recuperación después de la actualización. Error: no se puede abrir la base de datos '...' versión 782


10

Mientras probaba una actualización de SQL Server 2014 SP1 (12.0.4422.0) a SQL Server 2016 CTP 3.2 (13.0.900.73) estaba siguiendo el proceso de actualización recomendado y me encontré con un problema en el que la base de datos no se iniciaba en el primario primario después de fallar a la secundaria actualizada. Nuestra configuración es una réplica principal y una réplica secundaria única, y los pasos que completé fueron:

  1. Eliminar la conmutación por error automática en la réplica secundaria de confirmación sincrónica
  2. Actualice las instancias del servidor secundario a la nueva versión
  3. Cambiar manualmente a la réplica secundaria
  4. Verifique que las bases de datos estén en línea en la nueva réplica principal
  5. Actualice la réplica principal anterior a la nueva versión

La actualización del secundario y la conmutación por error para que sea el primario funcionó exactamente como se esperaba. Pero después de actualizar la réplica primaria anterior, noté que las bases de datos en ella se enumeraban en SSMS como Sin sincronización / En recuperación . También intentar acceder a ellos generaría un mensaje de error:

La base de datos ... no es accesible. (ObjectExplorer)

Comprobando a través de los registros de SQL Server que vi

No se puede abrir la base de datos '...' versión 782. Actualice la base de datos a la última versión.

La consulta de la tabla master..sysdatabases mostró que, de hecho, era una versión anterior y que no se había actualizado durante la actualización:

Versión de sysdatabases de SSMS

Desafortunadamente, los registros no indicaron por qué no se actualizaron, y el Panel de grupos de disponibilidad solo dio una advertencia genérica que indica que el estado de sincronización de Datos de alguna base de datos de disponibilidad no es saludable sin ninguna razón.

Intenté usar TSQL para separar las bases de datos o establecerlas fuera de línea para "patearlas" y actualizarlas, pero como son parte de SQL AG, esos comandos no funcionan.

¿Cómo puedo actualizar la base de datos a la última versión cuando es parte de un SQL AG?

Respuestas:


10

Después de hurgar un rato en SSMS, noté que en la réplica secundaria había un ícono de pausa junto a las Bases de datos de disponibilidad. El primario había mostrado que ambos eran "verdes", pero había una opción en el secundario para Reanudar movimiento de datos . Reanudé la primera base de datos e inmediatamente se eliminó el mensaje de estado En recuperación . Un minuto después cambió de No sincronizar a Sincronizar, y todo funcionó como se esperaba.

Aquí hay una captura de pantalla de las bases de datos de AG después de arreglar "Patch", pero antes de arreglar la base de datos de prueba:

Reanudar movimiento de datos en SQL AG

Tenga en cuenta que también puede usar TSQL en el secundario para reanudar la replicación en múltiples bases de datos al mismo tiempo:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO

1
¿Sabes qué causó la pausa de la replicación? y puedo averiguar desde cuando la replicación ha sido pausada?
JohnG
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.