So spielen Sie Datenbank-Updates ohne Datendienst ein
Ihr Softwarehersteller liefert Änderungen an der Datenbank als signierte Pakete, Sie betreiben aber keinen Datendienst. Dann spielt der Dienst „WKL Database Update“ die Pakete auf dem Server ein: geprüft, gesichert, in einer Transaktion, mit Bestätigung, wo Sie es wünschen.
Lösungsübersicht
graph LR
H[Hersteller] -->|signiertes Paket| E[Eingangsordner]
E --> D[Dienst WKL Database Update]
K[Geschützte Konfiguration] --> D
D -->|prüfen, sichern, einspielen| B[(Datenbank)]
A[Administrator] -->|Befehlszeile| DSie installieren den Dienst, legen je Datenbank eine geschützte Konfiguration mit den Schlüsseln des Herstellers an und geben dem Konto des Dienstes die nötigen Berechtigungen in der Datenbank. Danach nimmt der Dienst jedes Paket aus dem Eingangsordner. Was warten soll, bestätigen Sie mit der Befehlszeile auf dem Server. Alle Einzelheiten stehen in der Referenz.
Umsetzung
Installieren Sie das Paket als Administrator:
msiexec /i Wkl.Data.Update-1.0.0.msi /qn /l*v install.log
Der Dienst
Wkl.Data.Updateläuft danach unter dem KontoNT SERVICE\Wkl.Data.Update. Für ein gruppenverwaltetes Dienstkonto geben SieUPD_SERVICE_ACCOUNT=DOMÄNE\name$mit.Geben Sie dem Konto des Dienstes in SQL Server eine Anmeldung und in der Datenbank die Berechtigungen, Struktur zu ändern und zu sichern, etwa die Rolle
db_owner. Sollen offene Sitzungen älterer Anwendungen eine Frist aufhalten, braucht die Anmeldung zusätzlichVIEW SERVER STATE(ab SQL Server 2022VIEW SERVER PERFORMANCE STATE).CREATE LOGIN [NT SERVICE\Wkl.Data.Update] FROM WINDOWS; USE Kunden; CREATE USER [NT SERVICE\Wkl.Data.Update] FOR LOGIN [NT SERVICE\Wkl.Data.Update]; ALTER ROLE db_owner ADD MEMBER [NT SERVICE\Wkl.Data.Update];
Läuft SQL Server auf einem anderen Rechner, gilt das virtuelle Konto dort als Computerkonto (
DOMÄNE\SERVER$); nehmen Sie dann ein gruppenverwaltetes Dienstkonto.Legen Sie Eingangs- und Archivordner an. Beide ändern nur Administratoren, SYSTEM und das Konto des Dienstes, das darin die Unterordner
doneundfailedanlegt und Pakete archiviert:mkdir D:\Updates\Kunden D:\Updates\Kunden-Archiv icacls D:\Updates\Kunden /inheritance:r /grant:r *S-1-5-32-544:(OI)(CI)F *S-1-5-18:(OI)(CI)F "NT SERVICE\Wkl.Data.Update:(OI)(CI)M" icacls D:\Updates\Kunden-Archiv /inheritance:r /grant:r *S-1-5-32-544:(OI)(CI)F *S-1-5-18:(OI)(CI)F "NT SERVICE\Wkl.Data.Update:(OI)(CI)M"
Legen Sie die geschützte Konfiguration an, als Administrator, in
C:\ProgramData\WKL\Database Update\databases\kunden.json:{ "format": 1, "id": "kunden", "product": "Kunden", "dialect": "sqlserver", "connection": { "string": "Server=sql01;Database=Kunden;Integrated Security=True;Encrypt=True" }, "keys": [ "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE…" ], "inbox": "D:\\Updates\\Kunden", "archive": "D:\\Updates\\Kunden-Archiv", "backup": { "mode": "native", "target": "D:\\Sicherung" } }keysist der öffentliche Schlüssel, den Ihnen der Hersteller nennt;productder Produktname aus seinen Paketen.backup.targetist ein Ordner auf dem Datenbankserver.Prüfen Sie in einer Eingabeaufforderung als Administrator, dass der Dienst die Konfiguration annimmt:
"C:\Program Files\Wkl\Database Update\Wkl.Data.Update.exe" databases
Steht die Datei unter „nicht beachtet“, nennt die Zeile den Grund.
Stellen Sie ein, was warten soll, etwa jedes Paket bestätigen und zusätzlich in eine Datei melden:
Wkl.Data.Update.exe settings kunden --expand confirm --contract confirm --channels eventlog,file
Legen Sie Pakete des Herstellers in den Eingangsordner, oder übergeben Sie eines direkt:
Wkl.Data.Update.exe upload kunden D:\Lieferung\Kunden-schema-14.zip
Sehen Sie nach, was wartet, und bestätigen Sie:
Wkl.Data.Update.exe status kunden Wkl.Data.Update.exe confirm kunden 41
Hinweise
- Die Befehle laufen nur auf dem Server selbst und nur in einer Eingabeaufforderung als Administrator.
- Der Dienst trägt bei einer Bestätigung Ihr Windows-Konto als Bestätigenden in die Datenbank ein.
- Ein nicht abwärtsverträgliches Paket mit
contract = automatickündigt der Dienst an und spielt es zur Frist ein;move-deadlineverschiebt die Frist,cancel-noticenimmt die Ankündigung zurück. - Meldungen stehen im Ereignisprotokoll (Quelle
WKL Database Update) und, wenn eingeschaltet, inC:\ProgramData\WKL\Database Update\log. Für Mails tragen Sie den Mailserver alsmailin die geschützte Konfiguration ein und schalten den Meldeweg mit Empfängern ein:settings kunden --channels eventlog,email --email-to "it@example.com". - Betreiben Sie den Datendienst, nehmen Sie stattdessen dessen Update-Modul.