KB4488809 – LØSNING: Deklarasjon oppstår når en parallell spørring sletter fra en Filestream-tabell i SQL Server 2014, 2016 og 2017

Gjelder for
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) 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)

Symptomer

Tenk deg følgende:

  • Du har en svært stor Filestream-tabell.
  • Du kjører en slettespørring for rader i Filestream-tabellen som oppretter en kostbar spørringsplan, for eksempel en som er filtrert av en indre kobling til en annen stor tabell i systemet.
  • Spørringsoptimaliseringen velger en plan for parallell utførelse.

I dette scenariet oppstår det en deklarasjon, og du kan få feilmeldinger som ligner på det følgende i SQL Server-feilloggen:

DateTime spid SpidNumber Error: 5553, Alvorsgrad: 20, Tilstand: 6.

DateTime spid SpidNumber SQL Server intern feil. FILESTREAM-behandling kan ikke fortsette med gjeldende kommando.
      

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».

Oppløsning

Problemet er løst i følgende kumulative oppdateringer for SQL Server:

Om kumulative oppdateringer for SQL Server:

Hver nye kumulative oppdatering for SQL Server inneholder alle hurtigreparasjoner og alle sikkerhetsrettinger som fulgte med den forrige kumulative oppdateringen. Ta en titt på de nyeste kumulative oppdateringene for SQL Server:

Midlertidig løsning

Du kan omgå dette problemet ved å bruke følgende metode:

Flytt den indre sammenføyningsspørringen til en egen setning, og lagre resultatene i en midlertidig tabell. Kjør deretter slettespørringen som er filtrert etter oppføringene i den midlertidige tabellen. I tillegg kan du øke kostnadsterskelen for parallellitet for å tvinge optimaliseringsverktøyet til å serialisere spørringsplanen.

Eksempel:

SELECT RefTable.Alias INTO #T FROM DB.dbo.OuterTable INNER JOIN DB.dbo.RefTable ON RefTable.Alias = OuterTable.Alias

WHERE OuterTable.Alias > 30006 AND OuterTable.Alias < 30010

SLETT FRA DB.dbo. [Tabell] WHERE-alias I (VELG * FRA #T)

Kilder

Finn ut mer om terminologien som Microsoft bruker til å beskrive programvareoppdateringer.