Zeitüberschreitung bei SQL-Abfragen oder langsame Konsole bei bestimmten Configuration Manager Datenbankabfragen

Dieser Artikel hilft Ihnen bei der Behebung eines Problems, bei dem die Configuration Manager-Konsole langsam ist oder bei bestimmten Configuration Manager Datenbankabfragen ein Zeitüberschreitung der SQL-Abfrage aufgetreten ist.

Ursprüngliche Produktversion: SQL Server 2022 unter Windows (alle Editionen), SQL Server 2019 unter Windows (alle Editionen), SQL Server 2017 unter Windows (alle Editionen), SQL Server 2016 Enterprise, SQL Server 2016 Standard, SQL Server 2014 Enterprise, SQL Server 2014 Standard, System Center Configuration Manager
Ursprüngliche KB-Nummer: 3196320

Symptome

In Umgebungen, in denen unter Windows SQL Server 2014, SQL Server 2016 oder SQL Server 2017 ausgeführt wird, treten langsame Configuration Manager konsolenleistung oder ungewöhnliche SQL-Abfragetimeouts für bestimmte Configuration Manager Datenbankabfragen auf.

Ursache

SQL Server Änderungen der Kardinalitätsschätzung (Kardinalitätsschätzung) in SQL Server 2014, SQL Server 2016 und SQL Server 2017 unter Windows können in einigen Umgebungen Leistungsprobleme bei bestimmten Configuration Manager Abfragen verursachen.

Lösung

In betroffenen Umgebungen können Configuration Manager besser ausgeführt werden, wenn die Standortdatenbank mit einem anderen SQL Server CE-Kompatibilitätsgrad konfiguriert ist. Informationen zum Ermitteln der empfohlenen CE-Ebene für Ihre Version von SQL Server finden Sie in der folgenden Tabelle:

SQL Server Version Unterstützte Werte des Kompatibilitätsgrads Empfohlener Kompatibilitätsgrad für Configuration Manager Empfohlene Stufe für bestimmte Leistungsprobleme
SQL Server 2022 150, 140, 130, 120, 110 150 110
SQL Server 2019 150, 140, 130, 120, 110 150 110
SQL Server 2017 140, 130, 120, 110 140 110
SQL Server 2016 130, 120, 110 130 110
SQL Server 2014 120, 110 110 110

Ab Configuration Manager Current Branch-Version 1810 fügen alle Abfragen, die von der Admin-Konsole und dem SMS-Anbieter ausgegeben werden, automatisch den Abfragehinweis hinzuUSE HINT 'FORCE_LEGACY_CARDINALITY_ESTIMATION', wenn die Configuration Manager-Datenbank unter SQL Server 2016 SP1 oder höher ausgeführt wird. Daher hat Admin Konsolenleistung keine Auswirkungen, wenn Sie den CE-Kompatibilitätsgrad auf Datenbankebene auf 110 ändern, um Leistungsprobleme zu beheben. Wenn Sie dieses Verhalten außer Kraft setzen möchten, legen Sie den Wert unter dem folgenden Registrierungsunterschlüssel auf dem Computer, auf dem der SMS-Anbieter gehostet wird, unter dem folgenden Registrierungsunterschlüssel auf 0 festUseLegacyCardinality, damit die Abfragen der Admin-Konsole und sms-Anbieter stattdessen die aktuelle SQL Server CE-Ebene verwenden:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Providers

Führen Sie die folgende Abfrage aus, um zu ermitteln, welcher SQL Server CE-Kompatibilitätsgrad für die Configuration Manager-Datenbank verwendet wird:

SELECT name, compatibility_level FROM sys.databases

Identifizieren Sie SQL Server 2014 und SQL Server 2016 RTM, um zu ermitteln, ob die Verwendung von SQL Server 2012 CE (110) Configuration Manager Abfrageleistung verbessern kann, identifizieren Sie eine Abfrage, die langsam ausgeführt wird, und testen Sie ihre Leistung manuell auf dem SQL Server 2012 CE-Kompatibilitätsgrad. Führen Sie dazu die Abfrage in SQL Server Management Studio mit option (querytraceon 9481) aus, und vergleichen Sie die Ausführungszeit mit ihrer Leistung ohne das Flag.

Fügen Sie ab SQL Server 2016 SP1 den Abfragehinweis hinzu, um dies auf Abfrageebene zu erreichen, anstatt das USE HINT 'FORCE_LEGACY_CARDINALITY_ESTIMATION' Ablaufverfolgungsflag 9481 zu verwenden.

