Resolver problemas comunes de Notification Services

Microsoft ha compilado la siguiente lista de problemas experimentados por los usuarios de Notification Services y sus soluciones.

ms172473.note(es-es,SQL.90).gifImportante:
Cuando intente solucionar un problema de una aplicación de Notification Services, en primer lugar, vaya al registro de la aplicación en el Visor de sucesos de Windows. Los eventos del registro de la aplicación suelen ser la mejor forma de determinar el origen de un problema de la aplicación.

Solucionar problemas de implementación y administración

Se produce un error al crear una instancia debido a un error de tiempo de espera

Los procesos que crean una instancia de Notification Services realizan varias tareas y cada una de ellas tiene un límite temporal. El proceso de creación de una base de datos suele requerir más tiempo que el resto de operaciones; el límite de tiempo de esta operación es de 10 minutos, lo que normalmente es más que adecuado. Sin embargo, si la configuración de la instancia o las definiciones de la aplicación especifican tamaños de base de datos muy grandes (varios gigabytes), el proceso de creación puede agotar el tiempo de espera; si esto ocurre, aparece un mensaje de tiempo de espera.

Para crear la instancia correctamente, debe reducir los tamaños del archivo de base de datos en el ADF y en el archivo de configuración; a continuación, debe crear la instancia. Posteriormente puede aumentar los tamaños de los archivos de la base de datos mediante o instrucciones .

Se produce un error al crear una instancia debido a que el registro de transacciones está lleno

Si agrega un registro lleno o casi lleno, se puede producir un error a la hora de crear una instancia de Notification Services. Aumente los valores de size y maxsize del registro de transacciones y, a continuación, inténtelo de nuevo.

Se produce un error al actualizar una instancia

Se podría producir un error a la hora de actualizar una instancia de debido a errores en una definición de la aplicación o una configuración de instancia. Antes de actualizar una instancia, debería validar todos los archivos XML para reducir la posibilidad de que se produjera este error. Si se produce un error, corrija el archivo e intente realizar la actualización de nuevo.

Dado que la actualización de una instancia modifica las bases de datos de instancia y de aplicación, realice siempre una copia de seguridad de éstas antes de actualizar la instancia.

Para obtener más información acerca de la actualización de una instancia, vea Actualizar las propiedades de una instancia. Para obtener más información acerca de la actualización de una aplicación, vea Actualizar una aplicación.

El servicio de Windows no se inicia

Si utiliza el servicio de Windows NS$instanceName para ejecutar los componentes del motor de Notification Services y el servicio de Windows no se inicia, puede que la contraseña del servicio no sea correcta, que el nombre de instancia que intenta iniciar no coincida exactamente con el nombre de instancia de Notification Services, que las bases de datos sean inaccesibles o que la cuenta de usuario de Windows en la que se ha configurado la ejecución del servicio no tenga permisos para iniciar sesión como un servicio. Para solucionar el problema, intente realizar lo siguiente:

  • **Compruebe que la cuenta de servicio sea miembro del grupo SQLServer2005NotificationServicesUser$**ComputerName de Windows. Los miembros del grupo SQLServer2005NotificationServicesUser$ComputerName tienen permiso para leer y ejecutar archivos binarios de Notification Services, incluido el archivo NSService.exe.
  • Restablezca la contraseña de Windows. Cuando utilice los comandos de Notification Services para configurar una contraseña del servicio y ésta contenga caracteres especiales o no se haya escrito correctamente, el servicio NS$instanceName no se iniciará.
    Para solucionar este error, actualice la contraseña mediante la aplicación Servicios:
    1. En el Panel de control, abra Herramientas administrativas.
    2. Abra Servicios.
    3. Haga clic con el botón secundario en el servicio **NS$**instanceName (instanceName representa el nombre de la instancia de Notification Services) y, a continuación, haga clic en Propiedades.
    4. Haga clic en la ficha Iniciar sesión y escriba la contraseña en los cuadros de texto Contraseña y Confirmarcontraseña. Haga clic en Aceptar.
    5. Haga clic con el botón secundario en el servicio y, a continuación, haga clic en Iniciar.
  • Compruebe las bases de datos. Si el servicio no puede obtener acceso a las bases de datos de instancia y de aplicación, no se iniciará.
    • ¿Es correcto el nombre de la base de datos en el registro de la instancia?
    • ¿Se está ejecutando la instancia del Database Engine (Motor de base de datos) que aloja las bases de datos de instancia y de aplicación?
    • ¿Están disponibles las bases de datos de instancia y de aplicación?
    • ¿Hay algún problema de red que impida que el servicio obtenga acceso a las bases de datos?
  • Inicie el servicio desde la aplicación Servicios. Si inicia el servicio mediante el comando net start, los caracteres que se utilizan en el símbolo del sistema deben coincidir con los caracteres Unicode utilizados en el archivo de configuración. Si los caracteres no coinciden, no es posible iniciar la instancia.
    Para solucionar este error, inicie el servicio mediante la aplicación Servicios de Windows:
    1. En el Panel de control, abra Herramientas administrativas.
    2. Abra Servicios.
    3. Haga clic con el botón secundario en el servicio **NS$**instanceName y, a continuación, haga clic en Iniciar.

