Ich wollte gerade mein ConfigMgr Server in meiner Laborumgebung von Version 2107 auf Version 2111 aktualisieren. 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 Aktualisierungsassistent vom ConfigMgr 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 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 SQL CMD-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:
Nachdem 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 Update-Voraussetzung ausgelöst.
Wie bereinigen wir nun alte Änderungsverfolgungsdaten?
Wenn der Auto Clean Up Task alte Änderungsverfolgungsdaten nicht bereinigt, können wir diese Daten 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 CM Update-Vorausnutzungsprü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 steht. 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. Dass 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 CM Update 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.