Migration von Citrix Datenbanken

Mit der neuesten Citrix Virtual Apps & Desktops (CVAD) LTSR Version wurden ältere SQL-Server-Versionen abgekündigt. Wer seine Umgebung stabil und supportfähig halten möchte, kommt um eine Migration der Citrix-Datenbanken (Site, Logging, Monitoring) auf moderne SQL-Server (2019/2022) nicht herum. Ob Cluster, Always On oder Spiegelung – das Vorgehen bleibt im Kern gleich. In diesem Beitrag zeige ich Schritt für Schritt, wie die Migration sicher gelingt.

1. Voraussetzungen

  • Vollständige Backups aller Citrix-Datenbanken
  • Backups/VM-Snapshots der Delivery Controller (DDCs)
  • Neuer SQL Server (Cluster, Always On oder Mirror)
  • Gleiche SQL-Version auf Principal und Mirror

1.1 Backups erstellen

Bevor du mit der Migration beginnst, steht das Wichtigste an erster Stelle: saubere, verifizierte Backups.
Klingt banal, aber wer einmal eine Citrix-Site ohne funktionierendes Backup wiederherstellen musste, weiß, warum dieser Schritt entscheidend ist.

Erstelle vollständige Datenbank-Backups aller Citrix-Datenbanken:

  • Monitoring-Datenbank (z. B. CitrixMonitoring)
  • Site-Datenbank (z. B. CitrixSite)
  • Logging-Datenbank (z. B. CitrixLogging)

1.1.1 Schritt-für-Schritt in SSMS (GUI)

  • SQL Server Management Studio (SSMS) starten und am Quell-SQL verbinden (Windows/SQL-Auth)
  • Im Objekt-Explorer die erste DB auswählen (z. B. CitrixLogging)
  • Rechtsklick auf die DB → TasksBackup…
  • Backup type auf Full stellen
  • Unter Destination ggf. Einträge entfernen, dann Add… → Datei wählen, z. B. D:\Backups\CitrixLogging_Full_YYYYMMDDHHmm.bak
  • Reiter Media Options
    • Verify backup when finished (Backup nach Abschluss prüfen)
    • Perform checksum before writing to media (falls verfügbar)
  • Reiter Backup Options
    • Compress backup (kleinere, schnellere Backups)
  • OK klicken → Erfolgsmeldung abwarten
  • Das Ganze für Site-DB und Monitoring-DB wiederholen (CitrixSite, CitrixMonitoring o. ä.)
  • Transaktionsprotokoll-Backups erstellen (Recovery Model Full!):
    • Wieder Tasks → Backup…, Backup type = Transaction Log, Ziel: *.trn
    • Optional: mehrere Log-Backups bis zum Migrationszeitpunkt sichern
  • Backupdateien auf eine Freigabe kopieren, die der neue SQL-Server lesen kann

1.1.2 T-SQL Alternative

2. Datenbank-Wiederherstellung

Nach dem Backup folgt der eigentliche Migrationsschritt: das Wiederherstellen (Restore) der Citrix-Datenbanken auf dem neuen SQL-Server.
Dabei spielt es keine Rolle, ob du eine Standalone-Instanz, einen Cluster oder Always On verwendest – das Vorgehen bleibt im Kern gleich.

2.1.1 Restore auf neuem Principal (GUI)

  • Am neuen SQL-Server in SSMS verbinden
  • Objekt-Explorer: Rechtsklick DatabasesRestore Database…
  • Source = DeviceAdd… → Full-Backup *.bak wählen
    • Destination prüfen (DB-Name unverändert lassen)
  • Reiter Files: Pfade ggf. an neue Laufwerke anpassen
  • Reiter Options:
    • RESTORE WITH RECOVERY (Standard)
    • „Overwrite the existing database“ nur wenn wirklich nötig
  • OK → Erfolgsmeldung. Danach ggf. das letzte Log-Backup einspielen (nur wenn du bis T-Zeitpunkt gehen willst)

