Errori ed eccezioni di Kusto.Ingest

Qualsiasi errore durante la gestione dell'inserimento sul lato client è indicato da un'eccezione C#.

Errori

Eccezioni KustoDirectIngestClient

Durante il tentativo di inserimento da più origini, possono verificarsi errori durante il processo di inserimento. Se un inserimento non riesce per una delle origini, viene registrato e il client continua a inserire le origini rimanenti. Dopo aver eseguito tutte le origini per l'inserimento, viene generata un'eccezione IngestClientAggregateException contenente il IList<IngestClientException> IngestionErrors membro.

IngestClientException e le relative classi derivate contengono un campo IngestionSource e un Error campo. I due campi creano un mapping, dall'origine che non è riuscita all'inserimento, all'errore che si è verificato durante il tentativo di inserimento. Le informazioni possono essere usate nell'elenco per analizzare quali origini non sono riuscite nell'inserimento IngestionErrors e perché. L'eccezione IngestClientAggregateException contiene anche una proprietà GlobalErrorbooleana , che indica se si è verificato un errore per tutte le origini.

Errori durante l'inserimento da file o BLOB

Se si verifica un errore di inserimento durante il tentativo di inserimento da un BLOB o da un file, le origini di inserimento non verranno eliminate, anche se il deleteSourceOnSuccess flag è impostato su true. Le origini vengono mantenute per un'ulteriore analisi. Dopo aver compreso l'origine dell'errore e se l'errore non ha avuto origine dall'origine di inserimento stessa, l'utente del client potrebbe tentare di ritentarlo.

Errori durante l'inserimento da IDataReader

Durante l'inserimento da DataReader, i dati da inserire vengono salvati in una cartella temporanea il cui percorso predefinito è <Temp Path>\Ingestions_<current date and time>. Questa cartella predefinita viene sempre eliminata dopo un inserimento riuscito.

IngestFromDataReader Nei metodi e IngestFromDataReaderAsync il flag , il retainCsvOnFailure cui valore predefinito è false, determina se i file devono essere conservati dopo un inserimento non riuscito. Se questo flag è impostato su false, i dati che non superano l'inserimento non verranno salvati in modo permanente, rendendo difficile comprendere cosa è andato storto.

Eccezioni KustoQueuedIngestClient

KustoQueuedIngestClient inserisce i dati caricando messaggi in una coda di Azure. Se si verifica un errore prima o durante il processo di accodamento, viene generata un'eccezione IngestClientAggregateException alla fine del processo. L'eccezione generata include una raccolta di IngestClientException, che contiene l'origine di ogni errore e non è stata registrata nella coda. Viene generato anche l'errore che si è verificato durante il tentativo di pubblicare il messaggio.

Inserimento in errori di coda con un file o un BLOB come origine

Se si verifica un errore durante l'uso dei metodi di IngestFromFile/IngestFromBlob , le origini non vengono eliminate, anche se il deleteSourceOnSuccess flag è impostato su true.KustoQueuedIngestClient Le origini vengono invece mantenute per un'ulteriore analisi.

Dopo aver compreso l'origine dell'errore e se l'errore non ha avuto origine dall'origine di inserimento stessa, l'utente del client può tentare di accodare i dati usando i metodi pertinenti IngestFromFile/IngestFromBlob con l'origine non riuscita.

Inserimento in errori di coda con IDataReader come origine

Quando si usa un'origine DataReader, i dati da pubblicare nella coda vengono salvati in una cartella temporanea il cui percorso predefinito è <Temp Path>\Ingestions_<current date and time>. Questa cartella viene sempre eliminata dopo che i dati sono stati inseriti correttamente nella coda. IngestFromDataReader Nei metodi e IngestFromDataReaderAsync il flag , il retainCsvOnFailure cui valore predefinito è false, determina se i file devono essere conservati dopo un inserimento non riuscito. Se questo flag è impostato su false, i dati che non superano l'inserimento non verranno salvati in modo permanente, rendendo difficile comprendere cosa è andato storto.

Errori comuni

Errore Motivo Strategia di riduzione del rischio
Il <nome> del database di database non esiste Il database non esiste Controllare il nome del database in kustoIngestionProperties/Create the database
L'entità 'nome tabella che non esiste' di tipo 'Table' non è stata trovata. La tabella non esiste e non esiste alcun mapping CSV. Aggiungere il mapping CSV/creare la tabella richiesta
Percorso> BLOB <escluso per motivi: il modello JSON deve essere inserito con il parametro jsonMapping Inserimento JSON quando non viene fornito alcun mapping JSON. Specificare un mapping JSON
Impossibile scaricare il BLOB: "Il server remoto ha restituito un errore: (404) Non trovato". Il BLOB non esiste. Verificare che il BLOB esista. In caso affermativo, riprovare e contattare il team Kusto
Mapping di colonne JSON non valido: due o più elementi di mapping puntano alla stessa colonna. Il mapping JSON ha 2 colonne con percorsi diversi Correzione del mapping JSON
EngineError - [UtilsException] IngestionDownloader.Download: non è stato possibile scaricare uno o più file (cercare ActivityID:<GUID1>, RootActivityId:<GUID2>) Impossibile scaricare uno o più file. Riprova
Impossibile analizzare: Stream con ID '<nome> flusso' ha un formato CSV in formato non valido, con esito negativo per i criteri ValidationOptions File CSV in formato non valido( ad esempio, senza avere lo stesso numero di colonne in ogni riga). Ha esito negativo solo quando i criteri di convalida sono impostati su ValidationOptions.ValidateCsvInputConstantColumns. Controllare i file CSV. Questo messaggio si applica solo ai file CSV/TSV
IngestClientAggregateException con il messaggio di errore "Parametri obbligatori mancanti per la firma di accesso condiviso valida" La firma di accesso condiviso usata è del servizio e non dell'account di archiviazione Usare la firma di accesso condiviso dell'account di archiviazione

