Síntomas
En un entorno de Microsoft SQL Server 2016, se procesan varias particiones de una tabla en paralelo. Al realizar un seguimiento del progreso, observa un evento de recodificación para, al menos, una de las columnas.
En esta situación, es posible que se produzca un error de excepción en la operación de procesamiento. A veces, el procesamiento puede completarse correctamente, pero entonces las consultas posteriores presentan un error de excepción similar al siguiente:
Nota
Se ha producido una excepción inesperada.
Se ha producido una excepción inesperada. (Microsoft SQL Server 2016 Analysis Services)
Ubicación del programa:
en Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular(CommandBehavior behavior, ICommandContentProvider contentProvider, AdomdPropertyCollection commandProperties, IDataParameterCollection parameters)
en Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader(CommandBehavior behavior)
en Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
en Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()
Nota: a veces, este problema se produce una vez completado el procesamiento y se ejecutan consultas en los datos procesados.
Resolución
Información sobre la actualización acumulativa
La corrección de este problema se incluye en la siguiente actualización acumulativa para SQL Server:
Acerca de las actualizaciones acumulativas para SQL Server
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:
Actualización acumulativa más reciente para SQL Server 2016
Solución alternativa
Para solucionar este problema, siga uno de los procedimientos que se indican a continuación:
- Determine qué columnas necesitan recodificación y use una partición falsa al principio para generar valores que forzarán la codificación hash en la fase de detección. La partición falsa debe ser la que se usa para seleccionar la codificación antes de que comience el paralelismo. Después de que se hayan procesado todas las particiones, puede borrar o eliminar la partición falsa.
- Use el procesamiento en serie en lugar del procesamiento paralelo.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Más información
El procesamiento paralelo de particiones tabulares tiene la siguiente lógica:
- Use los datos de una partición para determinar la codificación (valor o hash) de las columnas.
- Una vez seleccionada la codificación, las otras particiones pueden comenzar a procesarse en paralelo.
- Si se selecciona la codificación de valor y se capturan las filas, se puede encontrar un valor que no encaja en el esquema de codificación de valores. En este caso, toda la columna debe volver a codificarse en el esquema de codificación hash.
- Esta operación de recodificación (convertir la codificación de valores en codificación hash) encuentra un problema cuando se procesan otras particiones al mismo tiempo.
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.