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:
Riavviare il server senza resilienza.
Arrestare le query che determinano l'errore del server.
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]