Zusammenfassung
Dieses Update führt ein neues Abfragehinweis Argument ein, mitdem Sie den Abfrageoptimierer ohne erhöhte Anmeldeinformationen oder ohne Mitgliedschaft in der sysadmin-Serverrolle steuern können. Die Syntax dieses neuen Abfragehinweises sieht wie folgt aus:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Mit diesem Update werden auch die folgenden Hinweis Optionen eingeführt, die mit dem use Hint -Argument verwendet werden können.
Option |
Entsprechendes Ablaufverfolgungsflag |
Beschreibung |
Gilt für |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
Bewirkt, dass SQL Server einen Abfrageplan mithilfe der einfachen Eindämmungs Annahme anstelle der Standardannahme für Joins unter dem Abfrageoptimierer generiert Cardinality Estimation- Modell von SQL Server 2014 (12. x) oder höher |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Bewirkt, dass SQL Server einen Plan mit minimaler Selektivität beim schätzen und Prädikaten für Filter generiert, um Korrelationen zu berücksichtigen. Dieser Hinweis Name ist parallel zu Ablaufverfolgungsflag 4137 bei Verwendung mit dem Cardinality Estimate-Modell von SQL Server 2012 (11. x) und älteren Versionen und hat ähnliche Auswirkungen, wenn das Ablaufverfolgungsflag 9471 mit dem Kardinalitäts-Schätzmodell von SQL Server 2014 (12. x) oder höher verwendet wird. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Deaktiviert die adaptiven Joins im Batchmodus. |
ab SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Deaktiviert den Batchmodus-Feedback zur Speicherzuweisung. |
ab SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Deaktiviert die Tabellenvariable Verzögerte Kompilierung. |
ab SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Deaktiviert die Interleaved-Ausführung für Tabellenwertfunktionen mit mehreren Anweisungen. |
ab SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Weist den Abfrageprozessor an, bei der Generierung eines Abfrageplans keine Sortieroperation (Batch Sortierung) für optimierte verschachtelte Schleifen Verknüpfungen zu verwenden. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Bewirkt, dass SQL Server einen Plan generiert, der keine Änderungen an Zeilen Zielen für Abfragen verwendet, die diese Schlüsselwörter enthalten:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Weist den Abfrageoptimierer an, die durchschnittliche Datenverteilung beim Kompilieren einer Abfrage mit einem oder mehreren Parametern zu verwenden. Diese Anweisung macht den Abfrageplan unabhängig von dem Parameterwert, der zum ersten Mal bei der Kompilierung der Abfrage verwendet wurde. Verwenden Sie diesen Hinweis, um die Konfigurationseinstellung für den Datenbankbereich zu überschreiben PARAMETER_SNIFFING = aus. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Deaktiviert den Zeilenmodus, um das Feedback zum Speicherzugriff zu erhalten. |
ab SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Deaktiviert Skalar-UDF-Inlining. |
ab SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Deaktiviert die Ausführung des Batchmodus. |
ab SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Ermöglicht automatisch generierte Schnellstatistik (Histogramm-Änderung) für jede führende Indexspalte, für die eine Kardinalitäts Schätzung erforderlich ist. Das Histogramm, das zum Schätzen der Kardinalität verwendet wird, wird bei der Kompilierungszeit der Abfrage angepasst, damit der tatsächliche höchst-oder Mindestwert dieser Spalte berücksichtigt wird. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Aktiviert die Hotfixes für Abfrageoptimierer (Änderungen, die in kumulierten Updates und Service Packs von SQL Server veröffentlicht wurden). Verwenden Sie diesen Hinweis zum Überschreiben Konfigurations Einstellung für den Datenbankbereich QUERY_OPTIMIZER_HOTFIXES = ein. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Erzwingt die Verwendung des Abfrageoptimierers Bewertungs Modell für die Kardinalität, das dem aktuellen Datenbankkompatibilitätsgrad entspricht. Verwenden Sie diesen Hinweis zum Überschreiben Konfigurations Einstellung für den Datenbankbereich LEGACY_CARDINALITY_ESTIMATION = ein. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Erzwingt die Verwendung des Abfrageoptimierers Modell für die Kardinalitäts Schätzung von SQL Server 2012 (11. x) und früheren Versionen. Verwenden Sie diesen Hinweis, um die Konfigurationseinstellung für den Datenbankbereich zu überschreiben LEGACY_CARDINALITY_ESTIMATION = ein. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Erzwingt das Verhalten des Abfrageoptimierers auf Abfrageebene. Dieses Verhalten tritt auf, als ob die Abfrage mit dem Datenbankkompatibilitätsgrad kompiliert wurde. n, wobei n ein unterstützter Datenbank-Kompatibilitätsgrad ist. Weitere Informationen finden Sie untersys.dm_exec_valid_use_hints für eine Liste der aktuell unterstützten Werte für n. |
ab SQL Server 2017 (14. x) CU10 |
Weitere Informationen finden Sie unter Hints (Transact-SQL)-Query.
Weitere Informationen
Dieses Update ist in Service Pack 1 für SQL Server 2016 enthalten.
Jeder neue Build für SQL Server 2016 enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen Build enthalten waren. Wir empfehlen, den neuesten Build für SQL Server 2016 zuinstallieren.
Szenarien, in denen das Verhalten von SQL Server-Abfrageoptimierern (qo) angedeutet werden muss, sind relativ häufig, und Sie werden üblicherweise mithilfe mehrerer (dokumentierter und undokumentierter) Ablaufverfolgungsflags behandelt. Wenn Ablaufverfolgungsflags jedoch global gesetzt werden, wirken sich diese möglicherweise negativ auf andere Arbeitsauslastungen aus. Darüber hinaus ist die Aktivierung von Sitzungen pro Sitzung bei vorhandenen Anwendungen nicht praktikabel, und die Aktivierung der einzelnen Abfragen mit der Option QUERYTRACEON erfordert die Mitgliedschaft in der festen Serverrolle sysadmin. (Obwohl Sie dieses Verhalten mithilfe einer Planhinweisliste oder einer gespeicherten Prozedur umgehen können, sind erhöhte Anmeldeinformationen weiterhin erforderlich.) Ablaufverfolgungsflags werden verwendet, um bestimmte Server Merkmale temporär festzulegen oder um ein bestimmtes Verhalten zu deaktivieren, die möglicherweise schwierig zu verwalten und zu verstehen sind. Informationen zu Ablaufverfolgungsflags finden Sie im Thema Ablaufverfolgungsflags (Transact-SQL) auf der Website des Microsoft Developer Network (MSDN).
Informationsquellen
Erfahren Sie mehr über die Terminologie , mit der Microsoft Softwareupdates beschreibt.