Los errores no se registran en el registro de la aplicación

Si el motor de Notification Services no se inicia pero no hay errores en el registro de la aplicación que indiquen la causa, es posible que el registro de la aplicación esté lleno. Para volver a configurar el registro de la aplicación, haga lo siguiente:

  1. En el Panel de control, abra Herramientas administrativas.
  2. Abra el Visor de sucesos.
  3. Haga clic con el botón secundario en Aplicación y, a continuación, haga clic en Propiedades.
  4. Realice una de las acciones siguientes o ambas:
    • Aumente el valor de Máximo tamaño de registro.
    • Seleccione Sobrescribir sucesos cuando sea necesario.

El registro de la aplicación contiene errores inesperados

Si se producen errores inesperados en el registro de la aplicación, intente reiniciar el motor de Notification Services.

Por ejemplo, si quita una aplicación de una instancia mientras se ejecuta el servicio de Windows y ve errores en el registro de eventos de la aplicación que ha quitado, reinicie el servicio de Windows para que no aparezcan dichos errores.

Para obtener más información, vea Iniciar y detener instancias de Notification Services.

Solucionar problemas de recopilación de eventos

No se pueden enviar eventos a una aplicación

Cuando intente solucionar un problema de recopilación de eventos, compruebe lo siguiente:

  • Si utiliza un proveedor de eventos alojado, compruebe que el motor de que ejecuta el proveedor de eventos está funcionando.
  • Asegúrese de que la recopilación de eventos está habilitada. Puede ver rápidamente el estado de componentes de la instancia si ejecuta el comando nscontrol status. Si el estado de los eventos es Deshabilitado o Habilitar Pendiente, no podrá enviar eventos.
    Para obtener más información acerca de la visualización del estado, vea Ver el estado de instancias, aplicaciones y componentes.
    Para obtener más información acerca de la habilitación y deshabilitación de componentes, vea Habilitar y deshabilitar instancias, aplicaciones o componentes.
  • Compruebe que la cuenta utilizada para ejecutar el proveedor de eventos tiene permisos NSEventProvider en las bases de datos de instancia y de aplicación.

Se produce un error del proveedor de eventos FileSystemWatcher

Puede haber errores en el proveedor de eventos FileSystemWatcher si se dañan los contadores de rendimiento del servidor. Si recibe el siguiente mensaje de error en el registro de eventos, hay un contador de rendimiento dañado:

Id. de evento:

Si un contador de rendimiento está dañado, no devolverá ningún valor. Para intentar solucionar el daño, realice lo siguiente:

  1. Si la instancia se está ejecutando, deténgala. Para obtener más información, vea Iniciar y detener instancias de Notification Services.
  2. Cierre las aplicaciones que realicen consultas a los contadores de rendimiento de Notification Services, como el Monitor de sistema.
  3. Vuelva a registrar la instancia. Para obtener más información, vea Actualizar la información del Registro.

De esta forma se volverán a crear los contadores de rendimiento de la instancia. Puede que sea necesario ejecutar estos pasos varias veces.

Solucionar problemas de generación y entrega de notificaciones

Se generan notificaciones duplicadas

