Usar alertas para los eventos de agente de replicación

SQL Server Management Studio y el Agente Microsoft SQL Server proporcionan un modo de supervisar eventos, tales como eventos de Agente de replicación, mediante alertas.El AgenteSQL Server supervisa el registro de aplicación de Windows en busca de eventos que se asocian con alertas. Si se produce uno de esos eventos, el Agente SQL Server responde automáticamente, mediante la ejecución de una tarea que haya sido definida y/o el envío de correo electrónico o un mensaje de localizador a un operador especificado. SQL Server incluye un conjunto de alertas predefinidas para los agentes de replicación que puede configurar para ejecutar una tarea y/o notificar a un operador. Para obtener más información sobre cómo definir la ejecución de una tarea, vea la sección "Automatizar la respuesta a una alerta" en este tema.

Las siguientes alertas se instalan cuando un equipo se configura como distribuidor:

Id. del mensaje

Alerta predefinida

Condición que desencadena la alerta

Especifica información adicional en msdb..sysreplicationalerts

14150

Replicación: éxito de agente

Un agente termina correctamente.

14151

Replicación: error de agente

Un agente termina con un error.

14152

Replicación: reintento de agente

El agente termina después de volver a intentar sin éxito una operación (el agente encuentra un error, por ejemplo que el servidor no está disponible, interbloqueo, error en la conexión o error de tiempo de espera).

14157

Replicación: suscripción caducada quitada

Se quitó la suscripción caducada.

No

20572

Replicación: Suscripción reinicializada por no pasar la validación

El trabajo de respuesta "Reinicializar suscripciones con errores de validación de datos" reinicializa correctamente una suscripción.

No

20574

Replicación: el suscriptor no ha superado la validación de datos

Un agente de distribución o de mezcla no puede validar los datos.

20575

Replicación: El suscriptor ha pasado la validación de datos

Un agente de distribución o de mezcla pasa la validación de los datos.

20578

Replicación: cierre personalizado del agente

 

 

22815

Alerta de detección de conflicto punto a punto

El Agente de distribución detecta un conflicto cuando intenta aplicar un cambio en un nodo punto a punto.

Además de estas alertas, el Monitor de replicación ofrece un conjunto de avisos y alertas relacionados con el estado y el rendimiento. Para obtener más información, vea Establecer umbrales y advertencias en el Monitor de replicación. También puede definir alertas para otros eventos de replicación con la infraestructura de alertas de SQL Server. Para obtener más información, vea Crear un evento definido por el usuario.

Para configurar las alertas de replicación predefinidas

Ver directamente el registro de aplicación

Para ver el registro de aplicación de Windows, utilice el Visor de eventos de Microsoft Windows. El registro de aplicación contiene mensajes de error de SQL Server así como mensajes de muchas otras actividades del equipo. A diferencia del registro de errores de SQL Server, no se crea un nuevo registro de aplicación cada vez que se inicia SQL Server (cada sesión de SQL Server escribe nuevos eventos en un registro de aplicación existente); no obstante, puede especificar durante cuánto tiempo desea mantener los eventos registrados. Al ver un registro de aplicación de Windows, puede filtrar el registro en busca de eventos específicos. Para obtener más información, vea la documentación de Windows.

Automatizar la respuesta a una alerta

La replicación proporciona un trabajo de respuesta para las suscripciones que no pueden validar los datos y también proporciona un marco de trabajo para la creación de respuestas automatizadas adicionales a las alertas. El trabajo de respuesta se llama Reinicializar suscripciones con errores de validación de datos y se almacena en la carpeta Trabajos del Agente SQL Server en SQL Server Management Studio. Para obtener información sobre cómo habilitar este trabajo de respuesta, vea Cómo configurar alertas de replicación predefinidas (SQL Server Management Studio). Si se produce un error en la validación de los artículos de una publicación transacional, el trabajo de respuesta reinicializa únicamente aquellos artículos que no se hayan validado. Si se produce un error en la validación de los artículos de una publicación de mezcla, el trabajo de respuesta reinicializa todos los artículos de la publicación.

Marco de trabajo para la automatización de respuestas

Normalmente, cuando se produce una alerta, la única información de que dispone para comprender qué la ha provocado y la acción más apropiada que puede llevar a cabo está contenida en el propio mensaje de la alerta. El análisis de esta información puede estar sujeta a errores y lleva mucho tiempo. La replicación facilita la automatización de respuestas al proporcionar información adicional sobre la alerta en la tabla del sistema sysreplicationalerts; la información que se proporciona ya está analizada de una forma que los programas personalizados pueden utilizar fácilmente.

Por ejemplo, si se produce un error al validar los datos de la tabla Sales.SalesOrderHeader en el suscriptor A, SQL Server puede desencadenar el mensaje 20574, que le notifica dicho error. El mensaje que reciba será: "La suscripción del suscriptor 'A' al artículo 'SalesOrderHeader' de la publicación 'MyPublication', no pasó la validación de datos."

Si crea un trabajo de respuesta basado en el mensaje, debe analizar manualmente el nombre del suscriptor, el nombre del artículo, el nombre de la publicación y el error del mensaje. Sin embargo, como el Agente de distribución y el Agente de mezcla escriben la misma información en sysreplicationalerts (junto con detalles como el tipo de agente, la hora de la alerta, la base de datos de publicaciones, la base de datos del suscriptor y el tipo de publicación), el trabajo de respuesta puede consultar directamente la información relevante en dicha tabla. Aunque la fila exacta no puede asociarse con una instancia específica de la alerta, la tabla tiene una columna status que se puede utilizar para realizar un seguimiento de las entradas atendidas. Las entradas de esta tabla se mantienen durante el período de retención del historial.

Por ejemplo, si creara un trabajo de respuesta en Transact-SQL para dar servicio al mensaje de alerta 20574, podría utilizar la lógica siguiente:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber, 
  subscriber_db, alert_id from 
  msdb..sysreplicationalerts where
  alert_error_code = 20574 and status = 0
  for read only
open hc
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
while (@@fetch_status <> -1)
begin
/* Do custom work  */
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
end
close hc
deallocate hc