Share via


Esempio di registrazione delle scorte

Data aggiornamento: 17 luglio 2006

L'esempio Inventory Tracking illustra come utilizzare azioni condizionali per consentire ai sottoscrittori di definire clausole di query per le sottoscrizioni.

Scenario

Si desidera consentire ai dipendenti della società di ricevere notifiche al variare dei livelli delle scorte. Poiché ogni dipendente ha necessità diverse, ad esempio c'è chi vuole essere informato quando le scorte sono scarse, chi invece vuole sapere quando il livello delle scorte è elevato, oppure ancora chi vuole ricevere una notifica in caso di variazioni significative nel livello delle scorte, è necessario consentire ai dipendenti di creare condizioni personalizzate per le sottoscrizioni.

In questo esempio i sottoscrittori Stephanie e David creano ognuno una sottoscrizione. Nella sua sottoscrizione Stephanie specifica che desidera ricevere una notifica quando il livello delle scorte del prodotto assemblato finale "Road-250 Black, 48" è uguale o inferiore a 35. Nella sua sottoscrizione David specifica che desidera ricevere una notifica quando il livello delle scorte del sottoprodotto di assemblaggio "HL Crankarm" è uguale o inferiore a 250 unità.

Gli eventi vengono aggiunti al sistema mediante un trigger di aggiornamento nella tabella Production.Inventory di AdventureWorks. Il trigger inoltra gli eventi all'applicazione Inventory Tracker quando i dati delle scorte vengono aggiornati. Al termine del quantum del generatore in cui arrivano gli eventi, l'applicazione Inventory Tracker attiva le regole che fanno corrispondere i dati degli eventi con i dati delle sottoscrizioni e quindi genera le notifiche.

Le notifiche vengono inviate ai sottoscrittori tramite posta elettronica.

Linguaggi

XML, XSLT, Transact-SQL, Microsoft Visual C# o Microsoft Visual Basic

Funzionalità

L'esempio Inventory Tracker utilizza le funzionalità seguenti di Notification Services.

Area di applicazione Funzionalità

Classe di evento

Coda degli eventi di base, senza cronologie.

Classe di sottoscrizione

Regole di sottoscrizione guidate dagli eventi che utilizzano azioni condizionali per il supporto della logica di sottoscrizione flessibile. Assenza di cronologie.

Classe di notifica

Recapito digest.

Provider di eventi

Provider di eventi non hosted, implementato come trigger di aggiornamento nel database AdventureWorks.

Formattatori del contenuto

Formattatore del contenuto XSLT.

Protocolli di recapito

Protocolli di recapito File e SMTP.

Motore di Notification Services

Servizio Microsoft Windows creato durante la registrazione dell'istanza.

Prerequisiti

Prima di eseguire questo esempio, verificare che siano installati i prodotti software seguenti:

  • Microsoft SQL Server 2005, con i componenti seguenti:

  • .NET Framework SDK 2.0 o Microsoft Visual Studio 2005. .NET Framework SDK è disponibile gratuitamente. Vedere Installazione di .NET Framework SDK.

  • Servizio SMTP (Simple Mail Transfer Protocol), che è un componente di Internet Information Services (IIS). Per impostazione predefinita, in Microsoft Windows Server 2003 il servizio SMTP non è installato con IIS. Per istruzioni su come installare e utilizzare il servizio SMTP, vedere la documentazione di IIS.

    [!NOTA] Prima di eseguire l'esempio, verificare che il servizio SMTP sia stato interrotto. In questo modo, i messaggi vengono mantenuti sul server invece che inviati a sottoscrittori inesistenti.

Generazione dell'esempio

Per creare l'istanza, eseguire le operazioni seguenti:

  • Creare un'account di accesso di SQL Server per la valutazione delle regole.
  • Creare l'istanza di Notification Services.
  • Registrare l'istanza di Notification Services.
  • Concedere le autorizzazioni per il database al servizio Windows.
  • Creare i trigger e concedere le autorizzazioni per il database all'account per la valutazione delle regole.

Di seguito è illustrato come eseguire queste operazioni per l'esempio InventoryTracker.