Weitere Informationen zur Verwendung mit querytraceon dem Ablaufverfolgungsflag 9481 auf spezifischer Abfrageebene finden Sie unter Hinweise (Transact-SQL) – Abfrage. Informationen zur Verwendung von SQL Server Profiler zum Identifizieren langsamer Abfragen finden Sie unter SQL Server Profiler.

Sehen Sie sich das folgende Beispiel für einen Testlauf mit spezifischen Abfragen auf SQL Server 2012 CE-Ebene im Vergleich zu SQL Server 2014 an:

select SMS_DeploymentSummary.ApplicationName,SMS_DeploymentSummary.AssignmentID,SMS_DeploymentSummary.CI_ID,SMS_DeploymentSummary.CollectionID,SMS_DeploymentSummary.CollectionName,SMS_DeploymentSummary.CreationTime,SMS_DeploymentSummary.DeploymentID,SMS_DeploymentSummary.DeploymentIntent,SMS_DeploymentSummary.DeploymentTime,SMS_DeploymentSummary.DesiredConfigType,SMS_DeploymentSummary.EnforcementDeadline,SMS_DeploymentSummary.FeatureType,SMS_DeploymentSummary.ModelName,SMS_DeploymentSummary.ModificationTime,SMS_DeploymentSummary.NumberErrors,SMS_DeploymentSummary.NumberInProgress,SMS_DeploymentSummary.NumberOther,SMS_DeploymentSummary.NumberSuccess,SMS_DeploymentSummary.NumberTargeted,SMS_DeploymentSummary.NumberUnknown,SMS_DeploymentSummary.ObjectTypeID,SMS_DeploymentSummary.PackageID,SMS_DeploymentSummary.PolicyModelID,SMS_DeploymentSummary.ProgramName,SMS_DeploymentSummary.SecuredObjectId,SMS_DeploymentSummary.SoftwareName,SMS_DeploymentSummary.SummarizationTime,SMS_DeploymentSummary.SummaryType from fn_DeploymentSummary(1033) AS SMS_DeploymentSummary where SMS_DeploymentSummary.DeploymentID = N'CS100012' option (querytraceon 9481)

Hinweis

Die obige Abfrage und die bereitstellungs-ID CS100012 dienen nur zu Demonstrationszwecken und variieren je nach Umgebung.

Wenn der obige Test angibt, dass Leistungssteigerungen erzielt werden können, verwenden Sie den folgenden Befehl in SQL Server Management Studio, um die Configuration Manager Datenbank auf den Kompatibilitätsgrad SQL Server 2012 CE festzulegen:

ALTER DATABASE <CM_DB>
SET COMPATIBILITY_LEVEL = 110;
GO

Hinweis

Ersetzen Sie <im obigen Beispiel CM_DB> durch den Namen Ihrer Configuration Manager Standortdatenbank. Um den CE-Kompatibilitätsgrad in eine andere Ebene zu ändern, ändern Sie den Wert in SET COMPATIBILITY_LEVEL.

Weitere Informationen

Wenn ein SQL Server instance von einer früheren Version von SQL Server lokal aktualisiert wird, behalten bereits vorhandene Datenbanken ihren vorhandenen Kompatibilitätsgrad bei, wenn sie den minimal zulässigen Grad für diese neue Version von SQL Server aufweisen. Beim Upgrade SQL Server mit einer Datenbank mit einem niedrigeren Kompatibilitätsgrad als der zulässigen Ebene wird die Datenbank automatisch auf den niedrigsten Kompatibilitätsgrad festgelegt, der von der neuen Version von SQL Server zulässig ist.

Bei Upgrades oder Neuinstallationen von Configuration Manager können Datenbanken automatisch so konfiguriert werden, dass sie die empfohlene SQL Server CE-Kompatibilitätsversion für diese Version von SQL Server verwenden (wie in der im Abschnitt "Lösung" erwähnten Tabelle). Wenn nach einem Wartungsupdate eine Leistungsbeeinträchtigung auftritt, weil sie auf die empfohlene Standard-CE-Ebene für Ihre Version von SQL Server zurückgesetzt wurde, prüft neu, ob Sie die CE-Ebene möglicherweise manuell zurück auf 110 ändern müssen.

Weitere Informationen zu SQL Server CE-Kompatibilitätsgraden finden Sie unter ALTER DATABASE (Transact-SQL)-Kompatibilitätsgrad.