Resumé
Denne opdatering introducerer et nyt argument for forespørgselstip, USE HINT, som gør det muligt at køre forespørgselsoptimering uden administratorrettigheder eller uden at være medlem af sysadmin-serverrollen. Syntaksen for dette nye tip til forespørgsel ser således ud:
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Denne opdatering introducerer også følgende tipindstillinger, der kan bruges sammen med argumentet USE HINT.
| Indstilling | Tilsvarende sporingsflag | Beskrivelse | Gælder for |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Får SQL Server til at generere en forespørgselsplan ved hjælp af Simple Containment-antagelsen i stedet for standardantagelsen om Base Containment for joinforbindelser under forespørgselsoptimeringens kardinalitetsestimationsmodel i SQL Server 2014 (12.x) eller nyere. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Får SQL Server til at generere en plan ved hjælp af minimal selektivitet ved estimering af AND-prædikater for filtre for at tage højde for korrelation. Tipnavnet er parallelt med sporingsflag 4137, når det bruges med modellen til estimering af kardinalitet i SQL Server 2012 (11.x) og tidligere versioner, og har lignende effekt, når sporingsflag 9471 bruges med modellen til estimering af kardinalitet i SQL Server 2014 (12.x) eller nyere. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Deaktiverer tilpassede deltagelser i batchtilstand. | start i SQL Server 2017 | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Deaktiverer batchtilstandens hukommelse og giver feedback. | start i SQL Server 2017 | |
| DISABLE_DEFERRED_COMPILATION_TV | Deaktiverer udskudt kompilering af tabelvariabel. | start i SQL Server 2019 | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Deaktiverer interleavet udførelse for funktioner med flere sætninger med tabelværdier. | start i SQL Server 2017 | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Instruerer forespørgselsprocessoren om ikke at bruge en sorteringshandling (batchsortering) til optimerede indlejrede sløjfejoinforbindelser, når der oprettes en forespørgselsplan. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Får SQL Server til at generere en plan, der ikke bruger ændringer af rækkemål med forespørgsler, der indeholder disse nøgleord:
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Instruerer forespørgselsoptimering til at bruge gennemsnitlig datafordeling under kompilering af en forespørgsel med en eller flere parametre. Denne instruktion gør forespørgselsplanen uafhængig af den parameterværdi, der først blev brugt, da forespørgslen blev kompileret. Brug dette tip til at tilsidesætte indstillingen for konfiguration med databaseomfang PARAMETER_SNIFFING=FRA. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Deaktiverer rækketilstandens hukommelse, og giv feedback. | start i SQL Server 2019 | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Deaktiverer skalar-UDF-indlejring. | start i SQL Server 2019 | |
| DISALLOW_BATCH_MODE | Deaktiverer kørsel af batchtilstand. | start i SQL Server 2019 | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Aktiverer automatisk genereret hurtig statistik (histogramændring) for alle foranstillede indekskolonner, for hvilke der kræves en estimering af kardinalitet. Det histogram, der bruges til at estimere kardinalitet, justeres på kompileringstidspunktet for forespørgslen for at tage højde for den faktiske maksimums- eller minimumsværdi for denne kolonne. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Aktiverer hotfixes til forespørgselsoptimering (ændringer, der er frigivet i SQL Server Cumulative Opdateringer og Service Packs). Brug dette tip til at tilsidesætte indstillingen for konfiguration af databaseområde QUERY_OPTIMIZER_HOTFIXES=ON. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Tvinger forespørgselsoptimering til at bruge en model til estimering af kardinalitet, som svarer til det aktuelle databasekompatibilitetsniveau. Brug dette tip til at tilsidesætte indstillingen Konfiguration med databaseomfang LEGACY_CARDINALITY_ESTIMATION=ON. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Tvinger forespørgselsoptimering til at bruge modellen til estimering af kardinalitet i SQL Server 2012 (11.x) og tidligere versioner. Brug dette tip til at tilsidesætte indstillingen Konfiguration med databaseomfang LEGACY_CARDINALITY_ESTIMATION=ON. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Gennemtvinger funktionsmåden for forespørgselsoptimering på forespørgselsniveau. Denne funktionsmåde sker, som om forespørgslen blev kompileret med databasekompatibilitetsniveau n, hvor n er et understøttet databasekompatibilitetsniveau. Se sys.dm_exec_valid_use_hints for en liste over aktuelt understøttede værdier for n. | start i SQL Server 2017 (14.x) CU10 |
Du kan finde flere oplysninger i Tip (Transact-SQL) - Query.
Flere oplysninger
Denne opdatering er inkluderet i Service Pack 1 til SQL Server 2016.
Om SQL Server 2016-builds
Hvert nyt build til SQL Server 2016 indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med det tidligere build. Vi anbefaler, at du installerer det nyeste build til SQL Server 2016.
Scenarier, hvor funktionsmåden for SQL Server forespørgselsoptimering (QO) skal antydes, er ret almindelige, og traditionelt håndteres de ved hjælp af flere (dokumenterede og udokumenterede) sporingsflag. Når sporingsflag angives globalt, kan de dog have en negativ effekt på andre arbejdsbelastninger. Desuden er det ikke praktisk at aktivere dem pr. session med eksisterende programmer, og aktivering af dem pr. forespørgsel med OPTION QUERYTRACEON kræver medlemskab af sysadmin-rollen med fast serverrolle. Selvom du kan løse problemet ved hjælp af en vejledning til plan eller en gemt procedure, kræves der stadig øgede legitimationsoplysninger.
Sporingsflag bruges til midlertidigt at angive bestemte serveregenskaber eller til at slå en bestemt funktionsmåde fra. De kan være svære at administrere og forstå.
Se emnet Trace Flags (Transact-SQL) på webstedet MSDN (Microsoft Developer Network) (MSDN) for at få flere oplysninger om sporingsflag.
Referencer
Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.