Exemple Inventory Tracker
Mis à jour : 17 juillet 2006
L'exemple Inventory Tracker montre comment utiliser des actions de condition pour permettre à des abonnés de définir leurs propres clauses de requêtes pour leur abonnement.
Scénario
Vous souhaitez permettre aux employés de votre société de recevoir une notification lorsque les niveaux de stock changent. Étant donné que différentes personnes souhaitent analyser différentes données (stock faible, stock élevé, changement significatif de niveau de stock, etc.), vous souhaitez permettre aux employés de créer leurs propres conditions pour leur abonnement.
Dans cet exemple, les abonnés Stephanie et David créent chacun un abonnement. L'abonnement de Stephanie spécifie qu'elle souhaite être informée lorsque le niveau de stock final du produit « Road-250 Black », est inférieur ou égal à 35 unités. L'abonnement de Stephanie spécifie qu'elle souhaite être informée lorsque le niveau de stock final du produit « Road250 Black », est inférieur ou égal à 35 unités.
Des événements sont ajoutés au système par un déclencheur de mise à jour sur la table AdventureWorks Production.Inventory Le déclencheur soumet des événements à l'application Inventory Tracker à chaque fois que des données de stock sont mises à jour. À la fin du quantum de générateur dans lequel les événements arrivent, l'application Inventory Tracker déclenche les règles qui établissent une correspondance entre les données d'événement et les données d'abonnement, puis elle génère des notifications.
Les notifications sont envoyées aux abonnés par messagerie électronique.
Langages
XML, XSLT, Transact-SQL, Microsoft Visual C# ou Microsoft Visual Basic
Fonctionnalités
L'exemple Inventory Tracker utilise les fonctionnalités suivantes de Notification Services.
Domaine d'application | Fonctionnalités |
---|---|
Classe d'événements |
File d'attente d'événements de base, aucune chronique. |
Classe d'abonnement |
Règles d'abonnement gérées par événements et utilisant des actions de condition afin de prendre en charge une logique d'abonnement flexible. Aucune chronique. |
Classe de notification |
Remise de type digest. |
Fournisseurs d'événements |
Fournisseur d'événements non hébergé, implémenté en tant que déclencheur de mise à jour dans la base de données AdventureWorks. |
Modules de formatage de contenu |
Module de formatage de contenu XML. |
Protocoles de remise |
Protocoles de remise de fichiers et SMTP. |
Moteur Notification Services |
Service Microsoft Windows, créé lors de l'inscription de l'instance. |
Configuration requise
Avant d'exécuter cet exemple, assurez-vous que les logiciels suivants sont installés :
- Microsoft 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).
- Exemple de base de données OLTP AdventureWorks. Cette base de données est fournie avec SQL Server 2005 et est également disponible sur le site Web du SQL Server Developer Center (Centre des développeurs SQL Server). Pour plus d'informations, consultez Installation des exemples de bases de données AdventureWorks et d'autres exemples via le programme d'installation.
- 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.
- Service SMTP (Simple Mail Transfer Protocol), qui est un composant des services Internet (IIS). Sur Microsoft Windows Server 2003, SMTP n'est pas installé par défaut avec les services IIS. Pour obtenir des instructions sur la façon d'installer et d'utiliser le service SMTP, consultez votre documentation IIS.
Remarque : Avant d'exécuter cet exemple, vérifiez que votre service SMTP est arrêté. L'arrêt du service SMTP conserve les messages sur le serveur au lieu de permettre au service SMTP de tenter de les envoyer à des abonnés non existants.
Génération de l'exemple
Pour générer l'instance, vous devez effectuer les opérations suivantes :
- Création d'une connexion SQL Server pour l'évaluation des règles.
- Création de l'instance de Notification Services.
- Inscription de l'instance de Notification Services.
- Accord des autorisations sur la base de données au service Windows.
- Création de déclencheurs et accord d'autorisations sur la base de données au compte d'évaluation de règles.
Les procédures suivantes montrent comment effectuer chacune de ces tâches pour l'exemple InventoryTracker.
Étape 1 : Création du compte de connexion SQL Server pour l'évaluation des règles
Ouvrez SQL Server Management Studio et connectez-vous à une instance de SQL Server.
Une application qui possède des règles contenant des actions de condition nécessite une connexion pour l'évaluation des conditions. L'utilisation de cette connexion distincte permet de limiter les données par rapport auxquelles les abonnés peuvent créer des règles et contribue à protéger les données sensibles.
Cette connexion doit exister sur le serveur et ne doit pas exister dans la base de données pour que vous puissiez créer l'instance de Notification Services. Cet exemple utilise une connexion protégée par l'authentification SQL Server nommée NSRulesEvaluator. Vous pouvez, dans vos propres applications, utiliser l'authentification SQL Server ou l'authentification Windows.
Remarque : Utilisez si possible l'authentification Windows. Dans l'Explorateur d'objets, développez le nœud Sécurité.
Cliquez avec le bouton droit sur Connexions et sélectionnez Nouvelle connexion.
Sélectionnez Authentification SQL Server.
Ce compte n'est pas utilisé pour les connexions au serveur. Il est utilisé par le générateur Notification Services dans l'instance du moteur de base de données afin d'évaluer des conditions.
Dans le champ Nom d'accès, tapez NSRulesEvaluator.
Entrez un mot de passe pour la connexion NSRulesEvaluator.
Dans la zone Base de données, sélectionnez AdventureWorks.
Cliquez sur OK.
Si une boîte de dialogue s'affiche pour signaler que la connexion n'a pas accès à la base de données par défaut, cliquez sur OK. Vous accorderez les autorisations sur la base de données à un stade ultérieur de cet exemple.
Étape 2 : Création de l'instance de Notification Services
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur Notification Services et sélectionnez Nouvelle instance de Notification Services.
Dans la boîte de dialogue Nouvelle instance de Notification Services, cliquez sur Parcourir, naviguez jusqu'au dossier InventoryTracker, puis sélectionnez le fichier InstanceConfig.xml.
Dans la zone Paramètres, entrez les valeurs des trois paramètres :
- SampleDirectory : le chemin d'accès au dossier racine de l'exemple Inventory Tracker. Le chemin d'accès par défaut est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\.
- SQLServer : le nom de l'instance du moteur de base de données.
- NotificationServicesHost : le nom du serveur qui exécute Notification Services. Pour les exemples, ce nom doit être celui de l'ordinateur local.
Activez la case à cocher Activer l'instance après sa création.
Cliquez sur OK.
Lorsque Notification Services a terminé la création de l'instance, cliquez sur Fermer.
Étape 3 : Inscription de l'instance de Notification Services
Dans l'Explorateur d'objets, développez le nœud Notification Services, cliquez avec le bouton droit sur InventoryTrackerInstance, pointez sur Tâches, puis sélectionnez Inscrire.
Dans la boîte de dialogue Inscrire, activez la case à cocher Créer un service Windows. Le service Windows exécute l'instance de Notification Services sur cet ordinateur.
Sous Ouverture de session du service, entrez un compte d'ouverture de session Windows et un mot de passe. Il s'agit du compte Windows sous lequel le service doit s'exécuter. Si vous utilisez l'Authentification Windows pour accéder à SQL Server, le service Windows utilisera également ce compte pour se connecter à SQL Server.
Pour utiliser l'Authentification SQL Server pour accéder à SQL Server, sélectionnez Authentification SQL Server sous Authentification, puis entrez un nom d'accès SQL Server et un mot de passe.
Nous recommandons d'utiliser l'authentification Windows.
Cliquez sur OK.
Lorsque Notification Services a terminé l'inscription de l'instance, cliquez sur Fermer.
Remarque : |
---|
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 4 : Accord des autorisations sur la base de données au service Windows
Dans l'Explorateur d'objets, développez Sécurité.
Si vous devez créer un compte de connexion de base de données pour le service Windows, 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é lors de l'inscription de l'instance.
- Si vous devez utiliser l'Authentification SQL Server, sélectionnez Authentification SQL Server, puis entrez le nom de connexion SQL Server et le mot de passe spécifiés lors de l'inscription de l'instance.
Si la connexion utilisée par le service Windows a déjà accès à SQL Server, cliquez avec le bouton droit sur la connexion, puis sélectionnez Propriétés.
Dans le volet gauche de la boîte de dialogue Connexion, sélectionnez l'option de mappage des utilisateurs.
Accord d'autorisations à la base de données AdventureWorks :
- Dans la zone réservée aux utilisateurs mappés à cette connexion, sélectionnez AdventureWorks.
- Dans la zone Appartenance au rôle de base de données pour : AdventureWorks, sélectionnez NSRunService.
Cliquez sur OK pour appliquer les autorisations.
Configurez la sécurité pour le dossier Notifications :
- Naviguez jusqu'au dossier Notifications de l'exemple.
- Cliquez avec le bouton droit sur le dossier Notifications, sélectionnez Partage et sécurité, puis sélectionnez l'onglet Sécurité.
- Cliquez sur Ajouter et ajoutez le compte utilisé par le service Windows.
- Dans la zone Noms d'utilisateurs ou de groupes, sélectionnez le compte que vous venez d'ajouter.
- Dans la zone Autorisations pour, sélectionnez Écriture.
- Cliquez sur OK pour appliquer les modifications.
Étape 5 : Configuration des déclencheurs de base de données et accord des autorisations de base de données
À partir du menu Fichier de SQL Server Management Studio, sélectionnez Ouvrir, puis Fichier.
Dans la boîte de dialogue Fichier, ouvrez SetupInventoryTrackerSample.sql.
L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.
Si la boîte de dialogue Se connecter au moteur de base de données s'affiche, entrez vos informations de connexion et cliquez sur Se connecter.
Appuyez sur la touche F5 pour exécuter les instructions Transact-SQL.
Génération d'un fichier de clé de nom fort
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
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.
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.
Remarque : 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. À l'invite de commandes, exécutez la commande suivante pour générer le fichier de clé :
sn -k SampleKey.snk
Important : 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.
Exécution de l'exemple
Pour exécuter l'exemple, vous devez :
- démarrer l'instance ;
- ajouter des abonnés et des abonnements ;
- déplacer un fichier XML contenant des événements ;
- afficher les notifications obtenues.
Les procédures suivantes montrent comment effectuer ces tâches puis afficher les notifications obtenues.
Étape 1 : Démarrage de l'instance
Dans l'Explorateur d'objets, développez Notification Services.
Cliquez avec le bouton droit sur InventoryTrackerInstance, puis sélectionnez Démarrer.
Étape 2 : Ajout d'abonnés et d'abonnements
Générez la solution Visual Studio InventoryTracker_VB ou InventoryTracker
Si vous utilisez le Kit de développement Microsoft .NET Framework SDK, procédez comme suit :
- Dans le menu Démarrer, pointez sur Tous les programmes\Microsoft .NET Framework SDK v2.0, puis cliquez sur Invite de commandes SDK.
- Naviguez jusqu'au dossier racine de l'exemple Inventory Tracker. Tapez la commande suivante pour l'emplacement par défaut :
cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker - Tapez la commande suivante pour générer la solution :
[C#]
msbuild InventoryTracker.sln
[Visual Basic]
msbuild InventoryTracker_VB.sln
Si vous utilisez Visual Studio 2005, procédez comme suit :
- Ouvrez le fichier de solution de votre choix (InventoryTracker.sln ou InventoryTracker_VB.sln).
- Appuyez sur F6 pour générer la solution.
Exécutez AddSubscribers.exe.
L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscribers\langage\AddSubscribers\bin\Debug.
Exécutez AddSubscriptions.exe.
C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\langage\AddSubscriptions\bin\Debug.
Remarque : |
---|
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 : Déclenchement d'événements
À partir du menu Fichier de SQL Server Management Studio, sélectionnez Ouvrir, puis Fichier.
Dans la boîte de dialogue Fichier, ouvrez UpdateProductInventory.sql.
L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.
Ce script ajoute un déclencheur de mise à jour à la base de données AdventureWorks, puis octroie des autorisations de base de données à la connexion NSRulesEvaluator.
Si la boîte de dialogue Se connecter au moteur de base de données s'affiche, entrez vos informations de connexion et cliquez sur Se connecter.
Étape 4 : Affichage des notifications
Patientez environ une minute pendant que Notification Services génère les notifications.
À l'aide de l'Explorateur Windows, naviguez jusqu'au dossier Notifications de l'exemple InventoryTracker. Vous devez y trouver un fichier nommé FileNotifications.txt. Ce fichier contient les notifications basées sur fichier.
Naviguez jusqu'au dossier dans lequel les messages électroniques sont déplacés. Il s'agit en général d'un des dossiers dans C:\Inetpub\mailroot. Selon l'état du serveur SMTP, les notifications doivent se trouver dans le dossier Pickup ou Queue. Si le service SMTP est en cours d'exécution, les messages peuvent être déplacés vers le dossier Badmail.
Étape 5 : Réinitialisation du stock
À partir du menu Fichier de SQL Server Management Studio, sélectionnez Ouvrir, puis Fichier.
Dans la boîte de dialogue Fichier, ouvrez ResetProductInventory.sql.
L'emplacement par défaut de ce fichier est C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.
Ce script restaure la base de données AdventureWorks à son état précédent, ce qui vous permet de réexécuter l'exemple.
Si la boîte de dialogue Se connecter au moteur de base de données s'affiche, entrez vos informations de connexion et cliquez sur Se connecter.
Suppression de l'exemple
Utilisez la procédure suivante pour supprimer l'exemple Inventory Tracker.
Pour supprimer l'exemple Inventory Tracker
Dans l'Explorateur d'objets de SQL Server Management Studio, ouvrez le dossier Notification Services.
Cliquez avec le bouton droit sur InventoryTrackerInstance, puis sélectionnez Arrêter.
Cliquez avec le bouton droit sur InventoryTrackerInstance, pointez sur Tâches, puis sélectionnez Annuler l'inscription.
Cliquez avec le bouton droit sur InventoryTrackerInstance, pointez sur Tâches, puis sélectionnez Supprimer.
Voir aussi
Autres ressources
Exemples SQL Server Notification Services
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
14 avril 2006 |
|
5 décembre 2005 |
|