Si los suscriptores reciben notificaciones duplicadas, compruebe cómo está recopilando y utilizando los eventos:

  • Compruebe que las reglas de generación de notificaciones no obtienen acceso directamente a la tabla de notificaciones cuando deberían tener acceso a una vista denominada según la clase de notificación. La vista devuelve sólo el conjunto actual de eventos, mientras que la tabla de notificaciones contiene todos los eventos que no se han quitado mediante Vacuumer.
    Por ejemplo, si el nombre de una clase de evento es StockEvent, utilice la vista StockEvent en la regla de suscripción y no la tabla NSStockEventEvents.
  • Si está obteniendo eventos de otro origen, como una crónica de eventos o una tabla externa, la consulta debe contener lógica para seleccionar sólo los datos que desea utilizar para crear notificaciones. Por ejemplo, podría incluir eventos enviados durante las 24 horas anteriores o eventos con un valor específico en una columna. Las instrucciones de las reglas de suscripción pueden modificar valores del origen de eventos para poder realizar un seguimiento del uso de los eventos.
  • Compruebe que no está enviando los mismos datos de eventos varias veces.

Para obtener más información acerca de la escritura de reglas de suscripción, vea Definir reglas de suscripción.

No se generan o no se entregan notificaciones

Si no se envían notificaciones desde la aplicación, compruebe lo siguiente:

  • ¿Se está ejecutando el motor de que ejecuta el componente generador? ¿Está habilitado?
  • ¿Hay algún evento disponible?
    Ejecute el procedimiento almacenado NSDiagnosticEventClass de la base de datos de instancia. Consulte la columna EventBatchesCollectedCount para ver si los eventos han llegado cuando se esperaba.
  • ¿Hay alguna suscripción?
    Utilice la vista NSSubscriptionClassNameView de la base de datos de aplicación para comprobar que la aplicación tiene suscripciones que evaluar.
  • ¿Se han programado correctamente las suscripciones programadas?
    Utilice la vista NSSubscriptionClassNameView de la base de datos de aplicación o ejecute los procedimientos almacenados NSScheduledSubscriptionList y NSScheduledSubscriptionDetails de la base de datos de aplicación para ver los detalles de las suscripciones.
  • ¿Existen los dispositivos de suscriptor a los que se hace referencia en la notificación?
    En las reglas de suscripción, debe proporcionar un Id. de suscriptor y un nombre de dispositivo de suscriptor. El nombre de dispositivo de suscriptor debe coincidir con el nombre de un dispositivo de suscriptor definido por el suscriptor. Para ver los dispositivos de suscriptor, utilice NSSubscriberDeviceView en la base de datos de instancia.
  • ¿Agotan las reglas el tiempo de espera?
    Si las reglas de suscripción que generan las notificaciones agotan el tiempo de espera, la aplicación no generará notificaciones. Compruebe que las reglas son eficaces, que tiene definidos los índices adecuados en los datos de eventos y suscripciones, que ejecuta Vacuumer para quitar datos antiguos y que las reglas no están siendo bloqueadas por otros procesos que se ejecutan en el servidor. Para obtener más información acerca del desarrollo de reglas de suscripción, vea Definir reglas de suscripción.
  • ¿Se están generando notificaciones?
    Ejecute el procedimiento almacenado NSDiagnosticNotificationClass de la base de datos de instancia para comprobar que se están generando notificaciones. Compruebe la columna NotificationsGenerated del intervalo en el que esperaba que se generaran las notificaciones. Si no hay notificaciones, es posible que no haya eventos o suscripciones o que las reglas de coincidencia de clase de suscripción no hayan insertado modificaciones en la función de clase de notificación. Para obtener más información acerca de las reglas, vea Definir reglas de suscripción.
  • ¿Se están produciendo errores en las notificaciones?
    Ejecute el procedimiento almacenado NSDiagnosticFailedNotifications para comprobar si hay errores en las notificaciones.
  • ¿Van las notificaciones al canal de entrega correcto?
    Compruebe que la aplicación define los protocolos correctos para la clase de notificación y que las suscripciones agregadas a la aplicación utilizan el canal de entrega correcto.
  • ¿Funcionan los canales de entrega?
    Ejecute el informe NSDiagnosticDeliveryChannel para ver si los canales de entrega funcionan.
  • ¿Están habilitados los distribuidores?
    Para obtener más información acerca de la habilitación y deshabilitación de componentes, vea Habilitar y deshabilitar instancias, aplicaciones o componentes.

