Kategorien
backlog Blogpost CMUPDATE ConfigMgr database Prerequisite Check failed SCCM SQL

Probleme mit ConfigMgr Update 2111

Ich wollte gerade mein ConfigMgr Server in meiner Laborumgebung von Version 2107 auf Version 2111 update. Aber leider kam schon beim Prerequisite Check folgende Fehlermeldung: „The site database has a backlog of SQL change tracking data“.

Die gleiche Warnung ist in ConfigMgrPreReq.log zu sehen.

Was bedeutet diese Warnung?

Ab ConfigMgr 1810 führt der konsoleninterne Aktualisierungsassistent nun eine Prüfung durch, um festzustellen, ob die Standortdatenbank einen Rückstand bei den SQL-Änderungsverfolgungsdaten aufweist.

In Zeiten der Replikation oder umfangreichen Datenverarbeitung kann der älteste Wert in der Tabelle syscommittab über fünf Tage alt sein (CM-Standardwert ist fünf Tage). Microsoft empfiehlt, dass Sie alle Change Tracking-Daten, die älter als sieben Tage sind, bereinigen.

Um die Prereq-Warnung zu überprüfen, können wir eine Verbindung zu unserer SQL-Datenbank mit einer Dedicated Administrator Connection (DAC) herstellen, indem wir SQL Server Management Studio (SSMS) oder die SQLCMD-Befehlszeile verwenden.

Im folgenden Beispiel werden wir SSMS verwenden, um das Datum unserer Änderungsverfolgungsdaten zu überprüfen.

Herstellen einer Dedicated Access-Connection (DAC) zu SQL über SSMS

Führe die folgenden Schritte aus, um ein DAC zu erstellen:

Verbinde dich über SSMS mit der ConfigMgr-Datenbank-Engine.

Create a new Database Engine Query

Ändere die Verbindungsdaten und schreibe vor dem Servername das Präfix ADMIN:

Nach dem du auf Connect geklickt hast, solltest du in der Statusleiste von SSMS folgendes sehen:

Dann ist dir eine DAC mit SSMS gelungen.

Führe nun im Abfragefenster folgende Abfrage aus:

1
2
USE <ConfigMgr database name>
EXEC spDiagChangeTracking

Bei mir sieht das so aus, und bei dir sollte es ähnlich aussehen:

Danach klickst du in der Menüleiste auf Excute oder Ausführen.

Die Stored Procedure wird ausgeführt, und liefert ein ähnliches Ergebnis zurück wie bei mir. CT_DAYS_OLD-Wert 21

Die ältesten Change-Tracking-Daten in der syscommittab-Tabelle für ConfigMgr sollten fünf Tage betragen, und Microsoft empfiehlt, Daten zu bereinigen, die älter als sieben Tage sind. Mit 21 Tagen ist man etwas über das Ziel hinausgeschossen und hat die Warnung für die ConfigMgr-Updatevoraussetzung ausgelöst.

Wie bereinigen wir nun alte Änderungsverfolgungsdaten?

Wenn die Auto-Cleanup-Task alte Änderungsverfolgungsdaten nicht bereinigt, können wir sie mit einer anderen stored procedure bereinigen.

EXEC spDiagChangeTracking @CleanupChangeTracking = 1

Prerequisite checks – Configuration Manager | Microsoft Docs

An dieser Stelle würde ich erwarten, dass der CT_Days_Old-Wert sinkt. Wenn das bei deiner Umgebung der Fall ist, führen die CMUpdate-Voraussetzungsprüfung erneut durch und freuen dich über die grünen Häkchen. Ende…..

Wenn nicht, dann geht es jetzt ans eingemachte.

Ich verwende folgende Query, um festzustellen, ob die Änderungsverfolgung in meiner Datenbank aktiviert ist, ob die automatische Bereinigung aktiviert ist und wie lange die Aufbewahrungsfrist für die Änderungsverfolgung ist.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

  • GO
  • SELECT
  • db.name AS change_tracking_db,
  • is_auto_cleanup_on,
  • retention_period,
  • retention_period_units_desc
  • FROM sys.change_tracking_databases ct
  • JOIN sys.databases db on
  • ct.database_id=db.database_id;
  • GO

Stell sich heraus, dass auto_cleanup_on auf 1 staeht. Was bedeutet, dass es aktiviert ist. Allerdings steht die retention_period auf 5 DAYS. Damit das Autocleanup also funktionieren kann, muss meine Lab-Umgebung fünf Tage an sein. Das meine Lab-Umgebung auf meinem Laptop läuft, ist die nie fünf Tage am Stück an. Also, was nun?

Eine weiter Query kommt da zum Einsatz. Diese stellt mir die RETENTION auf eine Stunde.

1
2
ALTER DATABASE CM_PS1
SET CHANGE_TRACKING (CHANGE_RETENTION = 1 Hours)

WEnn wir jetzt noch mal nachschauen, dann sehen wir das sich die RETENTION nun auf eine Stunde umgestellt hat.

Jetzt nur noch eine Stunde warten, dann sollte sich alles Bereinigt haben. Danach einfach wieder die RETENTION auf fünf Tage umstellen, und das CMUpdate kann durchgeführt werden.

1
2
ALTER DATABASE CM_PS1
SET CHANGE_TRACKING (CHANGE_RETENTION = 5 days)

Ich hoffe es hilft euch weiter. Bei mir hat es geholfen. Viel Spaß damit.