Passaggio 1: creazione dell'account di accesso di SQL Server per la valutazione delle regole

  1. Aprire SQL Server Management Studio e connettersi a un'istanza di SQL Server.

    Se un'applicazione dispone di regole che contengono azioni condizionali, è necessario un account di accesso per valutare le condizioni. L'utilizzo di questo account di accesso separato consente di isolare i dati per cui i sottoscrittori possono creare regole e di proteggere dati riservati.

    Per creare l'istanza di Notification Services, è necessario che questo account di accesso sia disponibile sul server ma non nel database. Questo esempio utilizza un account di accesso con autenticazione SQL Server denominato NSRulesEvaluator. Nelle applicazioni personalizzate è possibile utilizzare l'autenticazione SQL Server o l'autenticazione di Windows.

    [!NOTA] Se possibile, utilizzare l'autenticazione di Windows.

  2. In Esplora oggetti espandere il nodo Protezione.

  3. Fare clic con il pulsante destro del mouse su Account di accesso e scegliere Nuovo account di accesso.

  4. Selezionare Autenticazione di SQL Server.

    Questo account non viene utilizzato per la connessione al server. È infatti utilizzato dal generatore di Notification Services all'interno dell'istanza del Motore di database per valutare le condizioni.

  5. Nella casella Nome account di accesso immettere NSRulesEvaluator.

    Immettere una password per l'account di accesso NSRulesEvaluator.

  6. In Database selezionare AdventureWorks.

  7. Fare clic su OK.

    Se viene visualizzato un messaggio che informa che l'account di accesso non è autorizzato ad accedere al database predefinito, fare clic su OK. Le autorizzazioni per il database verranno concesse di seguito in questo esempio.

Passaggio 2: creazione dell'istanza di Notification Services

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su Notification Services e scegliere Nuova istanza di Notification Services.

  2. Nella finestra di dialogo Nuova istanza di Notification Services fare clic su Sfoglia, passare alla cartella InventoryTracker e quindi selezionare il file InstanceConfig.xml.

  3. In Parametri specificare i valori per i tre parametri:

    • SampleDirectory: il percorso della cartella principale dell'esempio Inventory Tracker. Il percorso predefinito è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\.
    • SQLServer: il nome dell'istanza del Motore di database.
    • NotificationServicesHost: il nome del server in cui è eseguito Notification Services. Per gli esempi deve corrispondere al nome del computer locale.
  4. Selezionare la casella di controllo Attiva istanza dopo la creazione.

  5. Fare clic su OK.

  6. Al termine della creazione dell'istanza, fare clic su Chiudi.

Passaggio 3: registrazione dell'istanza di Notification Services

  1. In Esplora oggetti espandere il nodo Notification Services, fare clic con il pulsante destro del mouse su InventoryTrackerInstance, scegliere Attività e quindi Registra.

  2. Nella finestra di dialogo Registra istanza selezionare la casella di controllo Crea servizio Windows. Il servizio Windows esegue l'istanza di Notification Services sul computer in uso.

  3. In Accesso al servizio immettere l'account di accesso e la password di Windows. Si tratta dell'account di Windows in cui viene eseguito il servizio. Se si utilizza l'autenticazione di Windows per accedere a SQL Server, il servizio Windows utilizza questo account per connettersi a SQL Server.

  4. Per utilizzare l'autenticazione di SQL Server per accedere a SQL Server, in Autenticazione selezionare Autenticazione di SQL Server e quindi specificare il nome dell'account di accesso e la password di SQL Server.

    È consigliabile utilizzare l'autenticazione di Windows.

  5. Fare clic su OK.

  6. Al termine della registrazione dell'istanza, fare clic su Chiudi.

[!NOTA] Se si distribuisce un esempio di Notification Services utilizzando l'account del proprietario del database o di un amministratore del sistema, non sarà necessario concedere autorizzazioni per SQL Server a tale account. Se si concedono tali autorizzazioni verrà visualizzato un errore, che può essere ignorato. Quando si distribuiscono applicazioni personalizzate, per migliorare la protezione è consigliabile utilizzare account con privilegi inferiori.

