Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Inleiding

Versies van Microsoft SQL Server later dan SQL Server 2000 Service Pack 3 (SP3) leverden de meeste hotfixes in de query optimizer in een standaardtoestand om te voorkomen dat bestaande productieklanten verwachte planwijzigingen zien die prestatieregressies kunnen veroorzaken. In eerste instantie werd elke hotfix geleverd onder een afzonderlijke trace flag. Later is deze praktijk gewijzigd, zodat de meeste vlaggen werden gecombineerd onder één trace flag (4199). Deze nieuwe praktijk is gestart in meerdere versies, te beginnen met de volgende updates:

  • SQL Server 2005 Service Pack 3 (SP3) Cumulatieve update 6

  • SQL Server 2008 Service Pack 1 (SP1) Cumulatief updatepakket 7

  • SQL Server 2008 R2 (RTM)

Trace flag 4199 is gebruikt voor het verzamelen van hotfixes die standaard in een toekomstige release moeten worden gebruikt, terwijl andere trace flags werden gebruikt voor situaties waarin een fix niet bedoeld was om standaard in huidige vorm te worden. Vanaf SQL Server 2016 RTM wordt de instelling voor database-COMPATIBILITY_LEVEL gebruikt om trace flag 4199-gerelateerde hotfixes standaard in te stellen. In dit artikel worden de mechanica en het beleid beschreven van de manier waarop hotfixes die van plan zijn, worden geleverd voor SQL Server 2016 en latere versies.

Meer informatie

In SQL Server 2016 worden trace flag 4199 hotfixes die zijn gemaakt naar eerdere versies van SQL Server ingeschakeld onder database COMPATIBILITY_LEVEL 130 zonder trace flag 4199 ingeschakeld. Trace flag 4199 wordt gebruikt voor het vrijgeven van toekomstige SQL Server 2016 hotfixes voor databases met behulp van het compatibiliteitsniveau 130. Omdat trace flag 4199 alleen wordt aanbevolen voor klanten die specifieke prestatieproblemen zien, wordt klanten aangeraden trace flag 4199 te verwijderen nadat ze hun databases naar het meest recente compatibiliteitsniveau hebben gemigreerd, omdat trace flag 4199 opnieuw wordt gebruikt voor toekomstige oplossingen die mogelijk niet van toepassing zijn op uw toepassing en onverwachte prestatiewijzigingen in een productiesysteem kunnen veroorzaken. Dit betekent dat verschillende trace flag 4199 hotfixes zijn ingeschakeld voor elk compatibiliteitsniveau dat wordt ondersteund in een bepaalde productre release. Het meest recente compatibiliteitsniveau maakt al alle eerdere oplossingen mogelijk onder trace flag 4199. Dit betekent dat een upgrade van een database naar het meest recente compatibiliteitsniveau en het verwijderen van trace flag 4199 nog steeds alle oplossingen mogelijk maakt die een werkbelasting heeft gebruikt vóór de upgrade van de database, maar niet voor nieuwe oplossingen. Als klanten op een later moment problemen hebben met de prestaties van query's, experimenteert u met het inschakelen van de optie QUERY_OPTIMIZER_HOTFIXES QUERY_OPTIMIZER_HOTFIXES queryhint ENABLE_QUERY_OPTIMIZER_HOTFIXES in een testomgeving om te bepalen of de problemen zijn opgelost. Raadpleeg de documentatie overQUERY_OPTIMIZER_HOTFIXES. 

Opmerking Databases die zijn gemaakt in SQL Server 2016 gebruiken standaard compatibiliteitsniveau 130 en hebben nieuwe optimalisatielogica al ingeschakeld.

Het belangrijkste voordeel van dit model is dat het risico voor productiesystemen tijdens het upgradeproces wordt verkleind. Met deze methode wordt de installatie van een nieuwe hoofdversie van SQL Server gescheiden van het automatisch inschakelen van alle nieuwe wijzigingen in de queryprocessor. Omdat belangrijke versie-upgrades de bestandsindeling wijzigen en niet omkeerbaar zijn, is het een goed idee om de COMPATIBILITY_LEVEL-instelling te gebruiken, omdat een klant hierdoor snel kan downgraden als er een onverwacht prestatieprobleem van het plan wordt gevonden tijdens een upgrade. Als een klant een onverwachte wijziging van het plan vindt die een toepassingsupgrade blokkeert, kan de klant de situatie verlichten door een passende planhint toe te passen met behulp van de Query store om het vorige abonnement af te dwingen, of kan de situatie verlichten door contact op te nemen met Microsoft Customer Support om te helpen bij het probleem om een tijdelijke oplossing of hotfix te bieden. Wanneer alle problemen worden verminderd, kan de upgrade doorgaan. Klanten moeten deze mogelijkheid integreren in hun upgradeplanning voor SQL Server 2016.

In de volgende tabel wordt uitgelegd hoe trace flag 4199 werkt vanaf SQL Server 2016.

Instelling

SQL compatibiliteitsniveau

Trace flag 4199

Optimizer hotfixes before SQL Server 2016 RTM

