Symptômes
Dans un environnement Microsoft SQL Server 2016, vous traitez plusieurs partitions d’une table en parallèle. Lorsque vous suivez la progression, vous remarquez un événement de réencodage pour au moins une des colonnes.
Dans ce cas, l’opération de traitement peut échouer avec une erreur d’exception. Parfois, le traitement peut être terminé avec succès, mais les requêtes suivantes échouent avec une erreur d’exception semblable à la suivante :
Remarque
Une exception inattendue s’est produite.
Une exception inattendue s’est produite. (Microsoft SQL Server 2016 Analysis Services)
Emplacement du programme :
sur Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular(CommandBehavior behavior, ICommandContentProvider contentProvider, AdomdPropertyCollection commandProperties, IDataParameterCollection parameters)
dans Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader(comportement CommandBehavior)
sur Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
dans Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()
Remarque Ce problème se produit parfois une fois le traitement terminé et des requêtes exécutées sur les données traitées.
Résolution
Informations sur les mises à jour cumulatives
Le correctif de ce problème est inclus dans la mise à jour cumulative suivante pour SQL Server :
À propos des mises à jour cumulatives pour SQL Server
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Dernière mise à jour cumulative pour SQL Server 2016
Solution de contournement
Pour contourner ce problème, effectuez l’une des opérations suivantes :
- Déterminez quelles colonnes nécessitent un réencodage et utilisez une fausse partition au début pour générer des valeurs qui forceront l’encodage par hachage lors de la phase de détection. La fausse partition doit être celle utilisée pour sélectionner l’encodage avant le début du parallélisme. Une fois que toutes les partitions ont été traitées, vous pouvez effacer ou supprimer la fausse partition.
- Utilisez le traitement en série au lieu du traitement parallèle.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Informations supplémentaires
Le traitement parallèle des partitions tabulaires a la logique suivante :
- Utilisez les données de la partition pour déterminer l’encodage (valeur ou hachage) des colonnes.
- Une fois l’encodage sélectionné, les autres partitions peuvent commencer à traiter en parallèle.
- Si l’encodage de valeur est sélectionné et que les lignes sont récupérées, une valeur peut être rencontrée qui ne rentre pas dans le schéma de codage de valeur. Dans ce cas, la colonne entière doit être réencodée dans le schéma de codage de hachage.
- Cette opération de réencodage (conversion de l’encodage de valeur en codage de hachage) rencontre un problème lorsque d’autres partitions sont traitées en même temps.
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.