Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Le proprietà di configurazione degli errori negli oggetti cubo, partizione o dimensione determinano il modo in cui il server risponde quando si verificano errori di integrità dei dati durante l'elaborazione. Le chiavi duplicate, le chiavi mancanti e i valori Null in una colonna chiave in genere attivano tali errori e, mentre il record che causa l'errore non verrà aggiunto al database, è possibile impostare le proprietà che determinano cosa accade successivamente. Per impostazione predefinita, l'elaborazione viene arrestata. Tuttavia, durante lo sviluppo del cubo, potrebbe essere necessario continuare l'elaborazione quando si verificano errori in modo da poter testare i comportamenti dei cubi con i dati importati, anche se è incompleto.
Questo argomento include le sezioni seguenti:
Chiavi duplicate risultanti relazioni incoerenti (KeyDuplicate)
Modificare l'azione relativa al limite di errori o al limite degli errori
Ordine di esecuzione
Il server esegue sempre regole NullProcessing prima delle regole ErrorConfiguration per ogni record. È importante comprendere perché le proprietà di elaborazione Null che convertono i valori Null in zeri possono successivamente introdurre errori di chiave duplicati quando due o più record di errore hanno zero in una colonna chiave.
Comportamenti predefiniti
Per impostazione predefinita, l'elaborazione si arresta al primo errore implicando una colonna chiave. Questo comportamento è controllato da un limite di errore che specifica zero come numero di errori consentiti e la direttiva Arresta elaborazione che indica al server di interrompere l'elaborazione quando viene raggiunto il limite di errore.
I record che attivano un errore, a causa di valori nulli, mancanti o duplicati, vengono assegnati al membro sconosciuto o eliminati. SQL Server Analysis Services non importerà i dati che violano i vincoli di integrità dei dati.
La conversione in membro sconosciuto viene eseguita per impostazione predefinita, a causa dell'impostazione ConvertToUnknown per KeyErrorAction. I record allocati a membri sconosciuti vengono messi in quarantena nel database come prova di un problema che potrebbe essere necessario analizzare al termine dell'elaborazione.
I membri sconosciuti vengono esclusi dai carichi di lavoro di query, ma saranno visibili in alcune applicazioni client se UnknownMember è impostato su Visible.
Per tenere traccia del numero di valori Null convertiti nel membro sconosciuto, è possibile modificare la proprietà NullKeyConvertedToUnknown per segnalare questi errori al log o nella finestra Elaborazione.
L'eliminazione avviene quando si imposta manualmente la proprietà KeyErrorAction su DiscardRecord.
Tramite le proprietà di configurazione degli errori, è possibile determinare la modalità di risposta del server quando si verifica un errore. Le opzioni includono l'arresto immediato dell'elaborazione, continuare l'elaborazione ma interrompere la registrazione degli errori, oppure continuare sia l'elaborazione che la registrazione degli errori. Le impostazioni predefinite variano in base alla gravità dell'errore.
Il conteggio degli errori tiene traccia del numero di errori che si verificano. Quando si imposta un limite massimo, la risposta del server cambia quando viene raggiunto tale limite. Per impostazione predefinita, il server interrompe l'elaborazione dopo il raggiungimento del limite. Il limite predefinito è 0, causando l'arresto dell'elaborazione al primo errore conteggiato.
Gli errori ad impatto elevato, ad esempio una chiave mancante o un valore Null in un campo chiave, devono essere risolti rapidamente. Per impostazione predefinita, questi errori rispettano i comportamenti del server ReportAndContinue , in cui il server rileva l'errore, lo aggiunge al conteggio degli errori e quindi continua l'elaborazione (ad eccezione del limite di errore è zero, quindi l'elaborazione si arresta immediatamente).
Altri errori vengono generati ma non contati o registrati per impostazione predefinita (si tratta dell'impostazione IgnoreError ) perché l'errore non comporta necessariamente un problema di integrità dei dati.
I conteggi degli errori sono influenzati dalle impostazioni di elaborazione dei valori nulli. Per gli attributi della dimensione, le opzioni di elaborazione Null determinano la modalità di risposta del server quando vengono rilevati valori Null. Per impostazione predefinita, i valori Null in una colonna numerica vengono convertiti in zeri, mentre i valori Null in una colonna stringa vengono elaborati come stringhe vuote. È possibile eseguire l'override delle proprietà NullProcessing per intercettare i valori Null prima di trasformarli in errori KeyNotFound o KeyDuplicate . Per ulteriori dettagli, consultare Chiavi Nulle in una dimensione.
Gli errori vengono registrati nella finestra di dialogo Processo ma non vengono salvati. È possibile specificare un nome di file del log degli errori chiave per raccogliere gli errori in un file di testo.
Proprietà di configurazione degli errori
Esistono nove proprietà di configurazione degli errori. Cinque vengono usati per determinare la risposta del server quando si verifica un errore specifico. Gli altri quattro sono inclusi nell'ambito dei carichi di lavoro di configurazione degli errori, ad esempio il numero di errori da consentire, le operazioni da eseguire quando viene raggiunto tale limite, se raccogliere gli errori in un file di log.
Risposta del server a errori specifici
| Proprietà | Predefinito | Altri valori |
|---|---|---|
|
CalculationError Si verifica durante l'inizializzazione della configurazione degli errori. |
IgnoreError non registra né conta l'errore; l'elaborazione continua fino a quando il numero di errori è inferiore al limite massimo. |
ReportAndContinue registra e conta l'errore. ReportAndStop segnala l'errore e interrompe immediatamente l'elaborazione, indipendentemente dal limite di errori. |
|
KeyNotFound Si verifica quando una chiave esterna in una tabella dei fatti non dispone di una chiave primaria corrispondente in una tabella delle dimensioni correlata, ad esempio una tabella dei fatti Sales contiene un record con un ID prodotto che non esiste nella tabella dimensione Product. Questo errore può verificarsi durante l'elaborazione delle partizioni o l'elaborazione delle dimensioni a fiocco di neve. |
ReportAndContinue registra e conta l'errore. |
ReportAndStop segnala l'errore e interrompe immediatamente l'elaborazione, indipendentemente dal limite di errori. IgnoreError non registra né conta l'errore; l'elaborazione continua fino a quando il numero di errori è inferiore al limite massimo. I record che attivano questo errore vengono convertiti nel membro sconosciuto per impostazione predefinita, ma è possibile modificare la proprietà KeyErrorAction per rimuoverli. |
|
KeyDuplicate Si verifica quando vengono trovate chiavi di attributo duplicate in una dimensione. Nella maggior parte dei casi, è accettabile avere chiavi di attributo duplicate, ma questo errore informa l'utente dei duplicati in modo da poter controllare la dimensione per individuare i difetti di progettazione che potrebbero causare relazioni incoerenti tra attributi. |
IgnoreError non registra né conta l'errore; l'elaborazione continua fino a quando il numero di errori è inferiore al limite massimo. |
ReportAndContinue registra e conta l'errore. ReportAndStop segnala l'errore e interrompe immediatamente l'elaborazione, indipendentemente dal limite di errori. |
|
NullKeyNotAllowed Si verifica quando l'errore NullProcessing = viene impostato su un attributo della dimensione o quando sono presenti valori Null in una colonna chiave dell'attributo utilizzata per identificare in modo univoco un membro. |
ReportAndContinue registra e conta l'errore. |
ReportAndStop segnala l'errore e interrompe immediatamente l'elaborazione, indipendentemente dal limite di errori. IgnoreError non registra né conta l'errore; l'elaborazione continua fino a quando il numero di errori è inferiore al limite massimo. I record che attivano questo errore vengono convertiti nel membro sconosciuto per impostazione predefinita, ma è possibile impostare la proprietà KeyErrorAction per rimuoverli. |
|
NullKeyConvertedToUnknown Si verifica quando i valori null vengono successivamente convertiti nel membro sconosciuto. L'impostazione di NullProcessing = ConvertToUnknown su un attributo della dimensione attiverà questo errore. |
IgnoreError non registra né conta l'errore; l'elaborazione continua fino a quando il numero di errori è inferiore al limite massimo. | Se si considera questo errore informativo, mantenere l'impostazione predefinita. In caso contrario, è possibile scegliere ReportAndContinue per segnalare l'errore alla finestra Elaborazione e contare l'errore verso il limite di errore. ReportAndStop segnala l'errore e interrompe immediatamente l'elaborazione, indipendentemente dal limite di errori. |
Proprietà generali
| Proprietà | Valori |
|---|---|
| KeyErrorAction | Questa è l'azione eseguita dal server quando si verifica un errore KeyNotFound . Le risposte valide a questo errore includono ConvertToUnknown o DiscardRecord. |
| KeyErrorLogFile | Si tratta di un nome file definito dall'utente che deve avere un'estensione di file .log, che si trova in una cartella in cui l'account del servizio dispone delle autorizzazioni di lettura/scrittura. Questo file di log conterrà solo errori generati durante l'elaborazione. Usare Flight Recorder se sono necessarie informazioni più dettagliate. |
| KeyErrorLimit | Si tratta del numero massimo di errori di integrità dei dati consentiti dal server prima dell'esito negativo dell'elaborazione. Un valore di -1 indica che non esiste alcun limite. Il valore predefinito è 0, il che significa che l'elaborazione si arresta dopo il primo errore. È anche possibile impostarlo su un numero intero. |
| KeyErrorLimitAction | Si tratta dell'azione eseguita dal server quando il numero di errori di chiave ha raggiunto il limite massimo. Con Interrompi elaborazione, l'elaborazione termina immediatamente. Con Interrompi registrazione, l'elaborazione continua, ma gli errori non vengono più segnalati o conteggiati. |
Dove si impostano le proprietà della "Error Configuration"
Usare le pagine delle proprietà in SQL Server Management Studio dopo la distribuzione del database o nel progetto modello in SQL Server Data Tools. Le stesse proprietà sono disponibili in entrambi gli strumenti. È anche possibile impostare le proprietà di configurazione degli errori nel file msmdrsrv.ini per modificare le impostazioni predefinite del server per la configurazione degli errori e nei comandi Batch e Process se l'elaborazione viene eseguita come operazione con script.
È possibile impostare la configurazione degli errori in qualsiasi oggetto che può essere elaborato come operazione autonoma.
SQL Server Management Studio
In Esplora oggetti fare clic su Proprietà uno di questi oggetti: dimensione, cubo o partizione.
Nella sezione Proprietà, fare clic su Configurazione errori.
SQL Server Data Tools (Strumenti di dati di SQL Server)
In Esplora soluzioni fare doppio clic su una dimensione o un cubo. ErrorConfiguration viene visualizzato in Proprietà nel riquadro seguente.
In alternativa, solo per una singola dimensione, fare clic con il pulsante destro del mouse sulla dimensione in Esplora soluzioni, scegliere Processo e quindi scegliere Modifica impostazioni nella finestra di dialogo Dimensione processo. Le opzioni di configurazione degli errori vengono visualizzate nella scheda "Errori delle chiavi di dimensione".
Chiavi mancanti (KeyNotFound)
I record con un valore di chiave mancante non possono essere aggiunti al database, non anche quando gli errori vengono ignorati o il limite di errore è illimitato.
Il server genera l'errore KeyNotFound durante l'elaborazione della partizione, quando una tabella di fatto contiene un valore di chiave esterna, ma la chiave esterna non ha alcun record corrispondente in una tabella delle dimensioni correlata. Questo errore si verifica anche durante l'elaborazione di tabelle delle dimensioni correlate o innevate, in cui un record in una dimensione specifica una chiave esterna che non esiste nella dimensione correlata.
Quando si verifica un errore KeyNotFound , il record che causa l'errore viene allocato al membro sconosciuto. Questo comportamento viene controllato tramite l'azione chiave, impostato su ConvertToUnknown, in modo da poter visualizzare i record allocati per ulteriori indagini.
Chiavi esterne Null in una tabella dei fatti (KeyNotFound)
Per impostazione predefinita, un valore Null in una colonna chiave esterna di una tabella dei fatti viene convertito in zero. Supponendo che zero non sia un valore di chiave esterna valido, l'errore KeyNotFound verrà registrato e conteggiato per il limite di errore pari a zero per impostazione predefinita.
Per consentire la continuazione dell'elaborazione, è possibile gestire il valore Null prima che venga convertito e verificato la presenza di errori. A tale scopo, impostare NullProcessing su Errore.
Impostare la proprietà NullProcessing su una misura
Nello strumento Esplora soluzioni di SQL Server Data Tools, fare doppio clic sul cubo per aprirlo in Progettazione cubi.
Fare clic con il pulsante destro del mouse su una misura nel riquadro Misure e scegliere Proprietà.
In Proprietà, espandere Origine per visualizzare la proprietà NullProcessing. È impostato su Automatico per impostazione predefinita, che per gli elementi OLAP converte i valori Null in zeri per i campi contenenti dati numerici.
Modificare il valore in Errore per escludere tutti i record con un valore Null, evitando la conversione da null a numerico (zero). Questa modifica consente di evitare errori di chiave duplicati correlati a più record con zero nella colonna chiave ed evitare errori KeyNotFound quando una chiave esterna con valori zero non ha una chiave primaria equivalente in una tabella delle dimensioni correlata.
Chiavi Null in una dimensione
Per continuare l'elaborazione quando vengono trovati valori nulli nelle chiavi esterne di una dimensione snowflaked, gestire inizialmente i valori nulli impostando NullProcessing sull'elemento KeyColumn dell'attributo della dimensione. In questo modo il record viene rimosso o convertito prima che si verifichi l'errore KeyNotFound .
Sono disponibili due opzioni per la gestione dei valori Null nell'attributo della dimensione:
Impostare NullProcessing=UnknownMember per allocare record con valori Null al membro sconosciuto. In questo modo viene generato l'errore NullKeyConvertedToUnknown , che viene ignorato per impostazione predefinita.
Impostare NullProcessing=Error per escludere i record con valori Null. In questo modo viene generato l'errore NullKeyNotAllowed , che viene registrato e viene conteggiato per il limite di errori della chiave. È possibile impostare la proprietà di configurazione degli errori su Chiave Null non consentita su IgnoreError per consentire la continuazione dell'elaborazione.
I valori Null possono essere problematici per i campi non chiave, in quanto le query MDX restituiscono risultati diversi a seconda che null venga interpretato come zero o vuoto. Per questo motivo, SQL Server Analysis Services offre opzioni di elaborazione Null che consentono di predefinito il comportamento di conversione desiderato.
Impostare la proprietà NullProcessing su un attributo della dimensione
In Esplora Soluzioni di SQL Server Data Tools, fare doppio clic sulla dimensione per aprirla in Designer Dimensioni.
Fare clic con il pulsante destro del mouse su un attributo nel riquadro Attributi e scegliere Proprietà.
In Proprietà, espandere KeyColumns per visualizzare la proprietà NullProcessing. È impostato su Automatico per impostazione predefinita, che converte i valori Null in zeri per i campi contenenti dati numerici. Modificare il valore in Error o UnknownMember.
Questa modifica rimuove le condizioni sottostanti che attivano KeyNotFound rimuovendo o convertendo il record prima di verificare la presenza di errori.
A seconda della configurazione degli errori, una di queste azioni può generare un errore segnalato e conteggiato. Potrebbe essere necessario modificare proprietà aggiuntive, ad esempio l'impostazione di KeyNotFound su ReportAndContinue o KeyErrorLimit su un valore diverso da zero, per consentire l'elaborazione di continuare quando questi errori vengono segnalati e conteggiati.
Chiavi duplicate risultanti relazioni incoerenti (KeyDuplicate)
Per impostazione predefinita, la presenza di una chiave duplicata non interrompe l'elaborazione, ma l'errore viene ignorato e il record duplicato viene escluso dal database.
Per modificare questo comportamento, impostare KeyDuplicate su ReportAndContinue o ReportAndStop per segnalare l'errore. È quindi possibile esaminare l'errore per determinare potenziali difetti nella progettazione delle dimensioni.
Modificare il limite di errore o l'azione del limite di errore
È possibile aumentare il limite di errori per consentire più errori durante l'elaborazione. Non sono disponibili indicazioni per aumentare il limite di errori; il valore appropriato varia a seconda dello scenario. I limiti di errore vengono specificati come KeyErrorLimit nelle proprietà ErrorConfiguration in SQL Server Data Tools o come Numero di errori nella scheda Configurazione errori per le proprietà di dimensioni, cubi o gruppi di misure in SQL Server Management Studio.
Una volta raggiunto il limite di errore, è possibile specificare che l'elaborazione si arresta o che la registrazione si arresta. Si supponga, ad esempio, di impostare l'azione su StopLogging su un limite di errore pari a 100. In caso di errore 101, l'elaborazione continua, ma gli errori non vengono più registrati o contati. Le azioni relative al limite degli errori vengono specificate come KeyErrorLimitAction nelle proprietà ErrorConfiguration in SQL Server Data Tools oppure come Azione in caso di errore nella scheda di Configurazione errori per le proprietà di dimensioni, cubi o gruppi di misure in SQL Server Management Studio.
Impostare il percorso del log degli errori
È possibile specificare un file per archiviare i messaggi di errore correlati alla chiave segnalati durante l'elaborazione. Per impostazione predefinita, gli errori sono visibili durante l'elaborazione interattiva nella finestra Processo e quindi eliminati quando si chiude la finestra o la sessione. Il log conterrà solo informazioni sugli errori correlate alle chiavi, identiche agli errori segnalati nelle finestre di dialogo di elaborazione.
Gli errori verranno registrati in un file di testo e il file deve avere l'estensione .log. Il file sarà vuoto a meno che non si verifichino errori. Per impostazione predefinita, nella cartella DATA verrà creato un file. È possibile specificare un'altra cartella purché l'account del servizio Analysis Services possa scrivere in tale percorso.
Passo successivo
Decidere se gli errori interromperanno l'elaborazione o verranno ignorati. Tenere presente che solo l'errore viene ignorato. Il record che ha causato l'errore non viene ignorato; viene scartato o convertito in membro sconosciuto. I record che violano le regole di integrità dei dati non vengono mai aggiunti al database. Per impostazione predefinita, l'elaborazione si interrompe quando si verifica il primo errore, ma è possibile modificarla aumentando il limite di errore. Nello sviluppo di cubi può essere utile allentare le regole di configurazione degli errori, consentendo l'elaborazione a continuare, in modo da avere dati su cui testare.
Decidere se modificare i comportamenti di elaborazione Null predefiniti. Per impostazione predefinita, i valori Null in una colonna stringa vengono elaborati come valori vuoti, mentre i valori Null in una colonna numerica vengono elaborati come zero.
Vedere anche
Proprietà log
Definizione delle proprietà di elaborazione dei membri sconosciuti e nulli