KB3054530: CORRECCIÓN: los daños se producen en las páginas de réplica secundaria al cambiar la réplica secundaria a ilegible.

Se aplica a
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Síntomas

Suponga que usa la característica Grupos de disponibilidad AlwaysOn en Microsoft SQL Server 2012. Al cambiar el acceso de conexión de la réplica secundaria de "legible" a "ilegible", se produce un daño en las páginas que usan compresión de página en la réplica dada.

Las bases de datos de disponibilidad que experimentan este problema en la réplica secundaria no se pueden recuperar debido a un error durante la fase de rehacer de la sincronización. La réplica secundaria no se sincronizará con la réplica principal e informa de un estado de sincronización de "SUSPEND_FROM_REDO". Además, recibirá los siguientes mensajes de error en el registro de errores de SQL Server que hospeda la réplica secundaria:

Nota

< Fecha><Hora> Spid<ID> Error: 17066, Gravedad: 16, Estado: 1.
< Fecha><Hora> spid<ID> SQL Server Aserción: File: <page.cpp>, line=3898 Failed Assertion = '!pageFull'. Este error puede estar relacionado con los intervalos. Si el error persiste después de reenviar la instrucción, use DBCC CHECKDB para comprobar la integridad estructural de la base de datos o reinicie el servidor para asegurarse de que las estructuras de datos en memoria no están dañadas.
< Fecha><Hora> Spid<ID> Error: 3624, Gravedad: 20, Estado: 1.
< Fecha><Hora> Spid<ID> Se ha producido un error en la comprobación de aserción del sistema. Compruebe el registro de errores SQL Server para obtener más información. Normalmente, un error de aserción se debe a un error de software o a daños en los datos. Para comprobar si hay daños en la base de datos, considere la posibilidad de ejecutar DBCC CHECKDB. Si aceptaste enviar volcados a Microsoft durante la instalación, se enviará un mini volcado a Microsoft. Es posible que haya una actualización disponible de Microsoft en el Service Pack más reciente o en un QFE del soporte técnico.
< Fecha><Hora> El movimiento dedatos de los grupos de disponibilidad AlwaysOn id. spid >< para la base de datos '<Nombre >de DataBase' se ha suspendido por la siguiente razón: "sistema" (Id. de origen 2; Cadena de origen: 'SUSPEND_FROM_REDO'). Para reanudar el movimiento de datos en la base de datos, tendrá que reanudarla manualmente. Para obtener información sobre cómo reanudar una base de datos de disponibilidad, vea SQL Server Libros en línea.
< Fecha><Hora> Spid<ID> Error: 3313, Gravedad: 21, Estado: 2.
< Fecha><Hora> Spid<ID> Durante la rehacción de una operación registrada en la base de datos "<DataBase Name>", se produjo un error en el id. de registro (1786:4978584:74). Normalmente, el error específico se registra anteriormente como un error en el servicio de registro de eventos de Windows. Restaure la base de datos desde una copia de seguridad completa o repare la base de datos.
< Fecha><Hora> Opción de parámetro ALTER DBde id>. spid<: CURRÍCULUM VÍTAE
< Fecha><Hora> se hareanudado el movimiento de datos de los grupos de disponibilidad AlwaysOn id. spid >< para la base de datos '<Nombre >de DataBase'. Solo se trata de un mensaje informativo. No es necesaria ninguna acción del usuario.
< Fecha><Hora> Las transacciones no cualificadas conid>. spid< se revierte en la base de datos <DataBase Name> para un cambio de estado de grupos de disponibilidad AlwaysOn. Finalización estimada de la reversión: 100%. Solo se trata de un mensaje informativo. No es necesaria ninguna acción del usuario.
< Fecha><Hora> la conexiónde los grupos de disponibilidad AlwaysOn con id. de spid >< con la base de datos principal finalizó para la base de datos secundaria "<DataBase Name>" en la réplica de disponibilidad con id. de réplica: {bbdedecb-f26b-47e9-9e7d-7c22f99edb23}. Solo se trata de un mensaje informativo. No es necesaria ninguna acción del usuario.
< Fecha><Hora> spid<ID> Iniciando base de datos '<DataBase Name>'.
< Fecha><Hora> spid<ID> Recovery of database '<DataBase Name>' (13) es 0% completado (quedan aproximadamente 781 segundos). Fase 1 de 3. Solo se trata de un mensaje informativo. No es necesaria ninguna acción del usuario.
……

Resolución

El problema se corrigió por primera vez en la siguiente actualización acumulativa de SQL Server.

Actualización acumulativa 6 para SQL Server 2012 SP2

            
             Actualización acumulativa 16 para SQL Server 2012 SP1
          

Acerca de las actualizaciones acumulativas para SQL Server

Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Echa un vistazo a las últimas actualizaciones acumulativas de SQL Server:

      

Más información

El problema anterior puede ocurrir cuando se cambia el acceso de lectura para la réplica secundaria.
Puede establecer el acceso de lectura de las bases de datos de disponibilidad en la réplica secundaria mediante los dos métodos siguientes:

  • Establezca el acceso de lectura mediante el comando ALTER AVAILABILITY GROUP:

    ALTER AVAILABILITY GROUP [AGName]
    MODIFY REPLICA ON N'<SRV>' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))
    
  • Establezca el acceso de lectura cambiando la configuración en Explorador de objetos de SQL Server Management Studio (SSMS):

    • Conéctese al servidor y abra la carpeta Disponibilidad AlwaysOn.
    • Abra la carpeta Grupos de disponibilidad.
    • Haga clic con el botón derecho en el grupo de disponibilidad y seleccione Propiedades.
    • Cambie la propiedad Readable Secondary de la réplica secundaria a No y, a continuación, haga clic en Aceptar.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".