Este monitor comprueba el estado de los agentes de distribución para todas las publicaciones ofrecidas por este distribuidor.
Se ha producido un error en uno o varios agentes de distribución.
Estas son algunas de las razones que pueden explicar errores de los agentes de distribución:
La suscripción no se ha inicializado y la instantánea no está disponible.
El agente de distribución se está ejecutando en una cuenta que no dispone de permisos suficientes.
Tiempos de espera de la consulta.
Existe una infracción de una clave principal o un error de “fila no encontrada” en el suscriptor.
No se puede establecer una conexión con el distribuidor o las bases de datos del suscriptor.
Agotamiento de memoria para el montón del escritorio no interactivo. http://support.microsoft.com/kb/949296
El agente de distribución no pudo crear un archivo temporal en el directorio "C:\Archivos de programa\Microsoft SQL Server\100\COM" (aplicable para SQL 2008 y SQL 2008 R2) http://support.microsoft.com/kb/956032
El agente de distribución no puede ver archivos de instantáneas
El servicio Agente SQL no posee los privilegios obligatorios.
Los parámetros incorrectos pasaron al agente de distribución.
El agente de distribución está ejecutándose en una cuenta que no dispone de permisos suficientes.
Si hay varios servidores relacionados con la topología de replicación, los agentes de SQL Server necesitan ejecutarse en una cuenta de dominio.
La cuenta de agente de distribución necesita ser miembro del rol fijo [db_owner] en las bases de datos de distribución y del suscriptor.
Tiempo de espera de la consulta.
Compruebe el bloqueo en el distribuidor y el suscriptor y compruebe si el agente de distribución está bloqueado. Resuelva el bloqueo y reinicie el agente.
Aumente el tiempo de espera de la consulta al agente de distribución a un valor más elevado.
Existe una infracción de una clave principal o errores de “fila no encontrada” en el suscriptor.
Consulte las propiedades del artículo para confirmar que se estén replicando todas las inserciones; actualice y elimine los comandos para no omitir ninguno.
Verifique que los usuarios no dispongan de acceso de escritura a la base de datos del suscriptor.
Configure el agente del distribuidor para usar el parámetro -skiperrors para ignorar estos errores (úselo como solución temporal y resuelva el error subyacente).
No se puede establecer una conexión con el distribuidor o la base de datos del suscriptor.
La cuenta de agente de distribución necesita ser miembro del rol fijo [db_owner] en las bases de datos de distribución y del suscriptor. Compruebe que se pueda establecer una conexión entre SQL Server Management Studio y las bases de datos de suscriptor y de distribución.
En el distribuidor y el publicador, habilite los puertos TCP y UDP usados por SQL Server en el firewall.
Agotamiento de memoria para el montón del escritorio no interactivo.
Use cualquiera de las soluciones siguientes de este artículo de KB para resolver el problema.
El agente de distribución no ha creado archivos temporales en 'C:\Program Files\Microsoft SQL Server\100\COM' directory (aplicable para SQL 2008 y SQL 2008 R2)
Use la solución de este artículo de KB para resolver el problema.
El agente de distribución no puede leer archivos de instantáneas.
Use una ruta de acceso UNC para almacenar la carpeta de la instantánea. Comparta la carpeta y conceda permisos de lectura a la cuenta del agente de distribución.
El servicio Agente SQL no posee los privilegios obligatorios.
Visite la página http://msdn.microsoft.com/library/ms143504.aspx y asegúrese de que el SID de servicio del Agente SQL disponga de los siguientes derechos:
Iniciar sesión como servicio (SeServiceLogonRight)
Reemplazar un token de nivel de proceso (SeAssignPrimaryTokenPrivilege)
Omitir comprobación de recorrido (SeChangeNotifyPrivilege)
Ajustar las cuotas de la memoria para un proceso (SeIncreaseQuotaPrivilege)
Los parámetros incorrectos pasaron al comando del agente de distribución.
Comprobar parámetros pasados a la línea de comandos del agente de distribución.
El proceso no pudo realizar la copia masiva en la tabla
Reduzca el valor pasado al parámetro –BCPBatchSize en el trabajo del agente de distribución
Vuelva a ejecutar el agente de distribución y agregue el parámetro -OutputVerboseLevel 2. Esto le facilitará más detalles acerca de la instrucción que está fallando.
Esta operación solamente la pueden llevar a cabo miembros de los roles sysadmin o db_owner.
Si la base de datos de distribución y el suscriptor se encuentran en dominios diferentes y no existe ninguna relación de confianza entre los dominios (específicamente el dominio de suscriptor no confía en el dominio de distribución), deberá usarse una cuenta nombrada especificada.
Examine los detalles del error del Agente SQL Server en el suscriptor; el nombre del suscriptor será la primera parte de la "Suscripción" mostrada.
En el suscriptor, compruebe que esta cuenta de inicio de sesión de agente sea un inicio de sesión válido.
En el suscriptor, compruebe que la cuenta de inicio de sesión del agente disponga de roles de "sysadmin" o "db_owner" para la base de datos que se está replicando.
http://technet.microsoft.com/library/ms147328.aspx
Nombre | Descripción | Valor predeterminado |
Prioridad de la alerta | Define la prioridad de alerta. | Normal |
Gravedad de la alerta | Define la gravedad de alerta. | Error |
Habilitado | Habilita o deshabilita el flujo de trabajo. | Sí |
Duración estimada del trabajo | Umbral que se usa para comprobar el cumplimiento del programa de trabajos | 15 |
Genera alertas. | Define si el flujo de trabajo genera una alerta. | Sí |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 300 |
Muestra trabajos con estado desconocido | Incluya trabajos con estado desconocido en el contexto de alerta y salida del monitor. Afectará al estado. | No |
Hora de sincronización | Hora de sincronización |
|
Tiempo de espera (segundos) | Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error. | 200 |
Tiempo de expiración de la conexión de base de datos (segundos) | Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado. | 15 |
Target | Microsoft.SQLServer.Replication.Windows.Distributor | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Replication.Windows.MonitorType.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.DistributionAgentState" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.DistributionAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericDistributor']/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<XPathName>Distribution$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericDistributor']/ConnectionString$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
<CheckMachineAndInstanceName>true</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>