Partilhar via


Configuração de erro do cubo, processamento de partição e dimensão (SSAS multidimensional)

As propriedades de configuração de erro no cubo, na partição ou nos objetos de dimensão determinam como o servidor responde quando ocorrem erros de integridade de dados durante o processamento. As chaves duplicadas, chaves ausentes e os valores nulos em uma coluna de chave normalmente disparam esses erros, e embora o registro que cause o erro não seja adicionado ao banco de dados, você pode definir propriedades que determinam o que acontece em seguida. Por padrão, o processamento para. No entanto, durante o desenvolvimento do cubo, talvez você queira que o processamento continue quando ocorrerem os erros de forma que você possa testar comportamentos do cubo com dados importados, mesmo se estiverem incompletos.

Este tópico inclui as seções a seguir:

  • Ordem de execução

  • Comportamentos padrão

  • Propriedades de configuração do erro

  • Onde definir as propriedades de configuração do erro

  • Chaves ausentes (KeyNotFound)

  • Chaves estrangeiras nulas em uma tabela de fato (KeyNotFound)

  • Chaves nulas em uma dimensão

  • Relações inconsistentes resultantes de chaves duplicadas (KeyDuplicate)

  • Modificar o limite do erro ou a ação de limite do erro

  • Definir o caminho do log de erros

  • Próxima etapa

Ordem de execução

O servidor sempre executa regras de NullProcessing antes das regras de ErrorConfiguration para cada registro. Isso é importante entender porque as propriedades de processamento nulo que convertem nulos em zeros podem introduzir subsequentemente erros de chave duplicada quando dois ou mais registros de erro têm zero em uma coluna de chave.

Comportamentos padrão

Por padrão, o processamento para no primeiro erro que implica uma coluna de chave. Esse comportamento é controlado por um limite de erros que especifica zero como o número de erros permitido e a política Parar processamento que diz ao servidor para parar o processamento quando o limite de erro é atingido.

Os registros que disparam um erro, devido aos valores nulos, ausentes ou duplicados, são convertidos para o membro desconhecido ou descartado. O Analysis Services não importará dados que violam restrições de integridade de dados.

  • A conversão para o membro desconhecido ocorre por padrão, devido à configuração de ConvertToUnknown para KeyErrorAction. Os registros alocados para o membro desconhecido são colocados em quarentena no banco de dados como evidência de um problema que você pode querer investigar depois que o processamento for concluído.

    Os membros desconhecidos são excluídos de cargas de trabalho de consulta, mas serão visíveis em alguns aplicativos cliente se UnknownMember for definido como Visível.

    Se você quiser controlar quanto nulos foram convertidos para o membro desconhecido, poderá modificar a propriedade NullKeyConvertedToUnknown para relatar esses erros no log ou janela de processamento.

  • O descarte ocorre quando você define manualmente a propriedade KeyErrorAction para DiscardRecord.

Pelas propriedades da configuração de erro, você poderá determinar como o servidor responde quando ocorre um erro. As opções incluem parar o processamento imediatamente, continuar o processamento, mas parando de registrar em log ou continuar o processamento e o log de erros. As opções variam de acordo com a severidade do erro.

A contagem de erros controla o número de erros. Quando você define um limite superior, a resposta do servidor muda quando o limite é atingido. Por padrão, o servidor para o processamento depois que o limite é atingido. O limite padrão é 0, fazendo o processamento parar no primeiro erro que é contado.

Os erros de impacto alto, como uma chave ausente ou valor nulo em um campo de chave, devem ser resolvidos rapidamente. Por padrão, esses erros seguem os comportamentos do servidor de ReportAndContinue, em que o servidor captura o erro, adiciona-o à contagem de erro e continua o processamento (a não ser que o limite de erros seja zero, então o processamento será interrompido imediatamente).

Outros erros são gerados mas não contados ou registrados em log por padrão (esta é a configuração IgnoreError) porque o erro não necessariamente representa um problema de integridade de dados.

As contagens de erro são afetadas pelas configurações de processamento nulo. Para atributos de dimensão, as opções de processamento nulo determinam como o servidor responde quando os valores nulos são encontrados. Por padrão, os nulos em uma coluna numérica são convertidos em zeros, enquanto que nulos em uma coluna de cadeia de caracteres são processados como cadeias de caracteres em branco. Você pode substituir as propriedades NullProcessing para capturar valores nulos antes de serem transformadas em erros KeyNotFound ou KeyDuplicate. Consulte Chaves nulas em uma dimensão para obter detalhes.

