Exemple Stock

Mis à jour : 17 juillet 2006

L'exemple Stock est une application Microsoft SQL Server 2005 Notification Services qui utilise à la fois des abonnements pilotés par les événements et des abonnements planifiés pour produire des notifications basées sur des données boursières. Les utilisateurs abonnés reçoivent des notifications si le cours de l'action dépasse une valeur de déclenchement spécifiée.

Cet exemple montre également comment héberger le moteur de Notification Services dans une application personnalisée au lieu d'utiliser un service Microsoft Windows créé par Notification Services.

Scénario

Des investisseurs s'abonnent à des notifications sur les cours des actions. Chaque abonnement spécifie un code d'action et il est soit piloté par les événements, soit planifié.

Pour les abonnements pilotés par les événements, lorsque des événements d'action se produisent, Notification Services génère une notification si toutes les conditions suivantes sont remplies :

  • Le code d'action dans l'événement correspond au code d'action dans l'abonnement.
  • Le nouveau cours de l'action est supérieur à la valeur de déclenchement spécifiée dans l'abonnement.
  • Le cours le plus élevé atteint jusqu'ici par l'action, qui est stocké dans une chronique des événements d'action, est inférieur à la valeur de déclenchement de l'abonnement. Ceci permet de s'assurer que l'abonné ne reçoit pas plusieurs notifications pour la même action.

Si le nouveau cours de l'action est supérieur au cours enregistré dans la chronique, ou si le code de l'action n'existe pas dans la chronique, Notification Services met à jour la chronique.

Les notifications pour les abonnements pilotés par les événements sont envoyées une par une.

Pour les abonnements planifiés, Notification Services compare les données de la chronique du cours de l'action avec celles des abonnements planifiés. Une correspondance est constatée si le code de l'action dans l'abonnement correspond à un code d'action dans la chronique.

Pour chaque correspondance constatée, Notification Services produit une notification. S'il doit envoyer plusieurs notifications à un même abonné, le serveur de distribution les regroupe en une seule notification qui fournit des données sur l'ensemble du portefeuille d'actions de l'abonné.

Langages

XML, XSD, XSLT et Microsoft Visual C# ou Microsoft Visual Basic.

Fonctionnalités

Domaine d'application Fonctionnalités

Classe Event

Une classe d'événement et une chronique d'événements.

Classe Subscription

Deux classes d'abonnement, l'une pour les abonnements pilotés par les événements, l'autre pour les abonnements planifiés.

Classe Notification

Deux classes de notification, l'une pour les notifications pilotées par les événements, l'autre pour les notifications planifiées. Les notifications planifiées utilisent la remise de type digest.

Fournisseurs d'événements

Un fournisseur d'événements FileSystemWatcher et un fournisseur d'événements personnalisé, non hébergé.

Modules de formatage de contenu

Module de formatage de contenu XSLT Notification Services. Chaque classe de notification spécifie son propre fichier XSLT pour le module de formatage de contenu.

Protocoles de remise

Protocoles de remise FTP et SMTP.

Moteur de Notification Services

Hébergé par une application console.

Configuration requise

Avant d'exécuter cet exemple, vérifiez que le logiciel suivant est installé :

  • SQL Server 2005, y compris les composants suivants :
    • Moteur de base de données.
    • Notification Services.
    • SQL Server Management Studio.
    • Exemples Notification Services. Ces exemples accompagnent SQL Server 2005. Vous pouvez télécharger la dernière version des exemples sur le site Web du SQL Server Developer Center (Centre des développeurs SQL Server).
    • Le Kit de développement .NET Framework SDK 2.0 ou Microsoft Visual Studio 2005. Vous pouvez obtenir gratuitement le Kit de développement .NET Framework SDK. Consultez Installation du SDK .NET Framework.

Génération de la solution

Si vous n'avez pas encore créé un fichier de clé de nom fort, utilisez la procédure suivante pour générer ce fichier.

