Sintomas
Em um ambiente do Microsoft SQL Server 2016, você processa várias partições de uma tabela em paralelo. Ao rastrear o progresso, você observa um evento de recodificação para pelo menos uma das colunas.
Nessa situação, a operação de processamento pode falhar com um erro de exceção. Às vezes, o processamento pode ser concluído com êxito, mas as consultas subsequentes falham com um erro de exceção semelhante ao seguinte:
Observação
Ocorreu uma exceção inesperada.
Ocorreu uma exceção inesperada. (Microsoft SQL Server 2016 Analysis Services)
Local do programa:
em Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular(CommandBehavior, behavior, ICommandContentProvider, contentProvider, AdomdPropertyCollection, commandProperties, parâmetros IDataParameterCollection)
em Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader (comportamento CommandBehavior)
em Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
em Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()
Observação Às vezes, esse problema ocorre depois que o processamento é concluído e as consultas estão sendo executadas nos dados processados.
Resolução
Informações sobre a atualização cumulativa
A correção para esse problema está incluída na seguinte atualização cumulativa para o SQL Server:
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:
Atualização cumulativa mais recente do SQL Server 2016
Solução alternativa
Para contornar esse problema, siga um destes procedimentos:
- Determine quais colunas precisam ser recodificadas e use uma partição falsa no início para gerar valores que forçarão a codificação de hash na fase de detecção. A partição falsa deve ser aquela usada para selecionar a codificação antes do início do paralelismo. Depois que todas as partições tiverem sido processadas, você poderá limpar ou excluir a partição falsa.
- Use o processamento serial em vez do processamento paralelo.
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Mais informações
O processamento paralelo de partições tabulares tem a seguinte lógica:
- Use os dados em uma partição para determinar a codificação (valor ou hash) das colunas.
- Depois que a codificação é selecionada, as outras partições podem começar a ser processadas em paralelo.
- Se a codificação de valor estiver selecionada e à medida que as linhas forem buscadas, poderá ser encontrado um valor que não se encaixe no esquema de codificação de valor. Nesse caso, a coluna inteira deve ser codificada novamente no esquema de codificação de hash.
- Essa operação de recodificação (conversão de codificação de valor em codificação de hash) encontra um problema quando outras partições estão sendo processadas ao mesmo tempo.
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.