Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL Database Gateway » Referenz » Dienst WKL Database Update (Referenz)

Dienst WKL Database Update (Referenz)

Der Dienst „WKL Database Update“ spielt signierte Datenbank-Update-Pakete ein, ohne dass der Datendienst läuft. Er nimmt denselben Ablauf wie das Update-Modul des Datendienstes: Pakete aus dem Eingangsordner einer Datenbank prüfen, sichern, einspielen, ankündigen und melden. Wer den Datendienst betreibt, braucht diesen Dienst nicht. Die Schritte zur Einrichtung beschreibt So spielen Sie Datenbank-Updates ohne Datendienst ein.

Syntax

msiexec /i Wkl.Data.Update-<Fassung>.msi [EIGENSCHAFT=Wert]… [/qn]
Wkl.Data.Update.exe <Befehl> [<id>] [Argumente] [--json]

Die Befehle laufen auf dem Server in einer Eingabeaufforderung als Administrator.

Parameter

Installationspaket

Wkl.Data.Update-<Fassung>.msi installiert das Programm nach C:\Program Files\Wkl\Database Update (eigenständig veröffentlicht, ohne .NET-Laufzeit auf dem Server, mit dem SQL-Server-Provider), richtet den Windows-Dienst Wkl.Data.Update mit automatischem Start ein und startet ihn. Es ist vom Installationsprogramm des Datendienstes getrennt.

EigenschaftVorgabeBedeutung
UPD_SERVICE_ACCOUNTNT SERVICE\Wkl.Data.UpdateKonto des Dienstes: das virtuelle Konto oder ein gruppenverwaltetes Dienstkonto (DOMÄNE\name$). Ein Konto mit Kennwort bietet das Paket nicht an. Ein Update behält das Konto
UPD_REMOVE_DATA–1 beim Entfernen: auch %ProgramData%\WKL\Database Update mit Konfigurationen, Einstellungen und Meldungen löschen. Ohne sie bleibt der Ordner

Bei der Installation legt das Programm (setup-host) die Ordner unten mit eigenen Rechten an und registriert die Ereignisquelle WKL Database Update im Anwendungsprotokoll. Beim Entfernen nimmt es die Ereignisquelle wieder weg.

Ordner

Die Ordner liegen fest unter %ProgramData%\WKL\Database Update. Keiner erbt die Rechte von %ProgramData%.

OrdnerInhaltRechte
databasesDie geschützte Konfiguration jeder Datenbank, <id>.json, und nichts sonstAdministratoren und SYSTEM ändern, das Dienstkonto liest
settingsDie Betriebseinstellungen jeder Datenbank, <id>.jsonAdministratoren und SYSTEM ändern, das Dienstkonto ändert
logDie Meldungen des Meldewegs file, <JJJJ-MM-TT>.jsonlAdministratoren und SYSTEM ändern, das Dienstkonto ändert

Geschützte Konfiguration

Eine Datei <id>.json in databases richtet eine Datenbank ein. Aufbau und Felder sind dieselben wie beim Update-Modul, mit drei Unterschieden:

  • Anmeldung. Ohne connection.secret meldet sich der Dienst mit seinem eigenen Windows-Konto an (Integrated Security=True in connection.string); das Konto braucht in der Datenbank die Rechte, Struktur zu ändern und zu sichern. Mit connection.secret meldet er sich mit der SQL-Anmeldung aus connection.string an, das Kennwort kommt aus der Umgebungsvariablen oder Datei (env:NAME, file:PFAD).
  • gatewayAlias hat keine Wirkung: Anwendungen erreichen die Datenbank nicht über einen Datendienst. Offene Sitzungen älterer Anwendungen sieht der Dienst über die Datenbank selbst.
  • mail nennt den Mailserver für den Meldeweg email: server, port (Vorgabe 25), from und optional secret (env:NAME, file:PFAD). Port 465 verbindet verschlüsselt ab dem ersten Byte, jeder andere Port verlangt STARTTLS; unverschlüsselt sendet der Dienst nie, und das Zertifikat des Mailservers muss gültig sein. Mit secret meldet er sich mit der Absenderadresse als Benutzername an, ohne secret sendet er ohne Anmeldung, etwa über ein internes Relay. Das Update-Modul des Datendienstes nimmt stattdessen `Gateway:Mail`.
"mail": { "server": "smtp.example.com", "port": 587, "from": "updates@example.com", "secret": "file:C:\\ProgramData\\WKL\\Database Update\\mail.txt" }

Eine Datei, die andere als Administratoren und SYSTEM ändern können, ein Kennwort in connection.string oder ein Dateiname, der nicht der id entspricht, lassen die Datenbank aus; databases nennt die Datei und den Grund.

Betriebseinstellungen

Die Datei <id>.json in settings schreibt der Dienst über den Befehl settings. Fehlt ein Schlüssel oder die Datei, gilt die Vorgabe. Eine Datei, die kein gültiges JSON ist oder einen Wert außerhalb des Bereichs hat, ersetzt der Dienst nicht durch Vorgaben: Die Datenbank wartet, bis die Datei stimmt.

SchlüsselVorgabeBedeutung
expandautomaticAbwärtsverträgliche Pakete: automatic sofort, confirm erst nach Bestätigung
contractconfirmNicht abwärtsverträgliche Pakete: confirm erst nach Bestätigung, automatic angekündigt und zur Frist eingespielt
noticeMinutes60Vorlauf einer Ankündigung in Minuten, 0 bis 10080, wenn das Paket keinen nennt
sessionWindowMinutes151 bis 1440; ohne Wirkung, solange gatewayAlias keine Wirkung hat
backup.keepCount10Sicherungen, die immer bleiben, 1 bis 1000
backup.keepDays30Alter in Tagen, ab dem eine ältere Sicherung gelöscht wird, 0 bis 3650; 0: nur die Anzahl zählt
notify.channels["eventlog"]Meldewege: eventlog, file, email
notify.email.to–Empfänger, mit ; getrennt; nötig, wenn email eingeschaltet ist
{
  "expand": "automatic", "contract": "confirm", "noticeMinutes": 60, "sessionWindowMinutes": 15,
  "backup": { "keepCount": 10, "keepDays": 30 },
  "notify": { "channels": ["eventlog", "file"], "email": { "to": null } }
}

