[En desuso] El LSN especificado para el examen del registro repIdone tiene lugar antes del inicio actual de la replicación en el registro

Microsoft.SQLServer.2008.SpecifiedLSNForRepldoneLogscanOccursBeforeTheCurrentStartOfReplicationInTheLogRule (Rule)

Knowledge Base article:

Resumen

El número de secuencia de registro especificado para el examen del registro repIdone tiene lugar antes del inicio actual de la replicación en el registro.

Causas

Hay transacciones sin replicar en el registro de transacciones marcadas para la replicación, pero actualmente no hay ningún Agente de registro del LOG que pueda leer esas transacciones sin replicar. El Agente de registro del LOG entrega los comandos y las transacciones replicados a la base de datos de distribución dentro de las transacciones. Una vez confirmada cada una de las transacciones, el Agente de registro del LOG llama a sp_repldone en la base de datos del publicador para marcar información como el número de secuencia de la última transacción distribuida y el registro de confirmación de la siguiente transacción que se debe examinar, si hay alguna. Ya que se llama a sp_repldone en la base de datos del publicador, una vez confirmada la transacción en la base de datos de distribución, puede que la base de datos del publicador tenga datos de seguimiento incorrectos.

Por ejemplo, una vez que el lector del registro confirma una transacción de forma correcta (la llamaremos T1) en la base de datos de distribución y se llama a sp_repldone para actualizar los datos de seguimiento de la base de datos del publicador para que tenga en cuenta que T1 se ha enviado y que la transacción T2 es la siguiente que se debe examinar, el Agente de registro del LOG pasa a la transacción T2. Si el publicador se cierra inmediatamente después de que el Agente de registro del LOG confirme la transacción T2 en la base de datos de distribución pero antes de que se llame a sp_repldone para actualizar la información de seguimiento de la base de datos del publicador, cuando el publicador vuelve a activarse, los datos de seguimiento aún indican que se acaba de enviar T1 y que T2 es la siguiente que se debe examinar. Sin embargo, esto no concuerda con el hecho de que T2 ya se ha confirmado en la base de datos de distribución. El Agente de registro del LOG administra esta situación de forma interna. La siguiente vez que se inicie el Agente de registro del LOG, consultará la base de datos de distribución para averiguar el número de secuencia de la última transacción distribuida (LSN). Después de esto, llama a sp_repldone para restablecer los datos de seguimiento de la base de datos del publicador de forma que el conjunto de comandos y transacciones entregados no se envíen de nuevo.

Este error puede aparecer si el número de secuencia de transacción recuperado por el Agente de registro del LOG desde la base de datos de distribución es menor que el número de secuencia de la última transacción entregada, tal y como se indica en los datos de seguimiento. Esta situación implica que en la base de datos de distribución faltan algunos comandos y transacciones que el Agente de registro del LOG envió previamente. Por ejemplo, si no estaba habilitado sync with backup en la base de datos de distribución al restaurar la base de datos de distribución a una versión anterior mientras el Agente de registro del LOG estaba entregando comandos y transacciones a la base de datos de distribución. Otra posible causa es que el usuario elimine manualmente algunos registros de la tabla MSrepl_transactions correspondiente a la base de datos de distribución.

El error también podría producirse si la replicación no se ha quitado por completo o si hay una incoherencia en la base de datos.

Soluciones

Para resolver este problema, intente lo siguiente:

Para garantizar la coherencia, quite y vuelva a crear todas las publicaciones y suscripciones si es posible.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

No

Prioridad

Define la prioridad de la alerta.

2

Gravedad

Define la gravedad de la alerta.

2

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
RemotableTrue
Alert Message
El LSN especificado para el examen del registro repIdone tiene lugar antes del inicio actual de la replicación en el registro.
{0}

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.SQLServer.2008.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2008.SpecifiedLSNForRepldoneLogscanOccursBeforeTheCurrentStartOfReplicationInTheLogRule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="false" ConfirmDelivery="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.SQLServer.2008.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<PublisherName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</PublisherName>
<EventNumber>18768</EventNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>2</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.SpecifiedLSNForRepldoneLogscanOccursBeforeTheCurrentStartOfReplicationInTheLogRule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>