Passaggio 4: concessione delle autorizzazioni per il database al servizio Windows

  1. In Esplora oggetti espandere il nodo Protezione.

  2. Se è necessario creare un nuovo account di accesso al database per il servizio Windows, fare clic con il pulsante destro del mouse su Account di accesso, scegliere Nuovo account di accesso e creare l'account:

    • Per utilizzare l'autenticazione di Windows, selezionare Autenticazione di Windows e immettere lo stesso account di Windows specificato durante la registrazione dell'istanza.
    • Se è necessario utilizzare l'autenticazione di SQL Server, selezionare Autenticazione di SQL Server e quindi immettere lo stesso account di accesso e la stessa password di SQL Server specificati durante la registrazione dell'istanza.
  3. Se l'account di accesso utilizzato dal servizio Windows dispone già dell'accesso a SQL Server, fare clic con il pulsante destro del mouse e scegliere Proprietà.

  4. Nel riquadro sinistro della finestra di dialogo Proprietà account di accesso selezionare Mapping utenti.

  5. Concedere le autorizzazioni per il database AdventureWorks:

    1. In Utenti mappati all'account di accesso seguente selezionare AdventureWorks.
    2. In Appartenenza a ruoli del database per: AdventureWorks selezionare NSRunService.
  6. Fare clic su OK per concedere le autorizzazioni.

  7. Configurare la protezione per la cartella Notifications:

    1. Passare alla cartella Notifications dell'esempio.
    2. Fare clic con il pulsante destro del mouse sulla cartella Notifications, scegliere Condivisione e protezione e quindi selezionare la scheda Protezione.
    3. Fare clic su Aggiungi e aggiungere l'account utilizzato dal servizio Windows.
    4. In Utenti e gruppi selezionare l'account aggiunto.
    5. In Autorizzazioni per selezionare Scrittura.
    6. Fare clic su OK per rendere effettive le modifiche.

Passaggio 5: configurazione dei trigger database e concessione delle autorizzazioni per il database

  1. In SQL Server Management Studio scegliere Apri dal menu File e quindi File.

  2. Nella finestra di dialogo Apri file aprire il file SetupInventoryTrackerSample.sql.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

  3. Se viene visualizzata la finestra di dialogo Connetti al Motore di database immettere i dati necessari per la connessione e fare clic su Connetti.

  4. Premere F5 per eseguire le istruzioni Transact-SQL.

Generazione di un file di chiave con nome sicuro

Se non è stato ancora creato un file di chiave con nome sicuro, generare il file di chiave seguendo le istruzioni seguenti.

Per generare un file di chiave con nome sicuro

  1. Aprire il prompt dei comandi di Microsoft Visual Studio 2005. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

    -- oppure --

    Aprire il prompt dei comandi di Microsoft .NET Framework. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK 2.0, quindi SDK Command Prompt.

  2. Utilizzare il comando CD (change directory) per passare dalla directory corrente della finestra del prompt dei comandi alla cartella in cui sono stati installati gli esempi.

    [!NOTA] Per determinare la cartella in cui si trovano gli esempi, fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2005, Documentazione ed esercitazioni, quindi Samples. Se è stato utilizzato il percorso di installazione predefinito, gli esempi si troveranno in <unità_sistema>:\Programmi\Microsoft SQL Server\100\Samples.

  3. Al prompt dei comandi digitare il comando seguente per generare il file di chiave:

    sn -k SampleKey.snk

    ms161543.note(it-it,SQL.90).gifImportante:
    Per ulteriori informazioni sulla coppia di chiavi con nome sicuro, vedere l'argomento relativo ai nomi sicuri e alla protezione in .NET Framework nel centro per sviluppatori di .NET su MSDN.

Esecuzione dell'esempio

Per eseguire l'esempio, è necessario eseguire le operazioni seguenti:

  • Avviare l'istanza.
  • Aggiungere sottoscrittori e sottoscrizioni.
  • Copiare un file XML che contiene eventi.
  • Visualizzare le notifiche risultanti.

Di seguito è illustrato come eseguire queste operazioni e quindi visualizzare le notifiche risultanti.

Passaggio 1: avvio dell'istanza

  1. In Esplora oggetti espandere Notification Services.

  2. Fare clic con il pulsante destro del mouse su InventoryTrackerInstance e scegliere Avvia.

