Hébergement du moteur de Notification Services

Pour chaque instance de Notification Services, Notification Services 2.0 vous imposait d'installer un service Windows sur chaque serveur exécutant un fournisseur d'événements hébergé, un générateur ou un serveur de distribution. Pour les développeurs qui souhaitaient redistribuer des applications de notifications, cette conception ajoutait un ou plusieurs services Windows à leurs déploiements et créait un service supplémentaire à gérer.

Dans SQL Server 2005, vous pouvez héberger le moteur de Notification Services dans vos propres applications ou processus. Si vous hébergez le moteur, vous n'installez pas le service Windows NS$instanceName pour exécuter les composants du moteur. Cela simplifie l'incorporation de solutions Notification Services dans vos applications.

Hébergement du moteur de Notification Services

Notification Services fournit une API très simple pour héberger le moteur Notification Services. Instanciez simplement la classe NSInstance, en fournissant le nom de l'instance que vous souhaitez héberger. Ensuite, appelez la méthode StartInstance pour démarrer le moteur. Pour arrêter le moteur, appelez la méthode StopInstance. L'exemple suivant montre le code nécessaire pour arrêter et démarrer le moteur :

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);
}

Gestion des erreurs

Pendant que l'instance est en cours d'exécution, elle peut rencontrer des erreurs d'exécution. Ces erreurs sont signalées au processus d'hébergement par le biais d'un délégué ErrorEventHandler qui est appelé lorsque l'événement Error est déclenché. Lorsque l'événement est déclenché, le délégué est appelé pour notifier l'hôte et l'instance est arrêtée.

L'exemple suivant montre comment répondre à cet événement :

// 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);
    }
}

L'expéditeur est l'objet NSInstance.

Exécution d'une instance de Notification Services

Pour exécuter le moteur qui exécute les fournisseurs d'événements hébergés, les générateurs et les serveurs de distribution sur l'ordinateur local, vous devez effectuer les opérations suivantes :

  • Vous devez installer les composants du moteur Notification Services sur chaque serveur qui exécute un fournisseur d'événements hébergé, un générateur ou un serveur de distribution.
  • Vous devez inscrire l'instance sur chacun de ces serveurs. Lors de l'inscription de l'instance, il n'est pas nécessaire de créer le service Windows. Votre moteur hébergé peut prendre la place du service Windows.
  • Vous devez installer votre application sur chacun de ces serveurs.
  • Vous devez appeler votre code qui instancie et démarre l'instance sur chacun de ces serveurs.

Si vous installez le service Windows, notez que vous ne pouvez pas démarrer en même temps le service Windows et l'instance dans votre application. Seul un thread d'un processus unique peut « posséder » l'instance à un instant donné.

Si vous démarrez le service Windows NS$instancename, puis tentez de démarrer l'instance dans votre application, Notification Services renverra une exception et votre application ne démarrera pas l'instance. L'inverse est également vrai : si votre application exécute l'instance et si ensuite vous tentez de démarrer le service Windows, ce dernier n'y parviendra pas.

Si le thread qui détient le moteur de l'instance sur le serveur échoue, d'autres threads de ce processus peuvent s'approprier l'instance.

ms171236.note(fr-fr,SQL.90).gifRemarque :
Si vous hébergez le moteur, les outils standard utilisés pour démarrer et arrêter l'instance, tels que SQL Server Management Studio, les commandes net et Services du Panneau de configuration, ne peuvent pas être utilisés pour démarrer et arrêter l'instance.

Spécifications de sécurité

Votre application ou votre processus contrôle le fonctionnement des fournisseurs d'événements hébergés, des générateurs et des serveurs de distribution et doivent posséder les autorisations Windows et de base de données appropriées pour effectuer les tâches correspondantes. Il s'agit notamment de l'appartenance au groupe Windows SQLServer2005NotificationServicesUser$NomOrdinateur et de l'appartenance aux rôles appropriés de base de données Notification Services. Pour plus d'informations sur les autorisations nécessaires à l'exécution d'une instance de Notification Services, consultez Configuration des compte Windows pour une instance de Notification Services et Configuration des autorisations SQL Server pour une instance de Notification Services.

Incorporation de composants de Notification Services

Si vous incorporez Notification Services dans votre application, veillez à inclure les assemblys suivants :

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

Reportez-vous à votre contrat de licence SQL Server 2005 concernant la redistribution des composants SQL Server 2005.

Voir aussi

Concepts

Considérations relatives à sécurité de Notification Services
Configuration des compte Windows pour une instance de Notification Services
Configuration des autorisations SQL Server pour une instance de Notification Services

Autres ressources

Déploiement de Notification Services

Aide et Informations

Assistance sur SQL Server 2005