Die Aufbewahrung der Sicherungen arbeitet wie beim Update-Modul. Mails des Meldewegs email gehen über den Mailserver aus mail der geschützten Konfiguration an notify.email.to, abseits des Durchlaufs: Ein langsamer oder nicht erreichbarer Mailserver verzögert die Mail, nie ein Paket. Fehlt mail, lässt sich secret nicht auflösen oder nimmt der Mailserver die Mail nicht an, steht eine Warnung im Ereignisprotokoll; die Meldung selbst steht dort ohnehin.

Befehle

BefehlBedeutung
databasesEingerichtete Datenbanken mit Konfiguration (Schlüssel als SHA-256, Geheimnis nur als Verweis) und Einstellungen; Dateien in databases, die der Dienst nicht beachtet, mit Grund
status <id>Offene Pakete (id, Datei, Schemafassung, Art, Status, Grund, Frist), blockierende Sitzungen und Abweichungen vom zuletzt eingespielten Modell
history <id> [--skip n] [--take n]Abgeschlossene Pakete, neueste zuerst, mit ihren Schritten; --take 1 bis 100, Vorgabe 20
confirm <id> <paket>Wartendes Paket bestätigen: ein abwärtsverträgliches läuft sofort, ein nicht abwärtsverträgliches wird angekündigt und läuft zur Frist
move-deadline <id> <paket> <zeitpunkt>Frist eines angekündigten Pakets verschieben; Zeitpunkt nach ISO 8601, ohne Zone als UTC gelesen (2026-11-02T18:00Z)
cancel-notice <id> <paket>Ankündigung zurücknehmen; das Paket wartet wieder auf Bestätigung
retry <id> <paket>Fehlgeschlagenes oder abgelehntes Paket erneut nehmen, als neues Paket mit allen Prüfungen
dismiss <id> <paket>Fehlgeschlagenes oder abgelehntes Paket verwerfen; es verschwindet aus dem Stand
upload <id> <datei>Paket (höchstens 64 MB) in den Eingangsordner legen und sofort prüfen lassen
settings <id> [Optionen]Betriebseinstellungen zeigen oder ändern: --expand, --contract, --notice-minutes, --session-window-minutes, --keep-count, --keep-days, --channels eventlog,file,email, --email-to "a@example.com;b@example.com". Sie gelten ab dem nächsten Durchlauf
helpÜbersicht der Befehle

<paket> ist die Spalte id aus status. --json gibt die Daten als JSON aus; status --json hat dasselbe Format wie update-status des Datendienstes.

Rückgabewert. 0 erledigt; 1 Aufruf falsch, Datenbank oder Paket unbekannt, Paket in einem anderen Status, Datenbank nicht erreichbar oder Dienst nicht erreichbar; 10 ein Durchlauf spielt gerade ein Paket ein (gleich wieder versuchen); sonst der Code des Pakets, etwa 7 wartet auf Bestätigung.

Meldungen

Im Anwendungsprotokoll unter der Quelle WKL Database Update stehen die Ereignisse der Pakete mit den IDs 4101 bis 4106 (wie beim Update-Modul), dazu der Start des Dienstes und jeder Verwaltungsbefehl mit dem Windows-Konto, das ihn aufgerufen hat. Der Meldeweg file schreibt je Tag (UTC) log\<JJJJ-MM-TT>.jsonl; der Dienst löscht diese Dateien nie.

Bemerkungen

  • Wer verwalten darf. Die Befehle reichen den Auftrag über die Named Pipe \\.\pipe\Wkl.Data.Update an den laufenden Dienst. Sie ist nur für Administratoren und SYSTEM offen und weist jede Verbindung aus dem Netzwerk ab; eine Verwaltung von einem anderen Rechner gibt es nicht. Ohne erhöhte Eingabeaufforderung lehnt Windows den Zugriff ab.
  • Wer handelt. Der Dienst führt jeden Befehl mit seinem eigenen Konto aus. Der Administrator braucht keine Rechte in der Datenbank. Bei einer Bestätigung trägt der Dienst das Windows-Konto des Aufrufers (DOMÄNE\name) als Bestätigenden in die Datenbank ein.
  • Nur zum Dienst. Die Befehlszeile sendet nur, wenn am anderen Ende der Pipe der laufende Dienst Wkl.Data.Update sitzt.
  • Keine Überschneidung. Befehle und Durchläufe laufen nacheinander. Läuft gerade ein Paket, wartet ein Befehl bis zu zehn Sekunden und endet sonst mit 10.
  • Durchlauf. Alle 15 Sekunden; ohne Datei in databases tut der Dienst nichts.

Beispiel

C:\> "C:\Program Files\Wkl\Database Update\Wkl.Data.Update.exe" status kunden
Stand von kunden.
  Kunden, Schema 13
  Paket 41  Kunden-schema-14.zip  Schema 14  contract  waiting  Grund 7
    Ein nicht abwärtsverträgliches Paket (contract) wartet auf Bestätigung.
 
C:\> "C:\Program Files\Wkl\Database Update\Wkl.Data.Update.exe" confirm kunden 41

Siehe auch

de/wiki/data-conectivity/database-gateway/reference/update-service.txt · Zuletzt geändert: von Wolfgang van der Stille