Alojar el motor de Notification Services

Para cada instancia de Notification Services, Notification Services 2.0 requirió que se instalara un servicio de Windows en cada servidor que ejecutara un proveedor de eventos alojado, un generador o un distribuidor. Para los programadores que deseaban redistribuir aplicaciones de notificaciones, esto agregó uno o varios servicios de Windows a sus implementaciones y creó un servicio más que administrar.

En SQL Server 2005, puede alojar el motor de Notification Services en sus propias aplicaciones o sus procesos. Si se aloja el motor, no se instala el servicio de Windows NS$instanceName para ejecutar componentes de motor. Esto simplifica la incrustación de las soluciones de Notification Services en sus aplicaciones.

Alojar el motor de Notification Services

Notification Services proporciona una API muy sencilla para alojar el motor de Notification Services. Simplemente cree una instancia de la clase NSInstance, proporcionando el nombre de la instancia que desea alojar. A continuación, llame al método StartInstance para iniciar el motor. Para detener el motor, llame al método StopInstance. En el ejemplo siguiente se muestra el código requerido para detener e iniciar el motor:

try
{
    // Instantiate the Notification Services instance.
    NSInstance nsInstance = new NSInstance("FlightInstance");

    // Start the instance.
    Console.WriteLine("Starting instance...");
    nsInstance.StartInstance();

    // Check the IsRunning property to verify that 
    // this process is running the instance.
    if (nsInstance.IsRunning == true)
        Console.WriteLine("The instance is running.");
    else
        Console.WriteLine("The instance is NOT running!");

    // Stop instance.
    Console.WriteLine("Stopping instance...");
    nsInstance.StopInstance();

}
catch (Exception ex)
{
    // Write exception message to the console.
    Console.WriteLine(ex.Message);
}

Controlar errores

Mientras se esté ejecutando la instancia, puede que se produzcan errores en tiempo de ejecución. Estos errores se comunican al proceso de alojamiento mediante un delegado ErrorEventHandler que se invoca cuando se activa el evento Error. Cuando se inicia el evento, se llama al delegado para notificar al host y la instancia se detiene.

En el ejemplo siguiente se muestra cómo responder a este evento:

// Define an error handler for the hosted execution engine.
private void InstanceErrorHandler(object sender, ErrorEventArgs e)
{
    Console.WriteLine (e.GetException ().ToString ());
}

// Start and stop the hosted execution engine.
public void ErrorHandlingStartStop()
{
    try
    {
        // Instantiate the Notification Services instance.
        NSInstance nsInstance = new NSInstance("FlightInstance");

        // Add an error handler to the instance.
        nsInstance.Error += 
            new NSInstance.ErrorEventHandler(InstanceErrorHandler);

        // Start the instance.
        Console.WriteLine("Starting instance...");
        nsInstance.StartInstance();

        // Check the IsRunning property to verify that 
        // this process is running the instance.
        if (nsInstance.IsRunning == true)
            Console.WriteLine("The instance is running.");
        else
            Console.WriteLine("The instance is NOT running!");


        // Stop the instance.
        Console.WriteLine("Stopping instance...");
        nsInstance.StopInstance();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

El remitente es el objeto NSInstance.

Ejecutar una instancia de Notification Services

Para ejecutar el motor que ejecuta proveedores de eventos alojados, generadores y distribuidores en el equipo local, debe hacer lo siguiente:

  • Debe instalar los componentes del motor de Notification Services en cada servidor que ejecute un proveedor de eventos alojado, generador o distribuidor.
  • Debe registrar la instancia en cada uno de estos servidores. No es necesario que, cuando registre la instancia, cree el servicio de Windows. Su motor alojado puede ocupar el lugar del servicio de Windows.
  • Debe instalar su aplicación en cada uno de estos servidores.
  • Debe llamar al código que crea una instancia e inicia la instancia en cada uno de estos servidores.

Si instala el servicio de Windows, tenga en cuenta que no puede iniciar el servicio de Windows y después iniciar la instancia en la aplicación al mismo tiempo. Sólo un subproceso de un proceso puede ser "propietario" de la instancia en cualquier momento.

Si inicia el servicio de Windows NS$instanceName y, a continuación, intenta iniciar la instancia en su aplicación, Notification Services iniciará una excepción y su aplicación no iniciará la instancia. También lo contrario es posible: si su aplicación ejecuta la instancia y, a continuación, intenta iniciar el servicio de Windows, el servicio de Windows no se podrá iniciar.

Si se produce un error en el subproceso propietario del motor de la instancia en ese servidor, otros subprocesos de ese proceso pueden convertirse en propietarios de la instancia.

[!NOTA] Si aloja el motor, las herramientas estándar utilizadas para iniciar y detener la instancia, como SQL Server Management Studio, comandos net y Servicios en el Panel de control, no se pueden utilizar para iniciar y detener la instancia.

Requisitos de seguridad

Su aplicación o su proceso controlan la operación de proveedores de eventos alojados, generadores y distribuidores, y deben tener los permisos apropiados de Windows y de base de datos para realizar el trabajo relacionado. Esto incluye la pertenencia al grupo SQLServer2005NotificationServicesUser$nombreDeEquipo de Windows y la pertenencia a la función o funciones apropiadas de base de datos de Notification Services. Para obtener más información acerca de los permisos necesarios para ejecutar una instancia de Notification Services, vea Configurar cuentas de Windows para una instancia de Notification Services y Configurar permisos de SQL Server para una instancia de Notification Services.

Incrustar componentes de Notification Services

Si está incrustando Notification Services en su aplicación, compruebe que incluye los ensamblados siguientes:

  • Microsoft.SqlServer.NotificationServices.dll
  • Microsoft.SqlServer.Smo.dll
  • nscontrol.exe

Consulte su contrato de licencia de SQL Server 2005 para la redistribución de componentes de SQL Server 2005.

Vea también

Conceptos

Consideraciones de seguridad para Notification Services
Configurar cuentas de Windows para una instancia de Notification Services
Configurar permisos de SQL Server para una instancia de Notification Services

Otros recursos

Implementar Notification Services

Ayuda e información

Obtener ayuda sobre SQL Server 2005