Sintomas
Num ambiente microsoft SQL Server 2016, processa várias divisórias de uma tabela em paralelo. Quando rastreia o progresso, nota-se um evento de recodificação para pelo menos uma das colunas. Nesta situação, a operação de processamento pode falhar com um erro de exceção. Por vezes, o processamento pode ser concluído com sucesso, mas as consultas subsequentes falham com um erro de exceção que se assemelha ao seguinte:
Uma exceção inesperada ocorreu. Uma exceção inesperada ocorreu. (Microsoft SQL Server 2016 Analysis Services) Localização do programa: em Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular (Comportamento do Comando Deporte, ICommandContentProvider conteúdoProvider, Comandos AdomdPropertyCollectionProvidis, IDataParameterCollection parâmetros) em Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecutReader (Comportamento de ComandoBehavior) em Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader() em Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExecution()
Nota Por vezes, este problema ocorre após o processamento ser concluído e as consultas estão a ser executadas contra os dados processados.
Resolução
Informação de atualização cumulativa
A correção para este problema está incluída na seguinte atualização cumulativa 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 que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Solução
Para contornar esta questão, faça uma das seguintes:
-
Determine quais colunas requerem a recodção e use uma partição falsa no início para gerar valores que forcem a codificação do haxixe na fase de deteção. A divisão falsa deve ser a usada para selecionar a codificação antes do paralelismo começar. Depois de todas as divisórias terem sido processadas, pode limpar ou apagar a divisão falsa.
-
Utilize o processamento em série em vez de processamento paralelo.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informações
O processamento paralelo das divisórias tabulares tem a seguinte lógica:
-
Utilize os dados numa única partição para determinar a codificação (valor ou haxixe) das colunas.
-
Após a codificação ser selecionada, as outras divisórias podem começar a processar em paralelo.
-
Se a codificação de valor for selecionada e à medida que as linhas estão a ser recolhidas, poderá ser encontrado um valor que não se enquadra no esquema de codificação de valor. Neste caso, toda a coluna deve ser recodificada no esquema de codificação de haxixe.
-
Esta operação de recodição (conversão de valor codificado em codificação de haxixe) encontra um problema quando outras divisórias estão sendo processadas ao mesmo tempo.
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.