Compartir a través de


Usar alertas para eventos del Agente de replicación

Se aplica a: SQL Server

SQL Server Management Studio y el Agente Microsoft SQL Server proporcionan un modo de supervisar eventos, como eventos del agente de replicación, mediante alertas. El Agente SQL 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 un mensaje de correo electrónico o de buscapersonas 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, consulta la sección Automatizar la respuesta a una alerta.

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

Id. del mensaje Alerta predefinida Condición que desencadena la alerta Escribe 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 expirada quitada Se quitó la suscripción expirada. 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 Cuando se invoca la validación de datos a través de sp_publication_validation y @shutdown_agent se establece en 1, el agente de distribución se apaga una vez completada la validación.
22815 Alerta de detección de conflictos 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 proporciona una serie de advertencias y alertas relacionadas con el estado y el rendimiento. Para más información, consulte Set Thresholds and Warnings in Replication Monitor. 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, consulte Create a User-Defined Event (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 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 Windows, puede filtrar el registro en busca de eventos específicos. Para obtener más información, consulte la documentación de Windows.

Automatización de 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, consulte Configurar alertas predefinidas de replicación (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 combinación, 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