Symptome
Die Kardinalitätsschätzungslogik, die als Kardinalitätsschätzer (Cardinality Estimator, CE) bezeichnet wird, wurde in SQL Server 2014 (Kompatibilitätsgrad 120) und SQL Server 2016 (Kompatibilitätsgrad 130) neu gestaltet, um die Qualität der Abfragepläne zu verbessern.
Wenn Sie jedoch eine komplexe Abfrage kompilieren, die viele Verknüpfungen mit einem DISTINCT- oder GROUP BY-Operator enthält, kann die Kompilierung wesentlich länger als erwartet dauern.
Lösung
Dieses Update zur Behebung dieses Problems ist im Service Pack 1 für SQL Server 2016 enthalten.
Hinweis Nach der Installation dieses Updates müssen Sie das Ablaufverfolgungsflag 4199 festlegen, um den Fix zu aktivieren. Informationen zum Festlegen von Ablaufverfolgungsflag 4199 finden Sie im Thema Ablaufverfolgungsflags (Transact-SQL) auf MSDN.
Informationen zu SQL Server 2016-Builds
Jeder neue Build für SQL Server 2016 enthält alle Hotfixes und Sicherheitsfixes, die im vorherigen Build enthalten waren. Wir empfehlen, den neuesten Build für SQL Server 2016 zu installieren.
Problemumgehung
Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:
- Verwenden Sie das Ablaufverfolgungsflag 9481, um das Modell zur Kardinalitätsschätzung des Abfrageoptimierers auf SQL Server 2012 oder eine frühere Version festzulegen.
- Ändern Sie den Kompatibilitätsgrad der Datenbank auf SQL Server 2012 (110) oder eine frühere Version.
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.