Risoluzione dei problemi relativi ad applicazioni StreamInsight resilienti

Questo argomento consente di risolvere i problemi relativi a applicazioni StreamInsight resilienti illustrando i prerequisiti per le query resilienti e alcuni degli errori comuni che si possono verificare.

La resilienza è disponibile solo nell'edizione Premium di StreamInsight. Per ulteriori informazioni, vedere Scelta di un'edizione di StreamInsight.

In questo argomento

  • Prerequisiti per una query resiliente

  • Errori durante la creazione e la configurazione di un server resiliente

  • Errori durante la definizione di una query resiliente

  • Errori durante il salvataggio di un checkpoint

  • Errori durante il recupero da un errore

  • Errori durante l'archiviazione di metadati e log in una condivisione di rete

Prerequisiti per una query resiliente

Una query configurata per il checkpoint deve soddisfare i requisiti seguenti:

  • Deve disporre di un adattatore di output, ovvero nella query non può essere esposto solo un flusso pubblicato.

  • Non è possibile utilizzare nella query un flusso pubblicato.

  • Non è possibile utilizzare nella query input IObservable o IEnumerable.

  • Non è possibile utilizzare nella query flussi sincronizzati tramite AdvanceTimeImportSettings per copiare CTI da un altro flusso. Questo utilizzo è descritto in Avanzamento del tempo applicazione.

[Torna all'inizio]

Errori durante la creazione e la configurazione di un server resiliente

Tramite la chiamata al metodo Server.Create può essere generata un'eccezione nei casi seguenti:

  • Una configurazione della resilienza viene fornita tramite il metodo Server.Create o il file app.config, ma il provider di metadati di SQL Server Compact non è specificato.

  • Il percorso del log specificato per la resilienza non è disponibile e il server non è configurato per crearlo.

  • Il server è configurato per creare il percorso del log, ma l'operazione per creare tale percorso non viene eseguita o non viene completata.

  • Il server dispone di privilegi insufficienti per scrivere nel percorso del log specificato o per leggere da quest'ultimo.

  • Il server è configurato per la resilienza, ma nell'edizione di StreamInsight non è supportata. La resilienza è supportata solo nell'edizione Premium. Per ulteriori informazioni sulle edizioni di StreamInsight, vedere Scelta di un'edizione di StreamInsight.

[Torna all'inizio]

Errori durante la definizione di una query resiliente

La chiamata per creare una query resiliente tramite il metodo CepStream.ToQuery o il metodo Application.CreateQuery può generare un'eccezione nei casi seguenti:

  • Il server non è stato configurato per la resilienza fornendo una configurazione della resilienza e specificando il provider di metadati di SQL Server Compact.

  • Nella query vengono utilizzati eventi da origini IEnumerable o IObservable.

  • Nella query vengono utilizzati eventi da un flusso pubblicato.

  • Nella query vengono utilizzati flussi sincronizzati.

  • La query consente di scrivere solo in un flusso pubblicato.

[Torna all'inizio]

Errori durante il salvataggio di un checkpoint

È possibile che la chiamata per salvare un checkpoint non venga completata e che tramite il metodo EndCheckpoint venga generata un'eccezione nei casi seguenti:

  • Il server non è configurato per la resilienza.

  • La query non è configurata per la resilienza.

  • La query non è in esecuzione.

  • Un checkpoint è già in corso. In questo caso, il primo checkpoint viene completato mentre tutti i successivi checkpoint sovrapposti hanno esito negativo.

  • Il metodo EndCheckpoint viene chiamato con un oggetto IAsyncResult che non corrisponde a un'operazione di checkpoint attiva.

  • Il metodo EndCheckpoint viene chiamato con un oggetto IAsyncResult che corrisponde a un checkpoint per il quale EndCheckpoint è già stato chiamato.

In caso di un errore di I/O durante il checkpoint, tutte le operazioni di checkpoint in corso vengono terminate e dalle relative operazioni EndCheckpoint viene generata un'eccezione. È comunque possibile continuare a tentare operazioni di checkpoint successive, dal momento che questo errore di I/O può essere temporaneo.

[Torna all'inizio]

Errori durante il recupero da un errore

In caso di un errore di I/O durante la lettura di un file del checkpoint, tutte le query che dipendono da tale file vengono sospese e la causa dell'errore viene registrata con la query. Le query vengono sospese e non interrotte per mantenere i metadati della query, dal momento che l'errore di I/O è temporaneo.

Se il recupero di una query non viene completato, non è possibile riavviare tale operazione. Provare a eseguire i passaggi riportati di seguito:

  • Se è possibile che l'errore sia temporaneo, spegnere e riavviare il server per ritentare il recupero.

  • Se l'errore non è temporaneo, è possibile arrestare la query.

Se si verifica un errore della query recuperata a causa di un'eccezione in un operatore o un adattatore, la query verrà interrotta.

Se il tentativo di recuperare una query determina un errore del server, è possibile effettuare i passaggi seguenti:

  1. Riavviare il server senza resilienza.

  2. Arrestare le query che determinano l'errore del server.

  3. Riavviare di nuovo il server con la resilienza.

[Torna all'inizio]

Errori durante l'archiviazione di metadati e log in una condivisione di rete

Quando il log del checkpoint viene archiviato in una condivisione di rete, gli errori di I/O temporanei non sono irreversibili per il processo del checkpoint.

Quando il database di metadati di SQL Server Compact viene archiviato in una condivisione di rete, qualsiasi errore di I/O è irreversibile, causando un errore del server StreamInsight.

[Torna all'inizio]

Vedere anche

Concetti

Resilienza di StreamInsight

Compilazione di applicazioni StreamInsight resilienti

Monitoraggio di applicazioni StreamInsight resilienti