Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, das Problem zu beheben, das beim Upgrade der Datenbankkompatibilitätsstufe von 120 auf 130 auftritt.
Ursprüngliche Produktversion: SQL Server 2016, SQL Server 2017 unter Windows (alle Editionen)
Ursprüngliche KB-Nummer: 3212023
Zusammenfassung
Nehmen Sie das folgende Szenario als Beispiel:
- Sie führen eine räumliche Abfrage mithilfe eines Filters mit einer Funktion wie
STIntersects
sql Server 2016 oder in SQL Server 2017 unter Windows aus. - Die Kompatibilitätsebene der Datenbank ist 120.
- Die Abfrage verwendet einen parallelen Ausführungsplan.
- Sie aktualisieren die Datenbankkompatibilitätsstufe auf 130, und der Ausführungsplan wurde von parallel zu serial geändert.
In diesem Szenario treten Leistungsbeeinträchtigungen auf, wenn die Abfrage ein großes Resultset zurückgibt.
Lösung
Um dieses Problem zu beheben, probieren Sie eine der folgenden Methoden aus:
Setzen Sie die Kompatibilitätsstufe der Datenbank auf 120 zurück. In diesem Fall können Sie nicht von einigen der Funktionen profitieren, die in SQL Server 2016 oder in SQL Server 2017 unter Windows unter Datenbankkompatibilitätsebene 130 verfügbar sind. Sie können jedoch weiterhin viele Verbesserungen realisieren, die nicht an die Kompatibilitätsstufe der Datenbank gebunden sind, z. B. eine allgemeine Leistungsverbesserung von Abfragevorgängen mit räumlichen Datentypen.
Eine Liste der SQL Server 2016-Verbesserungen, die Die Datenbankkompatibilitätsebene 130 erfordern, finden Sie unter ALTER DATABASE (Transact-SQL) Compatibility Level.
Erzwingen Sie den Plan, der mit Der Datenbankkompatibilitätsebene 120 generiert wird, wenn er eine bessere Leistung bietet. Sie können diesen Plan erzwingen, während sie mit der Datenbankkompatibilitätsebene 130 ausgeführt wird, indem Sie den
USE PLAN
Abfragehinweis verwenden. Weitere Informationen zur Verwendung von Hinweisen finden Sie unter Hinweise (Transact-SQL) – Abfrage.Alternativ können Sie Abfragespeicher verwenden, um bestimmte Planoptionen zu identifizieren und zu beheben. Weitere Informationen zur Verwendung von Abfragespeicher zu diesem Zweck finden Sie unter Abfragespeicher Nutzungsszenarien.
Weitere Informationen
Sql Server-Datenbankkompatibilitätsebenen 120 und 130 verwenden verschiedene Ansätze zum Schätzen der Kardinalität von Prädikaten, wobei eine skalare benutzerdefinierte Funktion oder eine bestimmte T-SQL-Funktion (z. B. STIntersects) mit einer Konstante verglichen wird.
Obwohl das kostenmodell, das von der Datenbankkompatibilitätsebene 130 verwendet wird, leistungssteigerungen für viele Workloads im Vergleich zu Ebene 120 generiert, kann die Leistung einiger Abfragen (abhängig von den verwendeten Daten und Funktionen) der Abfragepläne tatsächlich auf Ebene 130 sinken.
Gilt für:
- SQL Server 2017 unter Windows (alle Editionen)
- SQL Server 2016 Service Pack 1
- SQL Server 2016 Developer
- SQL Server 2016 Enterprise
- SQL Server 2016 Express
- SQL Server 2016 Standard
- SQL Server 2016 Web