2.1.2 Restore per T-SQL

2.2 Logins & Berechtigungen

Nach dem Restore müssen die Delivery Controller (DDC)-Maschinenkonten wieder Zugriff auf die neuen Datenbanken bekommen.
Da SQL-Server-Logins serverweit sind, werden sie beim Backup/Restore nicht mitkopiert – du musst sie also manuell anlegen.

Anschließend in jeder Citrix-Datenbank (Site, Logging, Monitoring) die passenden Rollen vergeben:

2.3 Optional: Seeding für Always On / Spiegelung

Wer seine Citrix-Datenbanken hochverfügbar betreiben will, kann sie in eine Always On Availability Group oder eine klassische Datenbankspiegelung einbinden.

Bei Always On gilt:
Alle beteiligten Replikas müssen identische Datenbanken besitzen, die mit NORECOVERY wiederhergestellt wurden.
Das nennt man Seeding — also das initiale Befüllen der sekundären Replikas.

Danach dieselben Schritte für Logging und Monitoring Datenbank durchführen.
Sobald alle DBs im Zustand RESTORING sind, kannst du sie der Availability Group hinzufügen.

Falls du noch mit klassischer SQL-Spiegelung (Mirroring) arbeitest, ist das Vorgehen ähnlich:
Auch hier muss die sekundäre Datenbank mit NORECOVERY wiederhergestellt werden.

Dann auf dem Principal:

Und auf dem Mirror:

Sobald der Status „Synchronized“ erreicht ist, kannst du die anderen Citrix-Datenbanken identisch hinzufügen.

3. Delivery Controller vorbereiten

Bevor du die neuen Datenbankverbindungen setzen kannst, müssen die Delivery Controller (DDCs) vorbereitet werden.
Das Ziel: Alle bestehenden Verbindungen zur alten SQL-Umgebung sauber trennen, Logging und Monitoring kurzzeitig deaktivieren, und damit verhindern, dass Citrix-Dienste in der Migrationsphase fehlerhafte Daten schreiben.

3.1 Monitoring & Logging deaktivieren

Zunächst sollten alle Telemetrie- und Protokollierungsdienste pausiert werden.
Das verhindert unnötige Schreibvorgänge während des Wechsels der Datenbankverbindungen.

Damit werden sowohl das Citrix Monitoring als auch das Configuration Logging temporär abgeschaltet.
Sobald die Migration abgeschlossen ist, aktivierst du beide Funktionen wieder.

3.2 Alte DB-Verbindungen trennen

Jetzt müssen die alten DB-Verbindungen der Controller aufgelöst werden.
Die Citrix-Dienste (Broker, Config, Logging, Monitoring usw.) halten jeweils eigene SQL-Connectionstrings, die du einzeln auf null setzen musst.

Dazu zunächst das Citrix-Modul laden:

Dann alle bestehenden Verbindungen löschen:

Nach diesen Befehlen bestehen keine aktiven SQL-Verbindungen mehr zwischen den Citrix-Diensten und der alten Datenbankumgebung.

  • Führe diese Schritte auf allen Delivery Controllern aus (DDC01, DDC02, DDC03 etc.).
  • In einem laufenden Cluster spielt die Reihenfolge keine Rolle – du kannst Controller einzeln umstellen.
  • Wenn du sicher gehen willst, führe vorher Get-BrokerServiceStatus aus, um zu prüfen, ob die Dienste sauber laufen.

Alle Controller sind jetzt von der alten Datenbank getrennt, Logging & Monitoring pausiert.

Damit ist die Umgebung bereit, um im nächsten Schritt die neuen Verbindungen zum neuen SQL-Server zu setzen.

4. Neue Verbindungen konfigurieren

Nachdem die alten Datenbankverbindungen getrennt wurden, können nun die neuen Connection Strings auf den Delivery Controllern gesetzt werden.
Dieser Schritt verknüpft die Citrix-Dienste wieder mit ihren jeweiligen Datenbanken — jetzt aber auf dem neuen SQL-Server.

