KB3196100 - FIX: Se produce una excepción durante el procesamiento paralelo de particiones si se vuelve a codificar una columna en SQL Server 2016

Se aplica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

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.