Usar alertas para los eventos de agente de réplica

Microsoft SQL Server Management Studio y el Agente Microsoft SQL Server proporcionan un modo de supervisar eventos, como los eventos de agente de réplica, 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 réplica 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 sysreplicationalerts

14150

Réplica: éxito de agente

Un agente termina correctamente.

14151

Réplica: error de agente

Un agente termina con un error.

14152

Réplica: 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

Réplica: suscripción caducada quitada

Se quitó la suscripción caducada.

No

20572

Réplica: 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

Réplica: el suscriptor no ha superado la validación de datos

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

20575

Réplica: 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

Réplica: cierre personalizado del agente

Además de estas alertas, el Monitor de réplica 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 réplica. También puede definir alertas para otros eventos de réplica 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 réplica predefinidas

Ver directamente el registro de aplicación

Para ver el registro de aplicación de Windows, utilice el Visor de sucesos 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 sucesos en un registro de aplicación existente); no obstante, puede especificar durante cuánto tiempo desea mantener los sucesos registrados. Al ver un registro de aplicación de Windows, puede filtrar el registro en busca de sucesos específicos. Para obtener más información, vea la documentación de Windows.

Automatizar la respuesta a una alerta

La réplica 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 réplica 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 réplica 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. Recibiría el siguiente mensaje:

"Subscriber 'A', subscription to article 'SalesOrderHeader' in publication 'MyPublication' failed data validation."

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

Vea también

Conceptos

Administrar agentes de réplica
Prácticas recomendadas para la administración de réplica
Supervisar la réplica
Agentes de réplica (solución de problemas)

Ayuda e información

Obtener ayuda sobre SQL Server 2005