Risoluzione dei problemi comuni di Notification Services

Microsoft ha raccolto nell'elenco riportato di seguito i problemi riscontrati dagli utenti di Notification Services e le relative soluzioni.

ms172473.note(it-it,SQL.90).gifImportante:
Per la risoluzione dei problemi relativi a un'applicazione di Notification Services, controllare innanzitutto il registro applicazioni nel Visualizzatore eventi di Windows. Gli eventi del registro applicazioni sono spesso fondamentali per determinare l'origine di un problema dell'applicazione.

Risoluzione dei problemi relativi alla distribuzione e all'amministrazione

La creazione di un'istanza non viene eseguita correttamente per un errore di timeout

I processi che creano un'istanza di Notification Services eseguono diverse attività, ognuna delle quali ha un limite di tempo. Il processo di creazione del database richiede spesso una quantità di tempo superiore rispetto alle altre operazioni. Il limite per questa operazione è di 10 minuti, che è in genere più che sufficiente. Se tuttavia la configurazione dell'istanza o le definizioni delle applicazioni specificano dimensioni molto grandi per i database, ad esempio vari gigabyte, è possibile che il processo di creazione superi il timeout. In tal caso, verrà visualizzato un messaggio che segnala un errore di timeout.

Per creare l'istanza senza problemi, è necessario ridurre le dimensioni dei file di database nei file ADF e di configurazione e quindi creare l'istanza. A questo punto, sarà possibile aumentare le dimensioni dei file di database tramite istruzioni di SQL Server Management Studio o Transact-SQL.

La creazione di un'istanza non viene eseguita correttamente perché il log delle transazioni è pieno

Se si aggiunge un log pieno o quasi pieno, è possibile che la creazione di un'istanza di Notification Services non venga eseguita correttamente. Aumentare i valori di size e maxsize per il log delle transazioni e ritentare.

L'aggiornamento di un'istanza non viene eseguito correttamente

L'aggiornamento di un'istanza di Notification Services può non riuscire a causa di errori in una definizione di applicazione o nella configurazione dell'istanza. Prima di aggiornare un'istanza, è necessario convalidare tutti i file XML per ridurre le possibilità che questo errore si verifichi. Se si verifica questo errore, correggere il file e ritentare l'aggiornamento.

Poiché l'aggiornamento di un'istanza modifica i database dell'istanza e delle applicazioni, è consigliabile eseguire sempre il backup di tali database prima di iniziare l'aggiornamento dell'istanza.

Per ulteriori informazioni sull'aggiornamento di un'istanza, vedere Aggiornamento di proprietà di un'istanza. Per ulteriori informazioni sull'aggiornamento di un'applicazione, vedere Aggiornamento di un'applicazione.

Il servizio Windows non viene avviato