Pour générer un fichier de clé de nom fort

  1. Ouvrez une invite de commandes Microsoft Visual Studio 2005. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.

    -- Ou --

    Ouvrez une invite de commandes Microsoft .NET Framework. Cliquez sur Démarrer, pointez sur Tous les programmes et sur Kit de développement Microsoft .NET Framework SDK 2.0, puis cliquez sur Invite de commandes du Kit de développement SDK.

  2. Utilisez la commande CD (changer de répertoire) pour remplacer le dossier actif dans la fenêtre de l'invite de commandes par le dossier dans lequel les exemples sont installés.

    ms160739.note(fr-fr,SQL.90).gifRemarque :
    Pour déterminer le dossier dans lequel se trouvent les exemples, cliquez sur le bouton Démarrer, pointez successivement sur Tous les programmes, sur Microsoft SQL Server 2005 et sur Documentation et didacticiels, puis cliquez sur le répertoire Samples. Si l'emplacement d'installation par défaut a été utilisé, les exemples se trouvent dans <lecteur_système>:\Program Files\Microsoft SQL Server\100\Samples.
  3. À l'invite de commandes, exécutez la commande suivante pour générer le fichier de clé :

    sn -k SampleKey.snk

    ms160739.note(fr-fr,SQL.90).gifImportant :
    Pour plus d'informations sur la paire de clés de nom fort, consultez l'article de sécurité concernant les noms forts et la sécurité dans .NET Framework, dans le Centre de développement .NET sur MSDN.

Générez la solution afin de pouvoir démarrer l'instance immédiatement après l'avoir créée.

