KB4488809 - FIX: bevestiging treedt op wanneer een parallelle query wordt verwijderd uit een Filestream-tabel in SQL Server 2014, 2016 en 2017

Van toepassing op
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)

Symptomen

Neem als voorbeeld het volgende scenario:

  • U hebt een zeer grote Filestream-tabel.
  • U voert een verwijderquery uit van rijen in de Filestream-tabel, waarmee een duur queryplan wordt gemaakt, zoals een plan dat wordt gefilterd door een inner join met een andere grote tabel in het systeem.
  • Het query-optimalisatieprogramma kiest een parallel uitvoeringsplan.

In dit scenario vindt er een bevestiging plaats en ontvangt u mogelijk foutberichten van de volgende strekking in het foutenlogboek van SQL Server:

DateTime spid SpidNumber Error: 5553, Severity: 20, State: 6.

DateTime spid SpidNumber Interne fout in SQL Server. FILESTREAM manager kan niet doorgaan met de huidige opdracht.
      

Status

Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in het gedeelte 'Van toepassing op'.

Oplossing

Het probleem is opgelost in de volgende cumulatieve updates voor SQL Server:

Over cumulatieve updates voor SQL Server:

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Tijdelijke oplossing

U kunt dit probleem op de volgende manier omzeilen:

Verplaats de inner join-query naar een aparte instructie en sla de resultaten op in een tijdelijke tabel. Voer vervolgens de verwijderquery uit die wordt gefilterd op de items in de tijdelijke tabel. Bovendien kunt u de kostendrempel voor parallellisme verhogen om het optimalisatieprogramma te dwingen het queryplan te serialiseren.

Bijvoorbeeld:

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

VERWIJDEREN UIT DB.dbo. [Tabel] WHERE Alias IN (SELECT * FROM #T)

Meer informatie

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.