Os erros são registrados na caixa de diálogo Processar, mas não são salvos. Você pode especificar um nome de arquivo de log de erros de chave para coletar erros em um arquivo de texto.

Propriedades de configuração do erro

Há nove propriedades de configuração de erro. Cinco são usadas para determinar a resposta do servidor quando ocorre um erro específico. Os outros quatro seguem o escopo das cargas de trabalho da configuração de erro, como, por exemplo, quantos erros permitir, o que fazer quando o limite é atingido, se deve coletar erros em um arquivo de log.

Resposta do servidor para erros específicos

Propriedade

Padrão

Outros valores

CalculationError

Ocorre ao inicializar a configuração de erros.

IgnoreError nem registra em log nem conta erros; o processamento continuará contanto que a contagem de erro esteja no limite máximo.

ReportAndContinue registra em log e conta o erro.

ReportAndStop relata o erro e para o processamento imediatamente, independentemente do limite de erros.

KeyNotFound

Ocorre quando uma chave estrangeira em uma tabela de fatos não tem uma chave primária correspondente em uma tabela de dimensões relacionada (por exemplo, uma tabela de fatos de vendas tem um registro com uma ID de produto que não existe na tabela de dimensões de produto). Esse erro pode ocorrer durante o processamento da partição ou o processamento de dimensões floco de neve.

ReportAndContinue registra em log e conta o erro.

ReportAndStop relata o erro e para o processamento imediatamente, independentemente do limite de erros.

IgnoreError nem registra em log nem conta erros; o processamento continuará contanto que a contagem de erro esteja no limite máximo. Os registros que disparam esse erro são convertidos para o membro desconhecido por padrão, mas você pode alterar a propriedade KeyErrorAction para rejeitá-los.

KeyDuplicate

Ocorre quando as chaves de atributo duplicadas são encontradas em uma dimensão. Na maioria dos casos, é aceitável ter chaves de atributo duplicadas, mas esse erro informa sobre as duplicatas para que você possa verificar se há falhas de design na dimensão que possam resultar em relações inconsistentes entre atributos.

IgnoreError nem registra em log nem conta erros; o processamento continuará contanto que a contagem de erro esteja no limite máximo.

ReportAndContinue registra em log e conta o erro.

ReportAndStop relata o erro e para o processamento imediatamente, independentemente do limite de erros.

NullKeyNotAllowed

Ocorre quando NullProcessing = Error está definido em um atributo de dimensão ou quando há valores nulos em uma coluna de chave de atributo usados exclusivamente para identificar um membro.

ReportAndContinue registra em log e conta o erro.

ReportAndStop relata o erro e para o processamento imediatamente, independentemente do limite de erros.

IgnoreError nem registra em log nem conta erros; o processamento continuará contanto que a contagem de erro esteja no limite máximo. Os registros que disparam esse erro são convertidos para o membro desconhecido por padrão, mas você pode definir a propriedade KeyErrorAction para rejeitá-los.

NullKeyConvertedToUnknown

Ocorre quando os valores nulos são convertidos subsequentemente para o membro desconhecido. A configuração NullProcessing = ConvertToUnknown em um atributo de dimensão disparará esse erro.

IgnoreError nem registra em log nem conta erros; o processamento continuará contanto que a contagem de erro esteja no limite máximo.

Se você considerar que esse erro é informativo, mantenha o padrão. Caso contrário, você pode escolher ReportAndContinue para relatar o erro para a janela de processamento e contar o erro até o limite de erros.

ReportAndStop relata o erro e para o processamento imediatamente, independentemente do limite de erros.

Propriedades gerais

Propriedade

Valores

KeyErrorAction

Esta é a ação executada pelo servidor quando um erro KeyNotFound ocorre. As respostas válidas para esse erro incluem ConvertToUnknown ou DiscardRecord.

KeyErrorLogFile

Esse é um nome de arquivo definido pelo usuário que deve ter uma extensão de arquivo .log, localizado em uma pasta na qual a conta de serviço tem permissões de leitura/gravação. Este arquivo de log conterá somente os erros gerados durante o processamento. Use o Flight Recorder se precisar de informações mais detalhadas.

KeyErrorLimit

Esse é o número máximo de erros de integridade de dados que o servidor permitirá antes da falha do processamento. Um valor -1 indica que não há limite. O padrão é 0, o que significa parar o processamento depois do primeiro erro. Você também pode defini-lo como um número inteiro.

KeyErrorLimitAction

Esta é a ação executada pelo servidor quando o número de erros de chave atingiu o limite superior. Com Parar Processamento, o processamento é encerrado imediatamente. Com Parar log, o processamento continuará, mas os erros não serão relatados ou contados.