Se si utilizza il servizio Windows NS$instanceName per eseguire i componenti del motore di Notification Services e tale servizio non viene avviato, è possibile che la password del servizio sia errata, che il nome dell'istanza che si desidera avviare non corrisponda esattamente al nome dell'istanza di Notification Services, che i database non siano accessibili o che l'account utente di Windows con cui è stata configurata l'esecuzione del servizio non disponga delle autorizzazioni per accedere come servizio. Per risolvere il problema, provare le soluzioni seguenti:

  • **Verificare che l'account del servizio sia membro del gruppo di Windows SQLServer2005NotificationServicesUser$**ComputerName **.**I membri del gruppo SQLServer2005NotificationServicesUser$ComputerName dispongono delle autorizzazioni necessarie per la lettura e l'esecuzione dei file binari di Notification Services, incluso NSService.exe.
  • Reimpostare la password di Windows. Se si utilizzano i comandi di Notification Services per configurare una password per il servizio e la password contiene caratteri speciali o è stata immessa in modo errato, il servizio NS$instanceName non verrà avviato.
    Per risolvere questo errore, aggiornare la password utilizzando l'applicazione Servizi:
    1. Nel Pannello di controllo aprire Strumenti di amministrazione.
    2. Aprire Servizi.
    3. Fare clic con il pulsante destro del mouse sul servizio **NS$**instanceName (instanceName rappresenta il nome dell'istanza di Notification Services) e quindi scegliere Proprietà.
    4. Fare clic sulla scheda Connessione, digitare la propria password nelle caselle di testo Password e Confermapassword. Scegliere OK.
    5. Fare clic con il pulsante destro del mouse sul servizio e quindi scegliere Avvia.
  • Controllare i database. Se il servizio non è in grado di accedere ai database dell'istanza e delle applicazioni, non verrà avviato.
    • Verificare che il nome del database nel registro dell'istanza sia corretto.
    • Controllare che l'istanza di Motore di database che ospita i database dell'istanza e delle applicazioni sia in esecuzione.
    • Verificare che i database dell'istanza e delle applicazioni siano disponibili.
    • Controllare che non siano presenti problemi di rete che impediscono l'accesso ai database da parte del servizio.
  • Avviare il servizio dall'applicazione Servizi. Quando si avvia il servizio tramite il comando net start, i caratteri digitati al prompt dei comandi devono corrispondere ai caratteri Unicode utilizzati nel file di configurazione. Se i caratteri non corrispondono, l'istanza non può essere avviata.
    Per risolvere questo errore, avviare il servizio utilizzando l'applicazione Servizi di Windows:
    1. Nel Pannello di controllo aprire Strumenti di amministrazione.
    2. Aprire Servizi.
    3. Fare clic con il pulsante destro del mouse sul servizio **NS$**instanceName e quindi scegliere Avvia.

Gli errori non vengono scritti nel registro applicazioni

Se il motore di Notification Services non viene avviato ma il registro applicazioni non include errori che indicano la causa del problema, è possibile che il registro applicazioni sia pieno. Per riconfigurare il registro applicazioni, eseguire le operazioni seguenti:

  1. Nel Pannello di controllo aprire Strumenti di amministrazione.
  2. Aprire il Visualizzatore eventi.
  3. Fare clic con il pulsante destro del mouse su Applicazione e quindi scegliere Proprietà.
  4. Eseguire una o entrambe le operazioni seguenti:
    • Aumentare il valore dell'opzione Dimensione massima registro.
    • Selezionare Sovrascrivi eventi se necessario.

Il registro applicazioni include errori imprevisti.

Se vengono segnalati errori imprevisti nel registro applicazioni, provare a riavviare il motore di Notification Services.

Ad esempio, se si rimuove un'applicazione da un'istanza mentre il servizio Windows è in esecuzione e quindi vengono visualizzati errori nel registro eventi per l'applicazione rimossa, con il riavvio del servizio Windows questi errori non dovrebbero più comparire.

Per ulteriori informazioni, vedere Avvio e interruzione di istanze di Notification Services.

Risoluzione dei problemi relativi alla raccolta degli eventi

Impossibile inviare eventi a un'applicazione

Per risolvere i problemi relativi alla raccolta degli eventi, controllare quanto segue:

  • Se si utilizza un provider di eventi hosted, verificare che il motore di Notification Services che esegue il provider di eventi sia in esecuzione.
  • Assicurarsi che la raccolta degli eventi sia attivata. Per visualizzare rapidamente lo stato dei componenti dell'istanza, eseguire il comando nscontrol status. Se la raccolta degli eventi è disattivata o in sospeso, non sarà possibile inviare eventi.
    Per ulteriori informazioni sulla visualizzazione dello stato, vedere Visualizzazione dello stato delle istanze, delle applicazioni e dei componenti.
    Per ulteriori informazioni sull'attivazione e la disattivazione dei componenti, vedere Attivazione e disattivazione di istanze, applicazioni o componenti.
  • Verificare che l'account utilizzato per eseguire il provider di eventi disponga delle autorizzazioni del ruolo NSEventProvider nei database dell'istanza e delle applicazioni.

Il provider di eventi di monitoraggio del file system non viene eseguito correttamente

È possibile che il provider di eventi di monitoraggio del file system generi errori se vengono danneggiati i contatori delle prestazioni nel server. La presenza dell'errore seguente nel registro eventi indica il danneggiamento di un contatore delle prestazioni:

Event ID: 2980

Se il contatore delle prestazioni è danneggiato, non restituirà valori. Per tentare di risolvere questo problema, eseguire le operazioni seguenti:

  1. Se l'istanza è in esecuzione, interromperla. Per ulteriori informazioni, vedere Avvio e interruzione di istanze di Notification Services.
  2. Chiudere tutte le applicazioni che eseguono query nei contatori delle prestazioni di Notification Services, ad esempio Monitor di sistema.
  3. Ripetere la registrazione dell'istanza. Per ulteriori informazioni, vedere Aggiornamento delle informazioni del Registro di sistema.

In tal modo, verranno ricreati i contatori delle prestazioni per l'istanza. Potrebbe essere necessario eseguire questi passaggi più volte.

Risoluzione dei problemi relativi alla generazione e al recapito delle notifiche

Vengono generate notifiche duplicate

Se i sottoscrittori ricevono notifiche duplicate, controllare come vengono raccolti e utilizzati gli eventi:

  • Controllare che le regole per la generazione delle notifiche non accedano direttamente alla tabella delle notifiche quando dovrebbero accedere a una vista denominata in base alla classe di notifica. La vista restituisce solo l'insieme di eventi corrente, mentre la tabella delle notifiche contiene tutti gli eventi non rimossi tramite il processo Vacuumer.
    Se, ad esempio, il nome di una classe di evento è StockEvent, utilizzare la vista StockEvent nella regola di sottoscrizione anziché la tabella NSStockEventEvents.
  • Se gli eventi provengono da un'altra origine, ad esempio una cronologia di eventi o una tabella esterna, la query deve contenere una funzione logica per selezionare esclusivamente i dati da utilizzare per creare le notifiche. È possibile, ad esempio, includere gli eventi inviati nelle 24 ore precedenti o quelli con un valore specifico in una colonna. Le istruzioni delle regole di sottoscrizione possono modificare i valori nell'origine degli eventi per consentire il rilevamento dell'utilizzo degli eventi.
  • Controllare di non aver inviato gli stessi dati di evento più volte.

Per ulteriori informazioni sulla creazione di regole di sottoscrizione, vedere Definizione delle regole di sottoscrizione.

Le notifiche non vengono generate o recapitate

Se l'applicazione non invia notifiche, controllare quanto segue:

  • Controllare che il motore di Notification Services che esegue il componente generatore sia in esecuzione e sia attivato.
  • Verificare che ci siano eventi disponibili.
    Eseguire la stored procedure NSDiagnosticEventClass nel database dell'istanza. Controllare la colonna EventBatchesCollectedCount per verificare se sono arrivati eventi nei tempi previsti.
  • Verificare che siano presenti sottoscrizioni.
    Utilizzare la vista NSSubscriptionClassNameView nel database dell'applicazione per verificare che l'applicazione disponga di sottoscrizioni da valutare.
  • Controllare che le sottoscrizioni pianificate siano pianificate in modo appropriato.
    Utilizzare la vista NSSubscriptionClassNameView nel database dell'applicazione o eseguire le stored procedure NSScheduledSubscriptionList e NSScheduledSubscriptionDetails nel database dell'applicazione per visualizzare i dettagli delle sottoscrizioni.
  • Verificare che i dispositivi del sottoscrittore indicati nelle notifiche esistano.
    Nelle regole di sottoscrizione è necessario specificare un ID del sottoscrittore e il nome del dispositivo del sottoscrittore. Il nome del dispositivo deve corrispondere al nome di un dispositivo definito per il sottoscrittore. Per visualizzare i dispositivi dei sottoscrittori, utilizzare NSSubscriberDeviceView nel database dell'istanza.
  • Controllare che il timeout delle regole non scada.
    Se il timeout delle regole di sottoscrizione che generano le notifiche scade, l'applicazione non genererà le notifiche. Verificare che le regole in uso siano efficienti, che gli indici appropriati siano stati definiti per i dati degli eventi e delle sottoscrizioni, che il processo di rimozione dei dati venga eseguito per rimuovere i dati meno recenti e che le regole non siano bloccate da altri processi in esecuzione sul server. Per ulteriori informazioni sullo sviluppo di regole di sottoscrizione, vedere Definizione delle regole di sottoscrizione.
  • Controllare che le notifiche vengano generate.
    Eseguire la stored procedure NSDiagnosticNotificationClass nel database dell'istanza per verificare che le notifiche vengano generate. Controllare nella colonna NotificationsGenerated l'intervallo previsto per la generazione delle notifiche. Se non sono presenti notifiche, è possibile che non esistano eventi o sottoscrizioni oppure che le regole di corrispondenza della classe di sottoscrizione non inseriscano notifiche nella funzione della classe di notifica. Per ulteriori informazioni sulle regole , vedere Definizione delle regole di sottoscrizione.
  • Controllare se sono presenti notifiche non riuscite.
    Eseguire la stored procedure NSDiagnosticFailedNotifications per controllare la presenza di notifiche non riuscite.
  • Verificare che le notifiche vengano inviate al canale di recapito corretto.
    Verificare che l'applicazione definisca i protocolli corretti per la classe di notifica e che le sottoscrizioni aggiunte all'applicazione utilizzino il canale di recapito corretto.
  • Controllare che i canali di recapito siano operativi.
    Eseguire la stored procedure NSDiagnosticDeliveryChannel per verificare se i canali di recapito sono funzionanti.
  • Controllare che i server di distribuzione siano attivati.
    Per ulteriori informazioni sull'attivazione e la disattivazione dei componenti, vedere Attivazione e disattivazione di istanze, applicazioni o componenti.

Si verificano errori di recapito generici

Alcuni errori di recapito possono in effetti rappresentare errori di configurazione. Ad esempio, se si configura in modo errato un canale di recapito SMTP, quando Notification Services tenta di recapitare una notifica tramite il canale di recapito, è possibile che venga visualizzato un messaggio simile al seguente:

Errore generico recapito notifiche SMTP

Se vengono visualizzati numerosi errori di questo tipo, verificare che i canali di recapito siano configurati correttamente. Per ulteriori informazioni, vedere Definizione dei canali di recapito.

Errore di recapito SMTP

Quando si utilizza il protocollo SMTP di Internet Information Services (IIS) con il servizio locale SMTP di IIS, Notification Services deve accedere a una directory di IIS per determinare la destinazione di recapito delle notifiche. Solo gli amministratori possono accedere a tali informazioni.

Per utilizzare il servizio locale SMTP di IIS, l'account utilizzato per eseguire il componente server di distribuzione del motore deve essere membro del gruppo locale Administrators.

Timeout del server di distribuzione

Se vengono visualizzati vari errori di timeout nel registro eventi, è possibile che il livello di registrazione impostato per il server di distribuzione sia troppo alto. Ciò si verifica in genere solo quando il sistema di database sta elaborando volumi considerevoli di notifiche e non è quindi in grado di gestire sia le attività di distribuzione che quelle di registrazione.

Per risolvere il problema, disattivare la registrazione. Per ulteriori informazioni, vedere Specificazione delle impostazioni di esecuzione del protocollo di recapito.

Risoluzione dei problemi relativi al processo Vacuumer

I dati non vengono rimossi, con conseguente aumento delle dimensioni delle tabelle degli eventi e delle notifiche

Se i dati non vengono rimossi dal database dell'applicazione come previsto, controllare quanto segue:

  • Verificare che la definizione dell'applicazione includa una pianificazione per la rimozione dei dati. Per ulteriori informazioni, vedere Configurazione della rimozione dei dati.
  • Verificare di avere specificato un periodo di memorizzazione ragionevole (più lungo è il periodo di memorizzazione, maggiore sarà la quantità di dati inseriti nelle tabelle).
  • Controllare che il processo Vacuumer venga eseguito in periodi di attività di sistema ridotta. In caso contrario, è possibile che le risorse di sistema disponibili non siano sufficienti per la rimozione dei dati.
    Si tenga presente che l'ora di avvio è un valore UTC. Ad esempio, il valore 02:00:00 come ora di avvio corrisponde alle 2.00 dell'ora di Greenwich. Per specificare le 2.00 per il proprio fuso orario, aggiungere o sottrarre la differenza tra il proprio fuso orario e l'ora di Greenwich. Ad esempio, l'orario italiano è 1 ora in avanti rispetto all'ora di Greenwich. Per eseguire la rimozione dei dati alle 2.00 ora italiana, è necessario specificare 01:00:00.
  • Controllare che la durata del processo sia adeguata. A seconda del volume dei dati, potrebbe essere necessario eseguire il processo di rimozione dei dati per periodi di tempo più lunghi.

Per valutare le prestazioni del processo di rimozione dei dati, utilizzare le risorse seguenti:

  • Eseguire la stored procedure NSSnapshotApplications per determinare l'ultima esecuzione del processo Vacuumer e il numero di eventi e notifiche rimossi. Per ulteriori informazioni, vedere NSSnapshotApplications (Transact-SQL).
  • Monitorare l'oggetto prestazione NS$instanceName: Vacuumer tramite lo strumento Prestazioni di Windows. Per ulteriori informazioni, vedere Oggetto NS$instance_name: Vacuumer.

Risoluzione dei problemi relativi alle applicazioni Web

L'applicazione di gestione delle sottoscrizioni non è in grado di accedere all'istanza di Notification Services

L'applicazione di gestione delle sottoscrizioni deve essere in grado di individuare e accedere ai database dell'istanza e delle applicazioni. L'istanza deve pertanto essere registrata nel server in cui viene eseguita l'applicazione e l'account utilizzato dall'applicazione deve essere aggiunto al ruolo NSSubscriberAdmin nei database dell'istanza e delle applicazioni. Per ulteriori informazioni, vedere Distribuzione di un'interfaccia di gestione delle sottoscrizioni.

Vedere anche

Attività

Domande frequenti su Notification Services
Configurazione della registrazione degli eventi in Notification Services
Utilizzo dei messaggi di evento

Guida in linea e informazioni

Assistenza su SQL Server 2005