Feil #: 8490536 (SQL VSTS)
Feil #: 53970 (innhold idé)
Symptomer
I en Microsoft SQL Server-2016-miljø, kan du behandle flere partisjoner på en tabell i parallell. Når du sporer fremdriften, kan du se en omkoding hendelse for minst én av kolonnene.
I så fall kan behandlingsoperasjonen mislykkes med en feil. Noen ganger behandling kan fullføres, men deretter etterfølgende spørringer mislykkes med en feil som ligner på følgende:
Det oppstod et uventet unntak.
Det oppstod et uventet unntak. (2016 for Microsoft SQL Server Analysis Services)
Plassering av programmet:
på Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.IExecuteProvider.ExecuteTabular (CommandBehavior virkemåte, ICommandContentProvider contentProvider, AdomdPropertyCollection, commandProperties, IDataParameterCollection parametere)
på Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader (CommandBehavior virkemåte)
ved Microsoft.AnalysisServices.AdomdClient.AdomdCommand.ExecuteReader()
ved Microsoft.ReportingServices.QueryDesigners.ASDesigner.QueryBuilderClientControl.QueryExec.ThreadExecution()
Obs! Dette problemet oppstår noen ganger etter at behandlingen er fullført og spørringer utføres mot dataene behandles.
Oppløsning
Informasjon om kumulativ oppdatering
Hurtigreparasjonen for dette problemet er inkludert i følgende kumulativ oppdatering for SQL Server:
Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:
Løsningen
Hvis du vil omgå dette problemet, gjør du ett av følgende:
-
Bestemme hvilke kolonner som krever koding på nytt, og bruk en falsk partisjon i begynnelsen til å generere verdier som vil tvinge hash-koding i gjenkjenningsfasen. Falske partisjonen må være den som brukes til å velge kodingen før parallellisme begynner. Når alle partisjonene er behandlet, kan du fjerne eller slette partisjonen falske.
-
Bruke serielle behandling i stedet for parallell behandling.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Hvis du vil ha mer informasjon
Parallell behandling av tabellform partisjoner har følgende logikken:
-
Bruke data i én partisjon ikke avgjøre kodingen (enten verdi eller hash) av kolonnene.
-
Etter at kodingen er valgt, kan de andre partisjonene begynne å behandle parallelt.
-
Hvis er valgt som koding verdi, og som radene hentes, kan en verdi oppstå som ikke får plass i kodeoppsettet som verdi. I dette tilfellet må hele kolonnen omkodes i kodeoppsettet som hash-kode.
-
Operasjonen på nytt koding (det å konvertere verdien koding i hash-koding) oppdager et problem når andre partisjoner behandles samtidig.
Kallstakk
0:029> kpn100
# Underordnet-SP RetAddr samtale område
00 (innebygd funksjon)-------xmsrv! XMMemoryHashDataDictionary < dobbel >:: GetNonNullValueNV + 0x7
01 00000052' 4719ef40 00007ffd'a9a5b1ae xmsrv! XMVertiScanJob::Agg_RM_C21_Sum_YesNulls_Real_BNo_HashDictionary (struct XMVertiScanState * io_rVertiScanState = 0x00000052'4719f140, int64 in_iMeasure = 0n1) + 0x1db
02 00000052' 4719ef80 00007ffd'a9873250 xmsrv! XMVertiScanJob::AggXPI (struct XMVertiScanState * io_rVertiScanState = 0x00000052'4719f140, int64 in_iMeasure = 0n1) + 0x1a4e
03 (innebygd funksjon)-------xmsrv! XMVertiScanJob::AggXPIWrapper + 0x2e
04 00000052' 4719efe0 00007ffd'a9870ee5 xmsrv! XMVertiScanJob::ComputeMeasures (struct XMVertiScanState * io_rVertiScanState = 0x00000052'4719f140) + 0x870
05 00000052' 4719f0a0 00007ffd'a9870a13 xmsrv! XMVertiScanJob::RunInternal (klasse XMIDataCache * in_pDataCache = < verdi utilgjengelig feil >) + 0x425
06 00000052' 4719f2c0 00007ffd'a9870646 xmsrv! XMVertiScanJob::RunSegment (int64 in_iSegment = 0n2, klasse XMIDataCache * in_pDataCache = 0x00000052'6c0c1b88) + 0xd3
07 00000052' 4719f320 00007ffd'a959b201 xmsrv! XMVertiScanJob::Run (void) + 0x2a6
08 00000052' 4719f3e0 00007ffd'a95929b1 xmsrv! XMJob::ExecuteRunWrapper (void) + 0x261
09 00000052' 4719f510 00007ffd'a9592568 xmsrv! XMScheduler::ContinueJob (void) + 0x431
0a 00000052' 4719f7e0 00007ffd'a959e434 xmsrv! XMScheduler::ExecuteWork (unsigned int64 in_mskThreadAffinity = 0x00007ffd'00010000) + 0x18
0b 00000052' 4719f810 00007ffd'a959e0b8 xmsrv! XMThreadPool::WorkerMethod (struct XMThreadPoolInitArg * in_pInitArg = 0x00000052'2ba2f200) + 0xe4
0c 00000052' 4719f850 00007ffd'c68b4f87 xmsrv! XMThreadPool::InternalThreadProc (void * lpParameter = 0x00000052'2ba2f200) + 0x28
0d 00000052`4719f880 00007ffd`c68b512e msvcr120!_callthreadstartex(void)+0x17
0E 00000052' 4719f8b0 00007ffd'd98f13d2 msvcr120! _threadstartex (void * ptd = 0x00000052'2928a620) + 0x102
0f 00000052' 4719f8e0 00007ffd'dbb854e4 kernel32! BaseThreadInitThunk (unsigned lang RunProcessInit = < verdi utilgjengelig feil >, < funksjonen > * StartAddress = 0x00007ffd'c68b502c, void * argumentet = 0x00000052'2928a620) + 0x22
10 00000052' 4719f910 00000000'00000000-ntdll! RtlUserThreadStart (< funksjonen > * StartAddress = 0x00007ffd'c68b502c, void * argumentet = 0x00000052'2928a620) + 0x34
Referanser
Lær mer om terminologien som Microsoft bruker til å beskrive oppdateringer av programvare.
LAG:
Forfatter:
Tekstforfatter: v-thomr
Teknisk redaktør: akshaim; sarchid; v-fmeng; sqlprev; daleche
Redaktør: v-rhowar