Passaggio 2: aggiunta di sottoscrittori e sottoscrizioni

  1. Generare la soluzione Visual Studio InventoryTracker o InventoryTracker_VB

    Se si utilizza Microsoft .NET Framework SDK, eseguire le operazioni seguenti:

    1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft .NET Framework SDK v2.0 e quindi SDK Command Prompt.
    2. Passare alla cartella principale dell'esempio Inventory Tracker. Digitare il comando seguente per il percorso predefinito:
      cd \Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker
    3. Digitare la sintassi seguente per generare la soluzione:
      [C#] 
      msbuild InventoryTracker.sln
      [Visual Basic] 
      msbuild InventoryTracker_VB.sln

    Se si utilizza Visual Studio 2005, eseguire le operazioni seguenti:

    1. Aprire il file della soluzione desiderato (InventoryTracker.sln o InventoryTracker_VB.sln).
    2. Premere F6 per generare la soluzione.
  2. Eseguire AddSubscribers.exe.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscribers\linguaggio\AddSubscribers\bin\Debug.

  3. Eseguire AddSubscriptions.exe.

    C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\linguaggio\AddSubscriptions\bin\Debug.

[!NOTA] Per le applicazioni di produzione, o se si esegue l'applicazione con un account con limitazioni, aggiungere l'account di accesso di SQL Server dell'applicazione al ruolo del database NSSubscriberAdmin nei database dell'istanza e dell'applicazione.

Passaggio 3: attivazione degli eventi

  1. In SQL Server Management Studio scegliere Apri dal menu File e quindi File.

  2. Nella finestra di dialogo Apri file aprire il file UpdateProductInventory.sql.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    Lo script aggiunge un trigger di aggiornamento al database AdventureWorks e quindi concede autorizzazioni per il database all'account di accesso NSRulesEvaluator.

  3. Se viene visualizzata la finestra di dialogo Connetti al Motore di database immettere i dati necessari per la connessione e fare clic su Connetti.

Passaggio 4: visualizzazione delle notifiche

  1. Attendere circa un minuto affinché Notification Services produca le notifiche.

  2. In Esplora risorse passare alla cartella Notifications dell'esempio InventoryTracker. La cartella contiene un file denominato FileNotifications.txt, che include notifiche basate su file.

  3. Passare alla cartella dove vengono spostati i messaggi di posta elettronica. Si tratta in genere di una delle cartelle in C:\Inetpub\mailroot. Le notifiche dovrebbero essere contenute nella cartella Pickup o nella cartella Queue, in base allo stato del server SMTP. Se il servizio SMTP è in esecuzione, i messaggi potrebbero essere spostati nella cartella Badmail.

Passaggio 5: reimpostazione del livello delle scorte

  1. In SQL Server Management Studio scegliere Apri dal menu File e quindi File.

  2. Nella finestra di dialogo Apri file aprire il file ResetProductInventory.sql.

    Il percorso predefinito del file è C:\Programmi\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts.

    Lo script ripristina lo stato precedente del database AdventureWorks, consentendo così di eseguire nuovamente l'esempio.

  3. Se viene visualizzata la finestra di dialogo Connetti al Motore di database immettere i dati necessari per la connessione e fare clic su Connetti.

Rimozione dell'esempio

Eseguire la procedura seguente per rimuovere l'esempio Inventory Tracker.

Per rimuovere l'esempio Inventory Tracker

  1. In SQL Server Management Studio, in Esplora oggetti, aprire la cartella Notification Services.

  2. Fare clic con il pulsante destro del mouse su InventoryTrackerInstance e scegliere Interrompi.

  3. Fare clic con il pulsante destro del mouse su InventoryTrackerInstance, scegliere Attività e quindi Annulla registrazione.

  4. Fare clic con il pulsante destro del mouse su InventoryTrackerInstance, scegliere Attività e quindi Elimina.

Vedere anche

Altre risorse

Esempi di SQL Server Notification Services

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

14 aprile 2006

Contenuto aggiunto:
  • Aggiunta di una nota sull'esecuzione degli esempi utilizzando le autorizzazioni del proprietario del database.

5 dicembre 2005

Contenuto modificato:
  • Modifica delle istruzioni per la generazione di un file di chiave, inclusi il nome e il percorso del file di chiave.
  • Aggiunta di informazioni sulle procedure consigliate per la protezione per gli account di valutazione delle regole.