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:
- Eliminar la conmutación por error automática en la réplica secundaria de confirmación sincrónica
- Actualice las instancias del servidor secundario a la nueva versión
- Cambiar manualmente a la réplica secundaria
- Verifique que las bases de datos estén en línea en la nueva réplica principal
- 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:
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?