Optimizer hotfixes after SQL Server 2016 RTM

1.

120

Uit

Uitgeschakeld

Uitgeschakeld

2.

120

Aan

Ingeschakeld

Uitgeschakeld

3.

130

Uit

Ingeschakeld op compatibiliteitsniveau

Uitgeschakeld

4.

130

Aan

Ingeschakeld op compatibiliteitsniveau

Ingeschakeld op compatibiliteitsniveau

Opmerking Instelling nee. 3 wordt aanbevolen voor klanten die een nieuwe upgrade uitvoeren naar SQL Server 2016.

Voor belangrijke releases na SQL Server 2016 is Microsoft van plan dit servicemodel te blijven gebruiken voor het optimaliseren van hotfixes. Standaard, of elke release, worden eventuele trace flag 4199 hotfixes uit de vorige release ingeschakeld in het volgende compatibiliteitsniveau. Dit betekent dat de aanbevolen status voor klanten nadat ze naar het meest recente compatibiliteitsniveau zijn gemigreerd, is dat trace flag 4199 is uitgeschakeld. Latere hotfixes zouden trace flag 4199 gebruiken om fixes in te stellen voor klanten die deze specifieke hotfixes in een toepassing moeten inschakelen. Klanten wordt aangeraden trace flag 4199 uit te schakelen nadat een toepassing is bijgewerkt naar het meest recente compatibiliteitsniveau om te voorkomen dat onverwachte toekomstige optimalisatiewijzigingen in een toepassing onverwacht worden ingeschakeld. Met deze upgrade naar het meest recente compatibiliteitsniveau en het verwijderen van trace flag 4199 kunnen nog steeds alle oplossingen worden uitgevoerd die een werkbelasting vóór de upgrade heeft uitgevoerd, maar niet nieuwe oplossingen.

Opmerking Hoewel veel optimizer hotfixes zijn ingeschakeld onder trace flag 4199, gebruiken sommige andere trace flags. Trace flag 4199 historisch bedekte trace flags die algemeen van toepassing zijn en waarschijnlijk standaard worden ingeschakeld in een toekomstige release. Alternatieve trace flags worden gebruikt in hotfixes waarbij de voorwaarden zeer specifiek zijn voor slechts een paar klanten, waarbij de oplossing kan leiden tot prestatieregressies in andere soorten toepassingen of waar de interne functionaliteit wijzigingen kan zien voordat deze voor iedereen kan worden ingeschakeld. Microsoft blijft zo nodig andere trace flags gebruiken om het product te kunnen servicen.

Opmerking In dit artikel wordt aandacht besteedt aan het model voor het vrijgeven van trace flag 4199 hotfixes op het meest recente compatibiliteitsniveau van het meest recente product. (Op publicatietijd is dit SQL Server 2016.) Optimizer-hotfixes kunnen worden uitgebracht in oudere in-market versies van SQL Server of op lagere compatibiliteitsniveaus (120 of eerder) van SQL Server 2016. Microsoft evalueert elk geval en bepaalt of u trace flag 4199 of een andere trace flag wilt gebruiken. Omdat niet-hotfix-wijzigingen ook zijn ingeschakeld wanneer een overgang naar een later compatibiliteitsniveau wordt uitgevoerd, is er geen specifieke belofte dat er tijdens een upgrade geen planwijzigingen zullen plaatsvinden (met of zonder trace flag 4199). Klanten moeten wijzigingen in het compatibiliteitsniveau altijd zorgvuldig testen voor productietoepassingen en gebruikmaken van mitigatietechnologieën, zoals de Querystore, als er een probleem is met de planningskeuze.

Ter referentie zijn de volgende trace flags gebruikt voor queryprocessor hotfixes vóór de introductie van trace flag 4199:

4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.

SQL Server 2012 en nieuwere versies

Trace flag 4199 is opgenomen in de releaseversies van SQL Server 2012 en nieuwere versies.

Trace flag 4199 inschakelen

U kunt trace flag 4199 inschakelen bij het opstarten of in een gebruikerssessie. Deze trace flag heeft een effect op globaal niveau of sessieniveau. Als u trace flag 4199 wilt inschakelen, gebruikt u de opdracht DBCC TRACEON of gebruikt u –T 4199 als opstartparameter.

Als DBCC TRACEON\TRACEOFF wordt gebruikt, wordt er geen nieuw cacheplan voor opgeslagen procedures opnieuw gemaakt. Plannen kunnen zich in de cache hebben geplaatst die zijn gemaakt zonder de trace flag.

Zie de volgende onderwerpen in SQL Server Books Online voor meer informatie over het in- of uitschakelen van trace flags en voor uitleg over globale en sessieniveau trace flags:

Verwijzingen

Voor meer informatie over het naamgevingsschema voor SQL Server updates, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:

822499
Nieuw naamgevingsschema voor Microsoft SQL Server software-updatepakketten
Klik op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken voor meer informatie over de terminologie voor software-updates:

824684
Beschrijving van de standaardterminologie die wordt gebruikt om Microsoft-software-updates te beschrijven

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×