Datenbankmigrationen
Nach der Wiederherstellung der Baukasten-Datenbank wird ihr Schema über die CLI der installierten RoomsPro API auf den Stand der installierten ROOMS-Version gebracht.
Voraussetzungen
- Die aktuelle Baukasten-Datenbank wurde wiederhergestellt.
- Eine Sicherung der wiederhergestellten Datenbank ist vorhanden.
- Die
RoomsPro APIist installiert. - Die zentrale
appsettings.jsonwurde mit der angepasstenConfig.batan API und Worker verteilt. - Der gemeinsame ROOMS-Service-Account besitzt vorübergehend
db_ownerauf der zu migrierenden Datenbank. - Legacy Website, ROOMS Service und RoomsPro Worker sind noch nicht gestartet beziehungsweise gestoppt.
Datenbankstatus prüfen
Öffnen Sie eine PowerShell mit dem gemeinsamen ROOMS-Service-Account oder in dessen Datenbankkontext.
Wechseln Sie in das Installationsverzeichnis der
RoomsPro API.Set-Location C:\inetpub\wwwroot\APIPrüfen Sie den Migrationsstatus:
.\RoomsPro.Web.exe db status
db status gibt Exitcode 1 zurück, solange Migrationen offen sind. Das ist vor der ersten Migration einer neu bereitgestellten Baukasten-Datenbank zu erwarten und bedeutet nicht, dass der Statusbefehl selbst fehlgeschlagen ist. Die Konsolenausgabe zeigt die offenen Migrationen.
Migration ausführen
.\RoomsPro.Web.exe db migrate
Standardmässig gilt für einzelne SQL-Befehle ein Timeout von 600 Sekunden. Bei grossen Datenbanken kann der Wert angepasst werden:
.\RoomsPro.Web.exe db migrate --command-timeout 1200
Der Befehl aktualisiert die drei Datenbankkontexte in zeitlicher Reihenfolge:
RoomsDbLightWeightTickerQ
Zusätzlich werden erforderliche Kompatibilitätsanpassungen im selben Ablauf ausgeführt.
Status abschliessend prüfen
.\RoomsPro.Web.exe db status
Die Migration ist erst abgeschlossen, wenn keine offenen Migrationen mehr ausgegeben werden und der Befehl Exitcode 0 zurückgibt.
Entfernen Sie danach gemäss Datenbankberechtigungen die temporäre Mitgliedschaft in db_owner. Starten Sie Websites und Dienste erst anschliessend.
Mehrere Mandantendatenbanken
Führen Sie Statusprüfung und Migration für jede Mandantendatenbank separat aus. Wenn die zentrale API-Konfiguration auf eine andere Datenbank zeigt, übergeben Sie die gewünschte Verbindung explizit:
.\RoomsPro.Web.exe db status --connection "Server=SQLSERVER;Database=ROOMS_MANDANT;Trusted_Connection=True;TrustServerCertificate=True"
.\RoomsPro.Web.exe db migrate --connection "Server=SQLSERVER;Database=ROOMS_MANDANT;Trusted_Connection=True;TrustServerCertificate=True"
.\RoomsPro.Web.exe db status --connection "Server=SQLSERVER;Database=ROOMS_MANDANT;Trusted_Connection=True;TrustServerCertificate=True"
Verwenden Sie in Skripten keine Klartextkennwörter. Der dokumentierte Windows-Standardweg nutzt die integrierte Authentifizierung mit dem gemeinsamen ROOMS-Service-Account.
Fehlerbehandlung
- Prüfen Sie, ob die richtige Baukasten-Datenbank und Verbindung verwendet werden.
- Prüfen Sie, ob
appsettings.jsonin API und Worker identisch ist. - Prüfen Sie Netzwerkzugriff und die temporäre
db_owner-Berechtigung. - Werten Sie Konsolenausgabe und API-Logs aus.
- Starten Sie die Anwendung nach einem fehlgeschlagenen Migrationslauf nicht, sondern stellen Sie zuerst einen konsistenten Datenbankstand her.