Onde definir as propriedades de configuração do erro

Use as páginas de propriedades em qualquer SQL Server Management Studio depois que o banco de dados é implantado ou no projeto de modelo no SQL Server Data Tools. As mesmas propriedades são encontradas em ambas as ferramentas. Você também pode definir as propriedades de configuração de erro no arquivo msmdrsrv.ini para alterar os padrões do servidor para a configuração de erro e nos comandos Batch e Process se o processamento for executado como uma operação de script.

Você pode definir a configuração de erro em qualquer objeto que possa ser processado como uma operação autônoma.

SQL Server Management Studio

  1. No Pesquisador de Objetos, clique com o botão direito Propriedades em um desses objetos: dimensão, cubo ou partição.

  2. Em Propriedades, clique em Configuração de Erro.

SQL Server Data Tools

  1. Em Gerenciador de Soluções, clique duas vezes em uma dimensão ou cubo. ErrorConfiguration aparecerá nas Propriedades no painel abaixo.

  2. Alternativamente, para uma única dimensão, clique com o botão direito na dimensão no Gerenciador de Soluções e escolha Processar e Alterar Configurações na caixa de diálogo Processar Dimensão. As opções de configuração de erro aparecem na guia Erros de chave de dimensão.

Chaves ausentes (KeyNotFound)

Os registros com um valor de chave ausente não podem ser adicionados ao banco de dados, nem mesmo quando erros são ignorados ou o limite de erros é ilimitado.

O servidor gera o erro KeyNotFound durante o processamento da partição, quando uma tabela no registro de fatos contém um valor de chave estrangeira, mas a chave estrangeira não tem nenhum registro correspondente na tabela de dimensões relacionada. Esse erro também ocorre ao processar as tabelas de dimensões relacionadas ou floco de neve, onde um registro em uma dimensão especifica uma chave estrangeira que não existe na dimensão relacionada.

Quando um erro KeyNotFound ocorre, o registro de incorretos é alocado para o membro desconhecido. Este comportamento é controlado com Ação chave, defina para ConvertToUnknown, de modo que você possa exibir os registros alocados para realizar uma investigação extra.

Chaves estrangeiras nulas em uma tabela de fato (KeyNotFound)

Por padrão, um valor nulo em uma coluna de chave estrangeira de uma tabela de fatos é convertido em zero. Supondo que zero não seja um valor de chave estrangeira válido, o erro KeyNotFound será registrado e contado até o limite de erros que é zero por padrão.

Para permitir que o processamento continue, você pode tratar o nulo antes de ser convertido e verificado em busca de erros. Para fazer isso, defina NullProcessing para Erro.

Definir a propriedade NullProcessing em uma medida

  1. No SQL Server Data Tools, no Gerenciador de Soluções, clique duas vezes no cubo para abri-lo no Designer de Cubo.

  2. Clique com o botão direito no painel Medidas e escolha Propriedades.

  3. Em Propriedades, expanda Origem para exibir a propriedade NullProcessing. É definido como Automático por padrão, o que, para itens OLAP, converte valores nulos em zeros para os campos que contêm dados numéricos.

  4. Altere o valor para Erro para excluir todos os registros que têm um valor nulo, impedindo a conversão nulo para numérico (zero). Essa modificação permite evitar os erros de chave duplicada relacionados a vários registros que têm zero na coluna de chave, e também permite evitar erros de KeyNotFound quando uma chave estrangeira de valor zero não tem nenhuma chave primária equivalente em uma tabela de dimensões relacionada.

Chaves nulas em uma dimensão

Para continuar o processamento quando os valores nulos são encontrados nas chaves estrangeiras em uma dimensão floco de neve, trate primeiro os valores nulos definindo NullProcessing no KeyColumn do atributo de dimensão. Isso descarta ou converte o registro, antes que o erro KeyNotFound ocorra.

Você tem duas opções para tratar nulos no atributo de dimensão:

  • Defina NullProcessing=UnknownMember para alocar registros com valores nulos ao membro desconhecido. Isso gera o erro NullKeyConvertedToUnknown, que é ignorado por padrão.

  • Defina NullProcessing=Error para excluir registros com valores nulos. Isso gera o erro NullKeyNotAllowed, que é registrado e contado até o limite de erros de chave. Você pode definir a propriedade de configuração de erro em Chave nula não permitida para IgnoreError para permitir que o processamento continue.