Zuerst definierst du den Ziel-SQL-Server und die neuen Datenbanknamen.
Achte darauf, dass der SQL-Server-Name entweder direkt auf den neuen Server oder — bei Always On — auf den Listener zeigt.

Wenn du Always On einsetzt, verwende unbedingt den Listener-Namen (z. B. SQL-LISTENER.DOMAIN.LOCAL) so bleiben deine Controller auch bei einem Failover verbunden, ohne dass du später Connection Strings anpassen musst.

4.1 Site-DB setzen

Jetzt stellst du die Verbindung zur neuen Site-Datenbank her.
Diese ist der Kern deiner Citrix-Umgebung und muss zuerst gesetzt werden.

Alle zentralen Citrix-Dienste (Broker, Config, Prov, Hyp, usw.) sind damit wieder mit der Site-DB verbunden.

4.2 Logging & Monitoring setzen

Als Nächstes folgen die beiden sekundären Datenbanken:
Configuration, Logging und Monitoring.

Mit dieser Sequenz stellst du sicher, dass beide Dienste sauber auf die neuen Datenbanken zeigen und keine alten Connection Strings mehr aktiv sind.

4.3 Verbindung prüfen

Nach dem Setzen der neuen Verbindungen ist ein kurzer Funktionstest Pflicht.
Überprüfe den Status aller Citrix-Dienste:

Alle Services sollten den Status OK zurückgeben und auf den neuen SQL-Server verweisen.

Wenn du mehrere Delivery Controller hast, wiederhole diese Schritte auf allen Knoten. Prüfe anschließend per Get-LogDBConnection und Get-MonitorDBConnection, ob wirklich alle Controller dieselben Connection Strings nutzen. Unterschiedliche Connection Strings führen später oft zu Synchronisationsproblemen zwischen den Services.

4.4 Logging & Monitoring wieder aktivieren

Wenn alle Verbindungen erfolgreich gesetzt wurden, kannst du die zuvor deaktivierten Dienste wieder einschalten:

Damit ist die Citrix-Site wieder voll funktionsfähig und produktionsbereit.

5. Fazit

Die Migration der Citrix-Datenbanken ist kein Hexenwerk – aber sie verlangt Disziplin, ein sauberes Vorgehen und ein Verständnis für die internen Abhängigkeiten der Citrix-Dienste.
Wer planlos „einfach restored“, riskiert fehlerhafte Verbindungen, defekte Logging-Datenbanken oder abgebrochene Monitoring-Sessions.
Mit dem oben beschriebenen strukturierten Ablauf bleibt die Migration dagegen transparent, sicher und reproduzierbar.

Wichtig ist vor allem:

  • Backups prüfen, bevor du loslegst.
  • Datenbanken in der richtigen Reihenfolge wiederherstellen.
  • Controller-Verbindungen kontrolliert trennen und neu setzen.
  • Am Ende alle Services testen – lieber einmal zu viel als zu wenig.

Besonders in produktiven Enterprise-Umgebungen empfiehlt es sich, die Schritte vorher in einer Testfarm zu simulieren und die Connection Strings zu dokumentieren.
So lassen sich Fehler im Live-System vermeiden, und du kannst bei Problemen jederzeit Rollbacken.

Wer darüber hinaus Always On oder SQL-Spiegelung nutzt, profitiert von echter Hochverfügbarkeit und stellt sicher, dass seine Citrix-Site auch bei SQL-Ausfällen weiterarbeitet, ohne dass die Benutzer es merken.

Kurz gesagt:
Eine saubere Citrix-Datenbankmigration ist weniger eine technische Herausforderung als eine Frage der Vorbereitung und Sorgfalt.
Wer die Schritte beherrscht, hat nicht nur ein stabiles System, sondern auch die perfekte Vorlage für künftige Updates oder SQL-Wechsel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

* Ich bin damit einverstanden, dass diese Website die von mir übermittelten Daten speichert, damit sie auf meine Anfrage antworten kann.