Générez la solution Visual Studio

  • Si vous utilisez le Kit de développement .NET Framework SDK, procédez comme suit :

    1. Dans le menu Démarrer, pointez sur Tous les programmes\Microsoft .NET Framework SDK v2.0, puis cliquez sur Invite de commandes SDK.
    2. Naviguez jusqu'au dossier racine de l'exemple Stock. Tapez la commande suivante (si ce dossier se trouve à l'emplacement par défaut) :
      cd C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. Tapez la commande suivante pour générer la solution :
      [C#] 
      msbuild Stock.sln
      [Visual Basic] 
      msbuild Stock_VB.sln
  • Ou bien, si vous utilisez Visual Studio 2005, procédez comme suit :

    1. Ouvrez le fichier solution de votre choix (Stock.sln ou Stock_VB.sln).
    2. Générez la solution.

Déploiement de l'instance de Notification Services

Pour déployer l'instance de Notification Services, procédez de la façon suivante :

  • Créez l'instance de Notification Services.
  • Inscrivez l'instance de Notification Services.
  • Octroyez les autorisations pour SQL Server, les bases de données et les dossiers.

Les procédures suivantes montrent comment réaliser ces tâches.

Étape 1 : Créez l'instance de Notification Services

  1. Ouvrez SQL Server Management Studio et connectez-vous à une instance de SQL Server.

  2. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le dossier Notification Services, puis sélectionnez Nouvelle instance de Notification Services.

  3. Dans la boîte de dialogue Nouvelle instance de Notification Services, cliquez sur Parcourir et sélectionnez le fichier InstanceConfig.xml dans le dossier racine de l'exemple Stock.

  4. Dans la zone Paramètres, entrez les valeurs des trois paramètres :

    • SampleDirectory est le chemin d'accès du dossier racine de l'exemple Stock. Il s'agit par défaut de C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock.
    • NotificationServicesHost est le nom du serveur local.
    • SQLServer est le nom de l'instance de SQL Server.
  5. Activez la case à cocher Activer l'instance après sa création.

  6. Cliquez sur OK.

  7. Lorsque Notification Services a fini de créer l'instance, cliquez sur Fermer.

Étape 2 : Inscrivez l'instance de Notification Services

  1. Dans SQL Server Management Studio, ouvrez le nœud Notification Services, cliquez avec le bouton droit sur StockInstance, pointez sur Tâches, puis sélectionnez Inscrire.

    Ne sélectionnez aucune option. Comme le moteur sera hébergé par une application personnalisée, ne créez pas le service Windows.

  2. Cliquez sur OK.

  3. Lorsque Notification Services a fini d'inscrire l'instance, cliquez sur Fermer.

ms160739.note(fr-fr,SQL.90).gifRemarque :
Si vous déployez un exemple Notification Services à l'aide d'un compte de propriétaire de base de données ou d'un compte d'administrateur système, il n'est pas nécessaire d'accorder les autorisations SQL Server sur le compte. L'octroi de ces autorisations risque d'entraîner une erreur, que vous pouvez d'ailleurs ignorer. Lorsque vous déployez vos propres applications, vous devez utiliser des comptes dotés de privilèges réduits afin d'améliorer la sécurité.

Étape 3 : Octroyez les autorisations pour SQL Server, Windows et les dossiers

  1. Dans l'Explorateur d'objets, développez le nœud Sécurité.

  2. Si vous devez créer un compte de connexion de base de données, cliquez avec le bouton droit sur Connexions et sélectionnez Nouvelle connexion, puis créez le compte de connexion :

    • Pour utiliser l'authentification Windows, sélectionnez Authentification Windows et entrez le compte Windows que vous avez spécifié pour inscrire l'instance.
    • Si vous devez utiliser l'authentification SQL Server, sélectionnez Authentification SQL Server et entrez le nom et le mot de passe de connexion SQL Server que vous avez spécifiés pour inscrire l'instance.
  3. Si la connexion utilisée pour exécuter cet exemple a déjà accès à SQL Server, cliquez avec le bouton droit sur la connexion, puis sélectionnez Propriétés.

  4. Dans le volet gauche de la boîte de dialogue Connexion, sélectionnez l'option de mappage des utilisateurs.

  5. Octroyez les autorisations pour la base de données StockInstanceNSMain :

    1. Dans la zone réservée aux utilisateurs mappés à cette connexion, sélectionnez StockInstanceNSMain.
    2. Dans la zone Appartenance au rôle de base de données pour : StockInstanceNSMain, sélectionnez NSRunService.
  6. Octroyez les autorisations pour la base de données StockInstanceStock :

    1. Dans la zone réservée aux utilisateurs mappés à cette connexion, sélectionnez StockInstanceStock.
    2. Dans la zone Appartenance au rôle de base de données pour : StockInstanceStock, sélectionnez NSRunService.
  7. Cliquez sur OK pour appliquer les autorisations SQL Server.

  8. Configurez la sécurité pour le dossier Events :

    1. À l'aide de l'Explorateur Windows, naviguez jusqu'au dossier Events de l'exemple Stock.
    2. Cliquez avec le bouton droit sur le dossier Events, sélectionnez Partage et sécurité, puis sélectionnez l'onglet Sécurité.
    3. Cliquez sur Ajouter et ajoutez le compte utilisé pour exécuter l'exemple.
    4. Dans la zone Noms d'utilisateurs ou de groupes, sélectionnez le compte que vous venez d'ajouter.
    5. Dans la zone Autorisations pour, sélectionnez les autorisations Lire et Modifier.
    6. Cliquez sur OK pour appliquer les modifications.
  9. Configurez la sécurité pour le dossier Notifications :

    1. Naviguez jusqu'au dossier Notifications de l'exemple Stock.
    2. Cliquez avec le bouton droit sur le dossier Notifications, sélectionnez Partage et sécurité, puis sélectionnez l'onglet Sécurité.
    3. Cliquez sur Ajouter et ajoutez le compte utilisé pour exécuter l'exemple.
    4. Dans la zone Noms d'utilisateurs ou de groupes, sélectionnez le compte que vous venez d'ajouter.
    5. Dans la zone Autorisations pour, sélectionnez Écrire.
    6. Cliquez sur OK pour appliquer les modifications.

Exécution de l'exemple

Utilisez la procédure suivante pour exécuter l'exemple :

  • Démarrez l'instance.
  • Ajoutez des abonnés et des abonnements.
  • Soumettez des événements.

Une fois que vous avez effectué ces tâches, Notification Services génère des notifications. Les procédures suivantes montrent comment effectuer ces tâches et afficher ensuite les notifications résultantes.

Étape 1 : Démarrez le moteur hébergé

  1. Vérifiez que le compte sous lequel vous exécutez le moteur hébergé est un membre du groupe Windows ComputerName SQLServer2005NotificationServicesUser$ possédant des autorisations de lecture et d'exécution des binaires Notification Services, ou que le compte dispose des autorisations de lecture et d'exécution des fichiers dans le dossier C:\Program Files\Microsoft SQL Server\90\Notification Services.

  2. Dans l'Explorateur Windows, naviguez jusqu'au dossier HostableExecutionEngine\language\HostableExecutionEngine\bin\Debug de l'exemple Stock.

  3. Double-cliquez sur HostableExecutionEngine.exe pour exécuter l'application console qui héberge le moteur de Notification Services.

    Important   N'appuyez pas sur la touche ENTRÉE. Le moteur doit s'exécuter pour que l'application Notification Services produise des notifications.

Étape 2 : Ajoutez des abonnés, des abonnements et des événements

  1. Exécutez AddSubscribers.exe.

    Ce fichier se trouve dans le sous-répertoire AddSubscribers\language\AddSubscribers\bin\Debug du répertoire d'installation de l'exemple Stock.

    Après avoir ajouté les abonnés, appuyez sur la touche ENTRÉE pour fermer l'application console.

  2. Exécutez AddSubscriptions.exe.

    Ce fichier se trouve dans le sous-répertoire AddSubscriptions\language\AddSubscriptions\bin\Debug du répertoire d'installation de l'exemple Stock.

    Après avoir ajouté les abonnements, appuyez sur la touche ENTRÉE pour fermer l'application console.

  3. Exécutez NonHostedEventProvider.exe.

    Ce fichier se trouve dans le sous-répertoire NonHostedEventProvider\language\NonHostedEventProvider\bin\Debug du répertoire d'installation de l'exemple Stock.

    Des événements sont ainsi ajoutés à l'application via un fournisseur d'événements non hébergé qui est exécuté en dehors de l'application. L'étape suivante montre comment soumettre des événements à un fournisseur d'événements FileSystemWatcher hébergé.

ms160739.note(fr-fr,SQL.90).gifRemarque :
Si vous travaillez dans une application de production ou si vous exécutez votre application avec un compte restreint, ajoutez la connexion SQL Server de l'application au rôle de base de données NSSubscriberAdmin dans les bases de données d'instance et d'application.

Étape 3 : Soumettez des événements en déposant un fichier d'événements dans le dossier Events

  1. Dans l'Explorateur Windows, naviguez jusqu'au dossier racine de l'exemple Stock, puis copiez le fichier EventData.xml vers le sous-dossier Events.

    ms160739.note(fr-fr,SQL.90).gifRemarque :
    Si vous avez soumis auparavant des événements par le biais d'un fournisseur d'événements non hébergé, cette étape est facultative. Si vous ne souhaitez pas soumettre d'autres événements et générer d'autres notifications, passez à l'étape suivante pour afficher les notifications.

    Lorsque vous déposez le fichier, le fournisseur d'événements FileSystemWatcher lit les données du fichier, les soumet à l'application, puis affecte au fichier l'extension .done.

    Si une erreur se produit lors de la lecture ou de la soumission des données, le fournisseur d'événements affecte au fichier l'extension .err. Pour plus d'informations sur l'erreur, consultez le journal d'application à l'aide de l'Observateur d'événements Windows.

Étape 4 : Affichez les notifications

  1. Laissez à Notification Services environ une minute pour produire les notifications.

  2. À l'aide de l'Explorateur Windows, naviguez jusqu'au dossier Notifications de l'exemple Stock. Vous devez y trouver un fichier nommé FileNotifications.txt qui contient toutes les notifications envoyées par cette application.

  3. Naviguez jusqu'au dossier où sont déposés les messages électroniques. Il s'agit généralement de l'un des dossiers de C:\Inetpub\mailroot. Selon l'état du serveur SMTP, les notifications doivent se trouver dans le dossier Pickup ou le dossier Queue. Si le service SMTP s'exécute, les messages peuvent avoir été déplacés vers le dossier Badmail.

ms160739.note(fr-fr,SQL.90).gifRemarque :
Si vous voulez générer une autre notification sans régénérer ni modifier l'exemple, exécutez la requête suivante : USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

Arrêt du moteur

Après avoir soumis des événements et affiché les notifications résultantes, arrêtez le moteur de Notification Services.

Pour arrêter le moteur

  • Dans la fenêtre de la console HostableExecutionEngine, appuyez sur la touche ENTRÉE pour arrêter le moteur.

Suppression de l'exemple

Utilisez la procédure suivante pour supprimer l'exemple Stock.

Pour supprimer l'exemple Stock

  1. Dans l'Explorateur d'objets, développez Notification Services.

  2. Cliquez avec le bouton droit sur StockInstance, pointez sur Tâches, puis sélectionnez Annuler l'inscription.

  3. Cliquez avec le bouton droit sur StockInstance, pointez sur Tâches, puis sélectionnez Supprimer.

Voir aussi

Autres ressources

Hébergement du moteur de Notification Services
Exemples SQL Server Notification Services
Sécurisation de Notification Services

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 juillet 2006

Nouveau contenu
  • Aux étapes 3 et 4 de la section Exécution de l'exemple, ajout d'informations concernant les options de soumission d'événements via le fournisseur d'événements non hébergé et l'utilisation du fournisseur d'événements FileSystemWatcher.
  • Ajout d'une remarque sur l'utilisation du rôle de base de données NSSubscriberAdmin.

14 avril 2006

Contenu ajouté :
  • Ajout d'une remarque sur l'exécution des exemples à l'aide des autorisations de propriétaire de base de données.

5 décembre 2005

Contenu modifié :
  • Modification des instructions concernant la génération d'un fichier de clé, entre autres le nom et l'emplacement de ce fichier.
  • Section des autorisations mise à jour pour faire ressortir les comptes qui ont besoin d'autorisations.