Symptom
I en Microsoft SQL Server 2016-miljö bearbetar du flera partitioner av en tabell parallellt. När du spårar förloppet ser du en omkodningshändelse för minst en av kolumnerna.
I det här fallet kan bearbetningsåtgärden misslyckas med ett undantagsfel. Ibland kan bearbetningen slutföras framgångsrikt, men sedan misslyckas efterföljande frågor med ett undantagsfel som liknar följande:
Obs
Ett oväntat undantag uppstod.
Ett oväntat undantag uppstod. (Microsoft SQL Server 2016 Analysis Services)
Programplats:
på Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular(CommandBehavior beteende, ICommandContentProvider contentProvider, AdomdPropertyCollection commandProperties, IDataParameterCollection parameters)
på Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader(CommandBehavior beteende)
på Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
på Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()
Obs! Ibland uppstår det här problemet när bearbetningen är klar och frågor körs mot bearbetade data.
Lösning
Information om kumulativ uppdatering
Korrigeringen för det här problemet ingår i följande kumulativa uppdatering för SQL Server:
Om kumulativa uppdateringar för SQL Server
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Senaste kumulativa uppdateringen för SQL Server 2016
Lösning
Du kan komma runt det här problemet genom att göra något av följande:
- Bestäm vilka kolumner som kräver omkodning och använd en falsk partition i början för att generera värden som tvingar fram hash-kodning i identifieringsfasen. Den falska partitionen måste vara den som används för att välja kodningen innan parallelliteten börjar. När alla partitioner har bearbetats kan du rensa eller ta bort den falska partitionen.
- Använd seriell bearbetning i stället för parallell bearbetning.
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".
Mer information
Parallell bearbetning av tabellpartitioner har följande logik:
- Använd data i en partition för att fastställa kodningen (värde eller hash) för kolumnerna.
- När kodningen har valts kan de andra partitionerna börja bearbeta parallellt.
- Om värdekodning väljs och när raderna hämtas kan det hända att ett värde påträffas som inte passar in i värdekodningsschemat. I det här fallet måste hela kolumnen kodas om i hashkodningsschemat.
- Den här omkodningsåtgärden (konvertering av värdekodning till hashkodning) stöter på ett problem när andra partitioner bearbetas samtidigt.
Referenser
Läs om den terminologi som Microsoft använder för att beskriva programuppdateringar.