Se producen errores genéricos de entrega

Algunos errores de entrega pueden ser realmente errores de configuración. Por ejemplo, si configura incorrectamente un canal de entrega SMTP, cuando Notification Services intente entregar una notificación a través del canal de entrega, puede recibir un mensaje como el siguiente:

SMTP Delivery Notification Generic Error (Error genérico de notificación de entrega SMTP)

Si recibe varios mensajes de error como éste, compruebe que la configuración de los canales de entrega es correcta. Para obtener más información, vea Definir canales de entrega.

Se produce un error en la entrega SMTP

Cuando se utiliza el protocolo SMTP de los Servicios de Internet Information Server (IIS) con el servicio SMTP IIS local, Notification Services debe buscar en un directorio IIS para determinar dónde debe entregar las notificaciones. Únicamente los administradores pueden obtener acceso a esta información.

Para utilizar el servicio SMTP IIS local, la cuenta utilizada para ejecutar el componente motor del distribuidor debe ser un miembro del grupo local de Administradores.

El distribuidor agota el tiempo de espera

Si recibe diversos errores de tiempo de espera en el registro de eventos, puede ser que el nivel de registro del distribuidor sea demasiado elevado. Esto suele ocurrir únicamente cuando el sistema de bases de datos procesa grandes volúmenes de notificaciones y no puede controlar las tareas de distribución y registro.

Para resolver el problema, desactive el registro. Para obtener más información, vea Especificar configuraciones de ejecución de protocolo de entrega.

Solucionar problemas de Vacuumer

No se están quitando los datos, lo que da lugar a tablas de eventos y notificaciones de gran tamaño

Si no se quitan los datos de la base de datos de aplicación como se esperaba, compruebe lo siguiente:

  • ¿Proporciona la definición de la aplicación una programación de Vacuumer? Para obtener más información, vea Configurar la supresión de datos.
  • ¿Se ha especificado una antigüedad de retención razonable? Cuanto mayor sea la antigüedad de retención, más datos se acumularán en las tablas.
  • ¿Se ejecuta Vacuumer durante un periodo de poca actividad del sistema? Si no es así, puede que Vacuumer no disponga de recursos de sistema suficientes para quitar los datos de una forma eficaz.
    Observe que la hora de inicio es un valor UTC. Por ejemplo, si especifica un valor de 02:00:00 como hora de inicio, eso significa 2:00 a.m. hora del meridiano de Greenwich. Para especificar una hora de 2:00 a.m. en su zona horaria, agregue o reste la diferencia entre su zona horaria y la hora del meridiano de Greenwich. Por ejemplo, la hora del Pacífico tiene un retardo de 8 horas con respecto a la hora del meridiano de Greenwich. Para ejecutar Vacuumer a las 2:00 a.m. hora del Pacífico, especifique una hora de inicio de 10:00:00.
  • ¿Es adecuada la duración de Vacuumer? Según el volumen de datos, puede necesitar ejecutar Vacuumer durante períodos más largos.

Para evaluar el rendimiento de Vacuumer, utilice los recursos siguientes:

  • Ejecute el procedimiento almacenado NSSnapshotApplications para determinar cuándo se ejecutó Vacuumer por última vez y cuántos eventos y notificaciones se quitaron. Para obtener más información, vea NSSnapshotApplications (Transact-SQL).
  • Supervise el objeto de rendimiento NS$instanceName: Vacuumer mediante Windows Performance. Para obtener más información, vea NS$instance_name: Vacuumer (objeto).

Solucionar problemas de aplicaciones Web

La aplicación de administración de suscripciones no puede obtener acceso a la instancia de Notification Services

La aplicación de administración de suscripciones debe ser capaz de encontrar y obtener acceso a las bases de datos de instancia y de aplicación. Esto exige que la instancia esté registrada en el servidor en el que se está ejecutando la aplicación y que la cuenta utilizada por la aplicación se agregue a la función NSSubscriberAdmin de las bases de datos de instancia y de aplicación. Para obtener más información, vea Implementar una interfaz de administración de suscripciones.

Vea también

Tareas

Preguntas más frecuentes acerca de Notification Services
Configurar el registro de eventos de Notification Services
Usar mensajes de eventos

Ayuda e información

Obtener ayuda sobre SQL Server 2005