Codici di errore dell'inserimento

Per gestire gli errori di inserimento a livello di codice, le informazioni sugli errori vengono arricchite con un codice di errore numerico (IngestionErrorCode enumeration).

Per un elenco completo dei codici di errore di inserimento, vedere Codici di errore di inserimento.

Informazioni di riferimento dettagliate sulle eccezioni

CloudQueuesNotFoundException

Generato quando non vengono restituite code dal cluster Gestione dati

Classe base: Eccezione

Nome campo Type Significato
Errore string Errore che si è verificato durante il tentativo di recuperare le code dal servizio Migrazione del database

Rilevante solo quando si usa il client di inserimento in coda Kusto. Durante il processo di inserimento vengono eseguiti diversi tentativi per recuperare le code di Azure collegate al servizio Migrazione del database. Quando questi tentativi hanno esito negativo, l'eccezione contenente il motivo dell'errore viene generata nel campo "Errore". Viene generata anche un'eccezione interna nel campo 'InnerException'.

CloudBlobContainersNotFoundException

Generato quando non vengono restituiti contenitori BLOB dal cluster Gestione dati

Classe base: Eccezione

Nome campo Type Significato
KustoEndpoint string Endpoint del dm dm pertinente

Rilevante solo quando si usa il client di inserimento in coda Kusto.
Quando si inseriscono origini che non si trovano già in un contenitore di Azure, ad esempio file, DataReader o Stream, i dati vengono caricati in un BLOB temporaneo per l'inserimento. L'eccezione viene generata quando non sono presenti contenitori in cui caricare i dati.

DuplicateIngestionPropertyException

Generato quando una proprietà di inserimento viene configurata più volte

Classe base: Eccezione

Nome campo Type Significato
PropertyName string Nome della proprietà duplicata

PostMessageToQueueFailedException

Generato quando si pubblica un messaggio nella coda ha esito negativo

Classe base: Eccezione

Nome campo Type Significato
QueueUri string URI della coda
Errore string Messaggio di errore generato durante il tentativo di inserimento nella coda

Rilevante solo quando si usa il client di inserimento in coda Kusto.
Il client di inserimento in coda inserisce i dati caricando un messaggio nella coda di Azure pertinente. Se si verifica un errore post, viene generata l'eccezione. Conterrà l'URI della coda, il motivo dell'errore nel campo 'Error' e possibilmente un'eccezione interna nel campo 'InnerException'.

DataFormatNotSpecifiedException

Generato quando è necessario un formato di dati ma non specificato in IngestionProperties

Classe base: IngestClientException

Quando si inserisce da un flusso, è necessario specificare un formato di dati in IngestionProperties per inserire correttamente i dati. Questa eccezione viene generata quando non viene specificato .IngestionProperties.Format

InvalidUriIngestClientException

Generato quando viene inviato un URI BLOB non valido come origine di inserimento

Classe base: IngestClientException

CompressFileIngestClientException

Generato quando il client di inserimento non riesce a comprimere il file fornito per l'inserimento

Classe base: IngestClientException

I file vengono compressi prima dell'inserimento. L'eccezione viene generata quando un tentativo di compressione del file ha esito negativo.

UploadFileToTempBlobIngestClientException

Generato quando il client di inserimento non riesce a caricare l'origine fornita per l'inserimento in un BLOB temporaneo

Classe base: IngestClientException

SizeLimitExceededIngestClientException

Generato quando un'origine di inserimento è troppo grande

Classe base: IngestClientException

Nome campo Type Significato
Dimensione long Dimensioni dell'origine di inserimento
MaxSize long Dimensioni massime consentite per l'inserimento

Se un'origine di inserimento supera le dimensioni massime di 4 GB, viene generata l'eccezione. La convalida delle dimensioni può essere sostituita dal IgnoreSizeLimit flag nella classe IngestionProperties. Tuttavia, non è consigliabile inserire singole origini superiori a 1 GB. Per altre informazioni, vedere Procedure consigliate per l'inserimento di Kusto.

UploadFileToTempBlobIngestClientException

Generato quando il client di inserimento non riesce a caricare il file fornito per l'inserimento in un BLOB temporaneo

Classe base: IngestClientException

DirectIngestClientException

Generato quando si verifica un errore generale durante l'inserimento diretto

Classe base: IngestClientException

QueuedIngestClientException

Generato quando si verifica un errore durante l'inserimento in coda

Classe base: IngestClientException

IngestClientAggregateException

Generato quando si verificano uno o più errori durante un inserimento

Classe base: AggregateException

Nome campo Type Significato
IngestionErrors IList<IngestClientException> Errori che si verificano durante il tentativo di inserimento e le origini correlate
IsGlobalError bool Indica se l'eccezione si è verificata per tutte le origini