Os nulos podem ser problema para campos de não chave, porque as consultas MDX retornam resultados diferentes dependendo se o nulo é interpretado como zero ou vazio. Por esse motivo, o Analysis Services fornece as opções de processamento nulo que permitem predefinir o comportamento de conversão que você deseja. Consulte Definindo o membro desconhecido e as propriedades de processamento nulo e NullProcessing para obter detalhes.

Definir a propriedade NullProcessing em um atributo de dimensão

  1. No SQL Server Data Tools, no Gerenciador de Soluções, clique duas vezes na dimensão para abri-lo no Designer de Dimensão.

  2. Clique com o botão direito em um atributo no painel Atributos e escolha Propriedades.

  3. Em Propriedades, expanda KeyColumns para exibir a propriedade NullProcessing. É definido como Automático por padrão, o que converte valores nulos em zeros para os campos que contêm dados numéricos. Altere o valor para Erro ou UnknownMember.

    Essa modificação remove as condições subjacentes que disparam KeyNotFound descartando ou convertendo o registro antes de ser verificado quanto a erros.

    Dependendo da configuração de erro, qualquer uma destas ações pode resultar em um erro que é relatado e contado. Talvez seja necessário ajustar as propriedades adicionais, por exemplo definindo KeyNotFound como ReportAndContinue ou KeyErrorLimit como um valor diferente de zero, para permitir que o processamento continue quando esses erros são relatados e contados.

Relações inconsistentes resultantes de chaves duplicadas (KeyDuplicate)

Por padrão, a presença de uma chave duplicada não para o processamento, mas o erro será ignorado e o registro duplicado será excluído do banco de dados.

Para alterar esse comportamento, defina KeyDuplicate como ReportAndContinue ou ReportAndStop para relatar o erro. Você pode examinar o erro para determinar as falhas potenciais no design da dimensão.

Modificar o limite do erro ou a ação de limite do erro

Você pode aumentar o limite de erros para permitir mais erros durante o processamento. Não há nenhuma orientação para aumentar o limite de erros; o valor apropriado variará dependendo de seu cenário. Os limites de erro são especificados como KeyErrorLimit em propriedades ErrorConfiguration no SQL Server Data Tools ou como Número de erros na guia Configuração de Erros para as propriedades de dimensões, cubos ou grupos de medidas no SQL Server Management Studio.

Quando o limite de erros é atingido, você pode especificar que o processamento ou o registro em log pare. Por exemplo, suponha que você defina a ação para StopLogging em um limite de erros de 100. No erro de número 101, o processamento continuará, mas os erros não serão registrados ou contados. As ações de limites de erro são especificados como KeyErrorLimitAction em propriedades ErrorConfiguration no SQL Server Data Tools ou como Ação se houver erro na guia Configuração de Erros para as propriedades de dimensões, cubos ou grupos de medidas no SQL Server Management Studio.

Definir o caminho do log de erros

Você pode especificar um arquivo para armazenar as mensagens de erro relacionadas à chave que são relatadas durante o processamento. Por padrão, os erros são visíveis durante o processamento interativo na janela Processar e, em seguida, rejeitado quando você fecha a janela ou sessão. O log conterá apenas as informações de erros relacionadas às chaves, idênticas aos erros que você vê relatado nas caixas de diálogo de processamento.

Os erros serão registrados em um arquivo de texto e devem ter a extensão de arquivo .log. O arquivo estará vazio a menos que ocorram erros. Por padrão, um arquivo será criado na pasta DATA. Você pode especificar outra pasta contanto que a conta de serviço do Analysis Services possa ser gravada nesse local.

Próxima etapa

Decida se os erros pararão o processamento ou serão ignorados. Lembre-se de que somente o erro será ignorado. O registro que causou o erro não é ignorado; ele é descartado ou convertido em um membro desconhecido. Os registros que violam as regras de integridade de dados nunca são adicionados ao banco de dados. Por padrão, o processamento para quando o primeiro erro ocorre, mas você pode alterar isso aumentando o limite de erros. No desenvolvimento do cubo, poderá ser útil relaxar as regras de configuração de erro, permitindo que o processamento continue, de modo que haja dados para testar.

Decida se deseja alterar os comportamentos padrão de processamento de nulos. Por padrão, os nulos em uma coluna de cadeia de caracteres são processados como valores vazios, enquanto que os nulos em uma coluna numérica são processados como zero. Consulte Definindo o membro desconhecido e as propriedades de processamento nulo para obter instruções sobre como definir o processamento de nulos em um atributo.

Consulte também

Tarefas

Definindo o membro desconhecido e as propriedades de processamento nulo

Conceitos

Propriedades do log