Color scheme: Riviera
You are here: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL Database Gateway » Änderungen

Änderungen

Beta-Fassung: Der Datendienst ist als Beta-Fassung veröffentlicht. Funktionen, Konfiguration und Schnittstellen können sich bis zur ersten freigegebenen Version ändern.

Was sich für Anwender, Betreiber und Programme ändert. Der Datendienst ist als Vorschau veröffentlicht und hat noch keine freigegebene Version; diese Datei führt deshalb datierte Stände der Vorschau und die Versionen des Vertragspakets Wkl.Data.Gateway.Contracts, das Programme und der .NET-Client beziehen. Seiten der Referenz nennen bei einer Neuerung des Vertrags die Version, ab der sie gilt („seit Vertrag 0.x“).

2026-11-05 – Kennungen der Anfrage im Sitzungskontext (Vertrag unverändert)

  • Sitzungskontext für jede Anfrage: Der Dienst schreibt neben wkl.person, wkl.key und wkl.role jetzt für jede Anfrage schreibgeschützt wkl.client (Aufrufer), wkl.method (Anmeldeart), wkl.alias, wkl.request (Korrelation wie im Zugriffsprotokoll) und wkl.rules (alle Regeln des Aufrufers), dazu wkl.rule (die Zugriffsregel, die die Ressource freigibt), wkl.session (Sitzung des zweiten Faktors) und wkl.person_id (Nummer der Person in der Verwaltung). Bisher gab es Werte nur bei persönlichem Schlüssel und gewählter Identität; jetzt auch bei Dienstschlüssel, Windows-Konto und SQL-Anmeldung.
  • Zuordnung über die Nummer der Person: Eine Sicht, die Zeilen nach der Person filtert, vergleicht besser mit wkl.person_id als mit dem Namen; die Nummer bleibt bei einer Umbenennung gleich. Siehe Zeilenweise Einschränkung und So beschränken Sie Vermittler auf ihre Kunden.
  • Provider: Providervertrag 1.8, Provider für SQL Server 1.9.0. Ein Provider für einen früheren Vertrag läuft weiter und schreibt die neuen Werte nicht.

2026-11-05 – Lizenz (Schnittstelle unverändert)

  • Lizenz: Der Dienst liest seine Lizenz (Datei .lic aus dem Kauf auf wvds.it) ohne Netzwerk und ohne Aktivierung, am besten aus %PROGRAMDATA%\WKL\Licenses\. Er prüft beim Start und stündlich und schreibt das Ergebnis in die Ereignisanzeige (Ereignis-IDs 9100 bis 9109). Ohne gültige Lizenz arbeitet er vollständig weiter: 30 Tage Testzeitraum, danach ein Hinweis im Protokoll. Aufrufer sehen davon nichts. Siehe So hinterlegen Sie die Lizenz des Datendienstes.

2026-11-04 – Dateien tragen den Namen des Dienstes (Vertrag unverändert)

  • Gescheiterte Aktualisierung: Bricht eine Aktualisierung ab, läuft danach die bisherige Version wie zuvor – registriert, mit ihrer Konfiguration, ihrer Firewall-Regel und ihrem Speicher. Bisher fehlten ihr danach Konfiguration und Registrierung, und der Dienst startete nicht.
  • Verwaltungsspeicher: Neue Installationen legen den Speicher als dbgwsvc.db und die Protokolldatei als dbgwsvc-logs.db an, bisher gateway.db und gateway-logs.db. Eine Aktualisierung benennt die vorhandenen Dateien im Datenordner um; wird sie zurückgenommen, erhalten die Dateien ihren früheren Namen zurück. Ein von Hand an anderer Stelle eingestellter Speicher (Gateway:Store:Path) behält seinen Namen.
  • Sicherungen: backup-store --to-folder und die Sicherung aus der Verwaltungsanwendung benennen die Kopie nach dem Speicher, also dbgwsvc-<Zeitpunkt>.db; Sicherungen mit dem früheren Namen bleiben gültig.
  • Hilfsskripte im Programmordner: dbgwsvc-Erster-Administrator.cmd und dbgwsvc-Zertifikat-LetsEncrypt.cmd, bisher ohne dbgwsvc-.
  • Dienst WKL Database Update: Das Programm heißt dbgwupd.exe, bisher Wkl.Data.Update.exe; Befehle lauten etwa dbgwupd.exe status kunden. Der Windows-Dienst behält seinen Namen Wkl.Data.Update und damit sein Konto NT SERVICE\Wkl.Data.Update; dessen Anmeldungen an den Datenbanken gelten weiter.

2026-11-03 – Einladungsmails mit dem Logo des Partners (Vertrag unverändert)

  • Eingebaute Mailvorlagen: Die drei eingebauten Vorlagen haben einen hellen Kopf mit dem Logo des Partners (src="cid:brand") und unten das Zeichen von The White Knight Labs (src="cid:logo"); der Client hängt beide Bilder an. Der Verwaltungsspeicher hat damit die Schemaversion 28: Beim Start bekommt jede eingebaute Vorlage, die noch den bisher ausgelieferten Text hat, den neuen Text; eine in der Verwaltung geänderte Vorlage bleibt, wie sie ist.

2026-11-03 – Anfragengrenze mit Nachwachsen und Retry-After, Audit ein Jahr (Vertrag unverändert)

  • Anfragengrenze: Das Kontingent je Aufrufer wächst laufend nach (RateLimit:PerCaller je WindowSeconds, Vorgabe 1 200 je Minute, also 20 je Sekunde), statt am Ende eines festen Zeitraums auf einmal; nach einer Pause sind bis zu RateLimit:Burst Anfragen auf einmal frei (Vorgabe 600). Ein Aufrufer, der weiterarbeitet, wird auf die Rate gebremst statt bis zum Ende der Minute abgewiesen. Jede 429 der Grenze nennt in Retry-After, wann die nächste Anfrage durchgeht; der ODBC-Treiber ab 0.8.2 wartet so lange und liest weiter.
  • Audit: Gateway:AuditLog:Days ist in der Vorgabe 365 Tage (bisher 90); das deckt etwa die sechs Monate, die das slowenische ZInfV-1 für Sicherheitsprotokolle verlangt. Erreicht die Protokolldatei ihre Größe, entfernt der Dienst die ältesten Einträge zuerst; siehe Konfiguration.
  • Aufbewahrung und Dateigröße in der Verwaltung: Die Einstellungen audit_days (1–3650 Tage) und log_max_megabytes (64–65 536 MB) der Menge Settings gehen Gateway:AuditLog:Days und Gateway:Store:LogMaxMegabytes vor und wirken ohne Neustart; ein Wert außerhalb der Grenzen wird mit einer Meldung abgewiesen. ServiceStatus nennt neu LogMaxMegabytes. Der Verwaltungsspeicher hat damit die Schemaversion 27; er stellt sich beim Start selbst um.
  • GET /odata/v4 ohne Alias: Die Liste der Aliasse kommt wieder mit 200; bisher antwortete der Dienst mit 400 “Die Anfrage enthält eine unzulässige Angabe.” und schrieb eine Ausnahme ins Protokoll.
  • Programmdatei dbgwsvc.exe: Das Programm des Dienstes heißt dbgwsvc.exe (mit dbgwsvc.dll) statt Wkl.Data.Gateway.exe; alle Befehle rufen Sie damit auf, etwa dbgwsvc.exe init-admin. Die Aktualisierung ersetzt die alte Datei und den Pfad im Dienst. Name des Dienstes, Dienstkonto, Datenordner und Ereignisquelle bleiben Wkl.Data.Gateway.

2026-11-02 – Verbindungstest und Meldungen mit Umlauten (Vertrag unverändert)

  • Verbindungstest: Eine fehlende Anmeldung oder Datenbank an einem SQL Server auf demselben Rechner meldet der Test jetzt verlässlich als Anmeldung bzw. Datenbank (18456 bzw. 4060), nicht mehr als Netzfehler 233. Nach 233 versucht er es gleich noch einmal und dann nach 250 ms ein drittes Mal; ein wirklich unerreichbarer Server kostet damit 250 ms mehr.
  • Meldungen: Meldungen, Hinweise und Ausgaben des Dienstes schreiben Umlaute und ß jetzt als solche („Schlüssel“, „lässt“, „für“) statt als „ae“, „oe“, „ue“, „ss“. Programme, die einen Meldungstext vergleichen, sollten den HTTP-Status oder das Feld code auswerten, nicht den Text. Werte des Audits wie „geaendert“ oder „geloescht“ bleiben unverändert.

2026-11-01 – Seitengröße nach Wunsch des Clients (Vertrag unverändert)

  • Die OData-Oberfläche beachtet Prefer: odata.maxpagesize=n bei einer Leseanfrage ohne $top: Seiten bis MaxTop, bestätigt in Preference-Applied, Folgeseiten wie bisher. Ein Client, der nur Schlüssel liest, braucht damit ein Zehntel der Anfragen. Ohne den Kopf bleibt alles wie bisher.

2026-11-01 – Neueste Einträge des Änderungsprotokolls schneller (Vertrag unverändert)

  • Ein Bereich des Schlüssels einer Verwaltungsmenge, sortiert nach dem Schlüssel, wird jetzt im Verwaltungsspeicher gelesen. Ein Beispiel ist ChangeLog?$filter=Id le 62030&$orderby=Id desc. Bisher las der Dienst für jedes Fenster die ganze Tabelle. Bei 62 000 Einträgen kostete das je Fenster etwa 1,5 s, und die neuesten 1 000 Einträge über den ODBC-Treiber 3,4 s.
  • Ergebnis und Reihenfolge bleiben gleich. Andere Bedingungen beantwortet der Dienst wie bisher im Speicher.

2026-11-01 – Audit: nur Abweisungen vor der Obergrenze (Vertrag unverändert)

  • Eine Abfrage von AuditEntries mit Reason ne null (nur abgewiesene Anfragen) grenzt jetzt schon die Protokolldatei ein, wie bisher Zeitraum und Person. Die Obergrenze von 20 000 Einträgen je Abfrage gilt damit für die Abweisungen; vorher konnten ältere Abweisungen fehlen, wenn neuere beantwortete Zugriffe die Obergrenze füllten (etwa bei „Warum abgewiesen?“ einer Person mit vielen Zugriffen).

2026-11-01 – Status nennt die Aufbewahrung der Protokolle (Vertrag unverändert)

  • Die Menge ServiceStatus der Verwaltung nennt, wie weit die Protokolle zurückreichen: AuditDays (Aufbewahrung des Zugriffsprotokolls), AuditOldestAt (ältester aufbewahrter Zugriff) und SignInEventDays (Aufbewahrung der Anmeldeereignisse). Eine Verwaltungsanwendung kann damit den Zeitraum einer Protokollseite nennen, statt „seit dem Start des Dienstes“ zu schreiben.

2026-11-01 – Schlüssel mit Schrägstrich (Vertrag unverändert)

  • Ein Eintrag, dessen Schlüssel einen Schrägstrich enthält (etwa der Netzbereich 10.0.0.0/8 einer Anmelderegel oder ein Pfad), lässt sich jetzt über seine Adresse lesen, ändern und entfernen. Der Schrägstrich kommt kodiert als %2F an; der Dienst fand den Eintrag bisher nicht und antwortete mit 404, was Access als Schreibkonflikt meldete (Fehler 3197). Das gilt für die Verwaltung und für die Datenoberfläche. Ein Wert, der die Zeichen %2F selbst enthält, bleibt unverändert.

2026-11-01 – Zeilenversion ohne Werte anderer Mengen (Vertrag unverändert)

  • Die Zeilenversion (Version) einer Menge umfasst nur noch die Werte der Zeile selbst. Zahlen und Namen aus anderen Mengen (Persons.Rules, ClientRules.Holders, Person in PersonRules, PersonalKeys und SessionTokens, DataSource und Role der Zuordnungen von Identitäten) ändern sie nicht mehr. Vorher endete das Löschen einer Person direkt nach dem Löschen ihrer Regeln in Access mit einem Schreibkonflikt (3197), ebenso eine Bearbeitung, während jemand eine Regel zuwies.

2026-10-31 – Letzte Anmeldung und Austritt je Person (Vertrag unverändert)

  • Persons hat die Felder LastSignInAt und LastSignInMethod (letzte erfolgreiche Anmeldung, nur lesbar) und LeftAt (Austritt, setzt die Verwaltung). Ruhende Zugänge und die Zeit vom Austritt bis zur Sperre lassen sich damit nachweisen. Der Verwaltungsspeicher erhält Schema 26.

2026-10-31 – Sitzungen enden mit Grund und Angabe, wer sie beendet hat (Vertrag unverändert)

  • SessionTokens hat die Felder EndReason und EndedBy: wie eine Sitzung des zweiten Faktors endete (in der Verwaltung beendet, Person gesperrt, Schlüssel gesperrt, zweiter Faktor neu oder entfernt, abgelaufen) und wer sie beendet hat. Sperrt die Verwaltung eine Person oder einen Schlüssel, enden deren Sitzungen im selben Schritt. Sitzungen werden nicht mehr gelöscht, wenn der zweite Faktor neu eingerichtet oder entfernt wird. Der Verwaltungsspeicher erhält dafür Schema 25.

2026-10-31 – Zugriffsprotokoll nennt Datensatz und erlaubende Zugriffsregel (Vertrag unverändert)

  • AuditEntries hat zwei neue Felder: Target nennt, was eine Anfrage angesprochen hat (Pfad und Abfrage, etwa …/Vertraege(17) oder …?$filter=Nr eq 17), AccessRule die Zugriffsregel, die einen beantworteten Zugriff auf eine Tabelle oder Sicht erlaubt hat, mit Version. ClientRules zeigt die heutige Version jeder Regel in RuleVersion. Eine vorhandene Protokolldatei erhält die Spalten beim Start; ältere Einträge bleiben ohne Angabe. Siehe So vollziehen Sie eine Zugriffsentscheidung nach.

2026-10-30 – Software-Stückliste im Paket (Vertrag unverändert)

  • Installationsprogramm und MSI-Paket legen sbom.cdx.json in den Programmordner: die Software-Stückliste (SBOM) im Format CycloneDX 1.6 mit jeder installierten Datei und ihrer Prüfsumme sowie den enthaltenen Fremdkomponenten. Jede Lieferung enthält sie zusätzlich als Wkl.Data.Gateway-<Version>.sbom.cdx.json. Siehe Installationspaket.

2026-10-30 – Verbindungstest meldet abgelehnte Anmeldung an lokalen SQL Server richtig (Vertrag unverändert)

  • test-connection: Eine abgelehnte Anmeldung an einen SQL Server auf demselben Rechner kam manchmal als 233 mit failure: Network an (“Der Datenbankserver wurde nicht erreicht”), obwohl die Anmeldung oder die Datenbank fehlte. Der Test öffnet jetzt ohne Verbindungspool und nach 233 sofort ein zweites Mal; er meldet dann Login (18456) oder Database (4060). Siehe Verwaltungsschnittstelle.

2026-10-30 – Zugriffsprotokoll dauerhaft, Protokolle abschaltbar (Vertrag unverändert)

  • Das Protokoll der Zugriffe (Audit) bleibt über einen Neustart hinweg: Mit Verwaltungsspeicher schreibt der Dienst es einmal in der Minute in die Protokolldatei und hält es Gateway:AuditLog:Days Tage lang (Vorgabe 90). AuditEntries liest daraus, bisher nur die letzten 10 000 Einträge seit dem Start. Siehe Gateway:AuditLog.
  • Jedes Protokoll lässt sich abschalten, Vorgabe eingeschaltet: Zugriffe mit Gateway:AuditLog:Enabled, das Änderungsprotokoll mit Gateway:Store:ChangeLog; Anmelde- und Lastprotokoll wie bisher mit Gateway:SignInLog:Enabled und Gateway:LoadLog:Enabled.

2026-10-30 – Installationsprogramm auf Deutsch, Englisch und Slowenisch (Vertrag unverändert)

  • Das Installationsprogramm öffnet zuerst Sprache auswählen (vorgewählt ist die Anzeigesprache von Windows) und zeigt danach alle Seiten und Meldungen auf Deutsch, Englisch oder Slowenisch; bisher nur auf Deutsch. Der vorgeschlagene Name der Installation folgt der Sprache; Eigenschaften und Befehlszeile sind gleich. Siehe Den Datendienst installieren.
  • Das MSI-Paket enthält dieselben drei Sprachen: Dialoge auf Deutsch, mit TRANSFORMS=:1033 auf Englisch, mit TRANSFORMS=:1060 auf Slowenisch. Siehe Installationspaket.

2026-10-30 – Namen der Datenbank für Spalten eigener Anweisungen (Vertrag unverändert)

  • Eigene Anweisungen: Eine Spalte ohne Namen (SELECT COUNT(*) …, SELECT 1 …) oder mit einem schon vergebenen Namen trägt den Namen der Datenbank zusätzlich in label (leer bzw. der wiederholte Name); name bleibt der Schlüssel der Werte in den Zeilen (Column2, Nummer1). Der ODBC-Treiber zeigt damit dieselben Namen wie ODBC Driver 18. Siehe HTTP: eigener Vertrag.
  • SQL-Server-Provider 1.8.0 (setzt Providervertrag 1.7 voraus).

2026-10-29 – Geprüfte Anweisungen mit Datumsteil (Vertrag unverändert)

  • Geprüfte Anweisungen nehmen den Datumsteil in DATEPART, DATEADD, DATEDIFF, DATENAME, DATETRUNC und DATE_BUCKET an (DATEPART(month, Datum), DATEADD(day, 30, Datum)). Bisher wies der Dienst sie mit 403 ab (“Die Form 'IdentifierLiteral' …”), obwohl die Funktionen erlaubt sind; über ODBC Driver 18 liefen sie.

2026-10-29 – hierarchyid, Geodaten und sql_variant (Vertrag unverändert)

  • hierarchyid, geography und geometry stehen jetzt im Schemadokument und in jedem Leseergebnis, als Binärwert mit den gespeicherten Bytes – denselben, die ODBC Driver 18 liefert. sql_variant steht als Text in der Form seines Grundtyps. Bisher fehlten diese Spalten, und eine eigene Anweisung mit einer solchen Spalte endete mit 503. Siehe Zeitpunkte, Zahlen und Namen.
  • OData: Ein Vergleich in $filter oder eine Sortierung in $orderby über eine Spalte, die SQL Server so nicht vergleicht oder sortiert (text, ntext, image, xml, Geodaten, sql_variant), weist der Dienst mit 400 ab. Bisher kam 422 von der Datenbank, bei sql_variant still eine leere Antwort.
  • Eigene Anweisungen: columns nennt den Typnamen der Datenbank (storeType) und kennzeichnet eine Identitätsspalte ("identity": true).

2026-10-29 – Dienst WKL Database Update (Vertrag unverändert)

  • Neu: der Dienst “WKL Database Update” mit eigenem Installationspaket Wkl.Data.Update-<Version>.msi. Er spielt signierte Datenbank-Update-Pakete ein, wo kein Datendienst läuft, nach denselben Regeln wie das Update-Modul. Ohne connection.secret meldet er sich mit seinem eigenen Windows-Konto an. Verwaltet wird er auf dem Server mit Wkl.Data.Update.exe in einer Eingabeaufforderung als Administrator; siehe Dienst WKL Database Update (Referenz). Mails des Meldewegs email verschickt er über den Mailserver, den mail in der geschützten Konfiguration nennt, nur verschlüsselt (TLS auf Port 465, sonst STARTTLS).
  • Geschützte Konfigurationen mit einer Byte-Reihenfolge-Markierung (UTF-8 mit BOM, etwa von Windows PowerShell 5.1 mit Set-Content -Encoding UTF8 geschrieben) nimmt das Update-Modul jetzt an; bisher ließ es die Datenbank mit “kein gültiges JSON” aus.

2026-10-29 – Fehlversuche bei SQL-Anmeldungen (Vertrag unverändert)

  • Ein Versuch, auf den der Server keine lesbare Antwort gibt (503), zählt jetzt als Fehlversuch der SQL-Anmeldung und ihrer Herkunft. Läuft SQL Server auf demselben Rechner und wird über Shared Memory oder Named Pipes erreicht, kam die erste Ablehnung nach dem Laden des Providers als 503 statt 401 an, obwohl der Server das Kennwort geprüft hatte; solche Versuche fielen bisher aus der Grenze von 5 je Anmeldung und 20 je Herkunft in einer Minute.
  • Bei einem echten Ausfall des Servers antwortet der Dienst nach 5 Versuchen einer Anmeldung bis zum Ende der Minute mit 429 statt 503.

2026-10-29 – Schutz vor Änderungen über fremde Webseiten (Vertrag unverändert)

  • Ändernde Anfragen (POST, PUT, PATCH, DELETE), die ein Browser im Auftrag einer anderen Webseite sendet, weist der Datendienst mit 403 und dem Code FORBIDDEN ab. Er richtet sich nach der Kopfzeile Sec-Fetch-Site des Browsers; fehlt sie, muss Origin Schema, Host und Port der Anfrage nennen. Bisher konnte eine fremde Webseite solche Anfragen mit der Windows-Anmeldung oder einem gemerkten Kennwort auslösen, die der Browser von sich aus mitsendet.
  • Programme ohne Browser (ODBC-Treiber, .NET-Client, Excel, Power BI, Skripte) senden keine dieser Kopfzeilen und sind nicht betroffen.
  • Der Rumpf einer ändernden Anfrage muss Content-Type: application/json tragen (hochgeladene Dateien application/octet-stream); sonst antwortet der Dienst mit 400 und dem Code BAD_REQUEST. Ausgenommen sind die Abfrageoptionen in $query als text/plain. Treiber, .NET-Client und Verwaltungsanwendung senden schon so; Skripte, die einen Rumpf ohne Typ senden (etwa curl -d ohne -H), müssen den Typ ergänzen.

2026-10-28 – Datenbank-Updates im Datendienst (Vertrag unverändert)

  • Das Update-Modul spielt signierte Datenbank-Updates in die Datenbanken ein, für die der Ordner `Gateway:Updates` eine geschützte Konfiguration hat: abwärtsverträgliche Pakete sofort oder nach Bestätigung, nicht abwärtsverträgliche nach einer Ankündigung an die laufenden Anwendungen, sobald keine ältere Version mehr läuft.
  • Neue Befehle der Verwaltung: update-databases, update-status, update-history, confirm-update, dismiss-update, retry-update, move-update-deadline, cancel-update-notice, upload-update (Datenbank-Updates).
  • Die Betriebseinstellungen je Datenbank stehen im Verwaltungsspeicher (Schemaversion 21) und werden in der Menge UpdateSettings geändert: Bestätigung für abwärtsverträgliche und nicht abwärtsverträgliche Pakete, Vorlauf der Ankündigung, Zeitfenster für offene Sitzungen.
  • Das Modul meldet, was aus einem Paket wird, im Ereignisprotokoll (Ereignis-IDs 4101–4106) und auf Wunsch in einer Datei je Tag unter %ProgramData%\Wkl.Data.Gateway\logs\updates (Meldungen); Verwaltungsspeicher Schemaversion 22.
  • Das Modul meldet auf Wunsch auch per Mail, über den Mailzugang des Dienstes (Gateway:Mail), an die Empfänger der Datenbank (NotifyEmail, NotifyEmailTo in UpdateSettings); Verwaltungsspeicher Schemaversion 23.
  • Das Modul räumt nach jeder Sicherung alte Sicherungen derselben Datenbank auf (BackupKeepCount, BackupKeepDays in UpdateSettings), wenn es den Sicherungsordner erreicht (Aufbewahrung der Sicherungen); Verwaltungsspeicher Schemaversion 24.
  • setup-host (Installationspaket) legt im Datenordner den Ordner updates an, den nur Administratoren und System ändern und das Dienstkonto liest, und trägt ihn als Gateway:Updates:Folder ein.

2026-10-28 – Hinter IIS keine Windows-Anmeldung (Vertrag unverändert)

  • setup-host --mode iis (Installationspaket mit GW_MODE=iis) setzt AuthMode auf PersonalKey. Bisher war die Windows-Anmeldung auch hinter IIS eingeschaltet. Sie gilt für die Verbindung, und IIS mit Application Request Routing teilt seine Verbindungen zum Dienst zwischen Anwendern; die Anmeldung einer Person konnte so die Anfrage einer anderen tragen. Eine vorhandene Installation hinter IIS verliert beim Aktualisieren die Windows-Anmeldung; Personen melden sich mit ihrem persönlichen Schlüssel an.
  • Steht Windows in AuthMode und nennt TrustedProxies einen Proxy, warnt der Dienst beim Start.

2026-10-28 – save-person ändert nur das Angegebene, init-admin prüft die Methoden (Vertrag unverändert)

  • save-person ändert bei einer vorhandenen Person nur, was angegeben ist. Bisher entfernte der Befehl ohne --login die SQL-Anmeldung und schaltete die Person ohne --disabled wieder ein. Neu sind --no-login, --no-rules und --enabled; ohne --rule bleiben die Regeln.
  • save-person weist eine Regel ab, die nicht im Verwaltungsspeicher steht, und nennt die vorhandenen. Bisher gab ein Tippfehler der Person keine Rechte, und jede spätere Änderung in der Verwaltung scheiterte mit 422.
  • init-admin nimmt nur eine Regel, die die Verwaltung mit jeder ihrer Methoden ändern darf, und admin-status zählt nur solche Personen als Administratoren.

2026-10-28 – Dezimalzahlen mit bis zu 38 Stellen (Vertrag unverändert)

  • Ein Wert einer decimal- oder numeric-Spalte mit mehr als 28 Stellen, bis zu den 38 von decimal(38, s), wird gelesen und geschrieben, mit jeder Stelle. Bisher scheiterte das Lesen einer solchen Zeile mit 503, und das Schreiben wies den Wert mit 400 ab; ein Betrag mit 29 Stellen wurde beim Schreiben still auf 28 gerundet.

2026-10-28 – Beträge in Exponentschreibweise exakt (Vertrag unverändert)

  • Ein Betrag, den der Rumpf eines Schreibvorgangs in Exponentschreibweise sendet (1.2345678901234567890E2), kommt in einer Dezimalspalte mit allen Stellen an. Bisher lief er über eine Gleitkommazahl und wurde auf 15 signifikante Stellen gerundet (123.456789012346). Gleitkomma- und Textspalten erhalten denselben Wert wie bisher; Argumente einer Prozedur werden weiter als float gebunden.

2026-10-27 – Verbindungstest meldet die erste Antwort des Servers (Vertrag unverändert)

  • test-connection öffnet die Verbindung genau einmal. Bisher versuchte der Datenbanktreiber nach einem Fehler wie 4060 (Datenbank lässt sich nicht öffnen) nach 10 Sekunden selbst ein zweites Mal, und der Test meldete, was dieser zweite Versuch ergab. Das war nicht immer die Antwort des Servers: Eine fehlende Datenbank erschien gelegentlich als Netzfehler 233 (failure Network statt Database). Jetzt meldet der Test die erste Antwort, ohne die 10 Sekunden Wartezeit. Anfragen an die Datenquelle wiederholen weiterhin.

2026-10-23 – Installationsprogramm: Seite "Lizenz" (Vertrag unverändert)

  • Das Installationsprogramm 1.0.8 beendete sich nach Weiter auf der Seite Willkommen ohne Meldung: Der deutsche und der slowenische Lizenztext fehlten im Programm. Ab dem nächsten Installationsprogramm sind alle drei Versionen enthalten.

2026-10-22 – Produktname WKL Database Gateway (Vertrag unverändert)

  • Der Datendienst heißt als Produkt WKL Database Gateway, in allen Sprachen. So steht er im Installationsprogramm, unter Apps und Features, im Startmenü, als Anzeigename des Windows-Dienstes, in den Dateieigenschaften und in den Lizenz-, Sicherheits- und Herstellerangaben.
  • Der technische Name Wkl.Data.Gateway bleibt: Dienstname, Programmdateien, Pakete, Ordner und Ereignisquelle ändern sich nicht. Skripte und Überwachung, die den Dienstnamen verwenden, laufen weiter.

2026-10-22 – Schemastand für den WKL Bootstrapper (Vertrag unverändert)

  • GET /schema-state/{alias}/{produkt} liefert den Schemastand einer versionierten Datenbank, damit der WKL Bootstrapper nur passende Anwendungsversionen anbietet; Anmeldung mit Windows, ohne Anmeldung nur mit Gateway:SchemaState:Anonymous. Siehe HTTP: eigener Vertrag.
  • X-Wkl-Application: Anwendungen melden Produkt und Version; der Dienst merkt sich je Alias, welche Version zuletzt angefragt hat. Siehe HTTP: eigener Vertrag.
  • Der mitgelieferte SQL-Server-Provider hat die Version 1.3.0.

2026-10-22 – Herstellerangaben, Hinweise zu Fremdkomponenten, Signatur (Vertrag unverändert)

  • Hersteller EMSR DATA, D.O.O. Dateieigenschaften, Paket, Installationsprogramm und “Programme und Features” nennen die Firma EMSR DATA, D.O.O. statt “The White Knight Labs”, dazu Kontakt und Website. Kennungen bleiben: Dienstname Wkl.Data.Gateway, Programmordner, Paket-IDs; eine Aktualisierung erkennt die bisherige Installation.
  • Neue Dateien im Programmordner. THIRD-PARTY-NOTICES.txt mit den Fremdkomponenten und ihren Lizenzen, die Hinweise der .NET-Laufzeiten sowie SECURITY.md (Schwachstellen melden, unterstützte Versionen) und MANUFACTURER.md (Herstellerangaben), je auf Englisch, Deutsch und Slowenisch; siehe Installationspaket.
  • Lizenzbedingungen. Das Installationsprogramm und das Paket zeigen die Lizenzbedingungen von EMSR DATA vor der Installation; weiter geht es nur mit Zustimmung. Sie liegen als LICENSE.md (verbindlich, Englisch), LICENSE.de.md und LICENSE.sl.md im Programmordner und in jedem NuGet-Paket; siehe So installieren Sie den Datendienst.
  • Alle eigenen Bibliotheken signiert. Neben Programm, Paket und Installationsprogramm ist in einer Lieferung jetzt auch jede eigene Bibliothek (Wkl.*.dll) signiert, die Provider eingeschlossen.

2026-10-21 – Verwaltung kündigt keine Gruppierung mehr an (Vertrag unverändert)

  • $metadata der Verwaltung ohne Aggregation.ApplySupported. Die Verwaltung weist $apply ab, kündigte es aber an. Der ODBC-Treiber schickte deshalb MAX, SUM, COUNT(Spalte) und Gruppen – etwa aus DMax in Access – als Anfragen, die mit 400 scheiterten. Jetzt weist er sie selbst ab; DCount("*", …) zählt wie bisher. Was gezählt wird und wie der höchste Wert gelesen wird: Zählen, Höchstwert und Gruppieren.

2026-10-21 – Vorhandenes win-acme bei Let's Encrypt (Vertrag unverändert)

  • Ein vorhandenes win-acme bestellt und erneuert. Erneuert der Rechner schon mit einem anderen win-acme (ab Version 2.2.9), nutzt die Bestellung dieses, und seine Aufgabe bleibt; eine ältere Version bricht die Bestellung mit Meldung ab. Beim Entfernen geht die Aufgabe von win-acme nur mit, wenn sie das mitgebrachte win-acme startet. Siehe Installationspaket.

2026-10-21 – Anmeldung des Dienstkontos in SQL Server im Installationsprogramm (Vertrag unverändert)

  • Neuer Schritt “SQL Server” im Installationsprogramm. Es legt ein Skript für die Datenbankverwaltung in den Datenordner (Vorgabe) oder legt die Anmeldung des Dienstkontos und je Datenbank einen Benutzer gleich an, mit dem Windows-Konto der installierenden Person. Vorhandenes bleibt unverändert. Siehe So installieren Sie den Datendienst.
  • Neuer Befehl service-login für dasselbe nach der Installation, und setup-host –sql-server bzw. die Paket-Eigenschaften GW_SQL_SERVER, GW_SQL_DATABASES und GW_SQL_ROLES für die Softwareverteilung. Siehe Befehle.

2026-10-21 – Keine Kopfzeile Server (Vertrag unverändert)

2026-10-21 – Version der Anmelderegeln und nicht wirksame Dateiregeln (Vertrag unverändert)

  • RuleVersion in SignInRules. Jede gespeicherte Regel nennt die Version, die Anmeldeereignisse und explain-sign-in nennen; „Regel seitdem geändert“ ist damit ohne weiteren Aufruf erkennbar.
  • Neue Menge SignInFileRules. Sie zeigt Anmelderegeln, die noch in der Konfigurationsdatei stehen, mit Verwaltungsspeicher aber nicht gelten (InForce = false). Beschreibung unter Verwaltung.

2026-10-20 – Anmelderegeln nach Netzbetreiber, Programm und Zeitfenster (Vertrag unverändert)

  • Neue Bedingungen einer Anmelderegel. Operators/ExceptOperators (Netzbetreiber wie AS3320), Clients/ExceptClients (Programmart aus User-Agent, vom Client behauptet) und Hours/ExceptHours (Zeitfenster wie Mon-Fri 06:00-20:00); eine Ausnahme nimmt Operators, Clients und Hours. Beschreibung unter Nach Netzbetreiber, Programm und Zeit.
  • Eigene Netze nach Name. From und ExceptFrom einer Regel und From einer Ausnahme dürfen den Namen eines eigenen Netzes aus Gateway:SignInLog:Networks nennen.
  • Signale mit Verlässlichkeit. Das Anmeldeereignis nennt in Signals zusätzlich operator, client und je Signal trust (observed, claimed, verified). explain-sign-in nimmt je Herkunft operator, client und at.
  • Verwaltungsspeicher Schema 20.

2026-10-20 – Probemodus für Anmelderegeln (Vertrag unverändert)

  • Regel erproben. Eine Anmelderegel hat einen Modus: Enforce (Vorgabe) oder Report. Eine Regel in Probe wird bei jeder Anmeldung beurteilt, ändert aber keine Entscheidung; das Anmeldeereignis hält fest, was sie getan hätte. Verwaltungsspeicher Schema 19. Beschreibung unter Regel erproben.
  • Auswertung je Regel. Die neue Menge SignInRuleReports zählt je Regel in Probe und Version die Anmeldungen, die sie getroffen hätte, mit der Zahl der Personen und Herkünfte.
  • explain-sign-in zeigt Regeln in Probe getrennt unter tried.

2026-10-20 – Grundlage jeder Anmeldeentscheidung im Protokoll (Vertrag unverändert)

  • Entscheidende Regel im Anmeldeereignis. SignInEvents nennt in Rules die Anmelderegeln, nach denen entschieden wurde, mit Kennung und Version, auch eine Regel, die eine Ausnahme aufgehoben hat, und die Untergrenze der Verwaltung; Signals nennt Land und zweiten Faktor. Beschreibung unter Grundlage der Entscheidung.
  • Ablehnende Regel im Audit. AuditEntries nennt in SignInRule die Regel, die eine Anfrage abgewiesen hat; der Audit-Strom schreibt sie nach dem Grund.
  • Version in explain-sign-in. Die Erklärung nennt zu jeder Regel id und version, so dass sich ein früheres Ereignis mit der Regel von heute vergleichen lässt.

2026-10-20 – Provider und Verbindungseigenschaften in der Verwaltung (Vertrag unverändert)

  • Provider in der Verwaltung. Die Menge DataSources liest und schreibt Provider, ProviderVersion und ProviderOptions wie die Konfigurationsdatei (Verwaltungsspeicher Schema 18). Die neuen Mengen Providers und ProviderProperties zeigen die installierten Provider-Pakete und die Eigenschaften, die jeder für seine Verbindung beschreibt.
  • Verbindung als Eigenschaften. Statt einer Zeichenfolge nimmt DataSources die Verbindung als ConnectionProperties; der Provider baut und prüft daraus die Zeichenfolge. Gelesen erscheinen die Eigenschaften ohne Kennwort; ein beim Ändern fehlendes Kennwort bleibt erhalten. Beschreibung unter Verbindungseigenschaften eines Providers.
  • Verbindungstest mit Fehlerart. test-connection nennt bei einem Fehler die Nummer der Datenbank (number) und eine von der Sprache des Servers unabhängige Art (failure: Login, Database, Permission, Network, Timeout, Unreadable, Configuration, Other), siehe Verbindungstest und Dienstkonto.
  • Dienstkonto. Neuer Befehl GET /admin/v1/service-account: das Konto, unter dem Datenquellen mit Windows-Anmeldung sich an der Datenbank anmelden, wie es ein SQL Server auf demselben und auf einem anderen Rechner sieht. Die Installation beschreibt, was SQL Server für dieses Konto braucht.
  • Provider-Vertrag 1.3. Optionale Beschreibung der Verbindungseigenschaften und Fehlerart des Verbindungstests; ein Provider für Vertrag 1.2 lädt weiter. Der mitgelieferte SQL-Server-Provider hat die Version 1.2.0.
  • Korrektur Setup: Name der Installation. Das Setup-Programm gab den eingetragenen Namen der Installation nicht an das Installationspaket weiter; der Dienst erhielt stattdessen den Vorschlag „Datendienst (Rechnername)“, und die Authenticator-App zeigte diesen. Ab Setup 1.0.7 kommt der eingetragene Name an. Eine schon installierte Version korrigieren Sie in der Verwaltung mit der Einstellung installation_name (siehe Verwaltung); der neue Name gilt für danach eingerichtete zweite Faktoren.

2026-10-20 – Protokolldatei, Anmeldemuster über Monate, gespeicherte Befunde (Vertrag unverändert)

  • Eigene Protokolldatei. Anmelde- und Lastprotokoll liegen in einer Protokolldatei neben dem Verwaltungsspeicher (gateway-logs.db), begrenzt durch Gateway:Store:LogMaxMegabytes (Vorgabe 4 096 MB); die ältesten Einträge gehen zuerst. Beim ersten Start zieht der Dienst vorhandene Protokolle aus dem Speicher dorthin um (Speicher Schema 17). Personen stehen dort über ihre Kennung; eine Umbenennung behält die Geschichte.
  • Einzelereignisse ohne Altersgrenze. Gateway:SignInLog:EventDays löscht nichts mehr; es legt nur fest, wie weit SignInOrigins und SignInEvents ohne eigene Zeitangabe zurücklesen. SignInEvents liest Bedingungen auf Person, At und Id aus der Protokolldatei; die Grenze von 20 000 gilt je Abruf für das Passende.
  • Anmelderegeln mit Gedächtnis. Zehn Regeln vergleichen jede Anmeldung mit den 90 Tagen davor und speichern Befunde mit beständiger Id in der neuen Menge `SignInFindings`; „seit dem letzten Blick“ ist Id gt x. Ohne das Recht sign-in-events bleiben Person, Schlüssel und Vergleichswerte leer.
  • Meldung der Befunde. Befunde der Stufe act stehen als Warnung im Dienstprotokoll und gehen mit Gateway:SignInLog:Alerts:Recipients sofort als Mail hinaus, Befunde der Stufe ask einmal am Tag gesammelt. Neuer Abschnitt `Gateway:Mail`.
  • Anmeldeprofil. Neuer Befehl `sign-in-profile`: was für eine Person über 90, 180, 365 oder mehr Tage üblich ist.
  • Gespeicherte Lasthinweise. Neue Menge LoadFindings mit beständiger Id, stündlich aus den Hinweisen von LoadAdvice.
  • Sicherung. backup-store sichert die Protokolldatei mit (…-logs.db neben der Kopie des Speichers); die Antwort des HTTP-Befehls nennt zusätzlich logFile und logBytes.

2026-10-19 – Personen mit Spuren werden nur gesperrt (Vertrag unverändert)

  • Löschen einer Person mit Spuren abgelehnt. Hat eine Person einen persönlichen Schlüssel oder eine Sitzung, Einträge im Anmelde- oder Lastprotokoll oder selbst Änderungen geschrieben, lehnt DELETE auf Persons mit 422 ab; die Person lässt sich nur sperren (Enabled = false). So bleiben die Protokolle einer Person zuordenbar. Siehe Aufbewahrung und Löschen.

2026-10-19 – Anmelderegeln nach Land, Verwaltungsspeicher Schema 16 (Vertrag unverändert)

  • Regeln nach Land. Anmelderegeln nennen Länder (Countries, ExceptCountries, Ländercodes nach ISO 3166-1 alpha-2), etwa „Datenzugriff nur aus Deutschland“. Das Land liest der Dienst aus der Geodatenbank des Anmeldeprotokolls. Ein Land, das sich nicht feststellen lässt, liegt im Bereich der Regel; eigene Netze nehmen Sie über ihre Adressen aus. Siehe Anmelderichtlinie.
  • Befristete Ausnahmen. Exceptions befreit Anfragen, die alle Merkmale zugleich erfüllen (Personen, Windows-Gruppen, Länder, Netze), bis zu einem Ende in UTC – etwa eine Person zwei Wochen auch aus Thailand. Der Ablauf steht im Änderungsprotokoll (exception-lapsed).
  • Verwaltungsschnittstelle. Neue Mengen SignInRuleExceptions und SignInRuleExceptionItems, neue Merkmale country und except_country; save-sign-in-rule nimmt countries, exceptCountries und exceptions; explain-sign-in nennt das Land und die befreiende Ausnahme und nimmt je Herkunft ein Land an. Neuer Grund deniedByCountry im Anmeldeprotokoll.
  • Verwaltungsspeicher Schema 16. Der Dienst stellt einen Speicher beim ersten Start um und sichert ihn vorher.

2026-10-19 – Lastprotokoll, Verwaltungsspeicher Schema 15 (Vertrag unverändert)

  • Lastprotokoll. Der Dienst hält je Form einer Anfrage – der Anfrage ohne ihre Werte – fest, wie oft sie kam, wie lange sie im Dienst und in der Datenbank brauchte, wie viele Zeilen und Bytes sie lieferte und wie oft sie scheiterte. Neue Mengen LoadShapes, LoadHours, SlowRequests, LoadAdvice und, nur mit dem neuen Recht load-persons, LoadPersons. Einstellungen unter `Gateway:LoadLog`. Siehe So finden Sie heraus, was den Dienst und die Datenbank belastet.
  • Hinweise mit Abhilfe. LoadAdvice nennt Formen, die die Datenbank unabhängig von den Daten belasten: ganze Tabellen ohne Filter, Filter ohne Index, tiefes Blättern, teure Gesamtzahlen und Summen, teure eigene Anweisungen, sehr häufige automatische Aktualisierung.
  • Last für den Hersteller. export-load (Befehl der Verwaltung und am Server) schreibt Formen, Stundenwerte und Hinweise als JSON-Datei, ohne Personen, Herkunft und Werte.
  • Zuordnung in SQL Server. Selbst erzeugte und geprüfte Anweisungen tragen hinter dem ersten Schlüsselwort den Kommentar /* wkl:<Kennung der Form> */, sichtbar im Plancache, im Query Store und in Extended Events; die Verbindungen nennen sich Wkl.Data.Gateway, wenn die Verbindungszeichenfolge keinen eigenen Application Name setzt.
  • Provider-Vertrag 1.2, SQL-Server-Provider 1.1.0. Der Vertrag reicht die Kennung an den Provider weiter (ExecutionLimits.Marker) und liest die zuletzt erzeugte Anweisung zurück (IDataSession.LastStatementText). Beides ist eine Ergänzung; ein Provider für Vertrag 1.0 oder 1.1 läuft unverändert, nur ohne Kennzeichnung.
  • Verwaltungsspeicher Schema 15. Der Dienst stellt einen älteren Speicher beim ersten Start um; eine Sicherung entsteht wie bei jeder Umstellung.

2026-10-19 – Anmeldeprotokoll mit Herkunft, Verwaltungsspeicher Schema 14 (Vertrag unverändert)

  • Anmeldeprotokoll. Der Dienst hält jede Anmeldeentscheidung mit Verfahren, Ergebnis, Grund, Person und Herkunft im Verwaltungsspeicher fest und wertet sie aus: Verteilung nach Stunde und Wochentag in Serverzeit, Herkunft nach eigenem Netz, Land und Netzbetreiber, Hinweise auf Angriffsmuster. Neue Mengen SignInHours, SignInOrigins, SignInEvents, SignInAdvice; die Einzelereignisse nur mit dem neuen Recht sign-in-events. Siehe So prüfen Sie Anmeldemuster und Herkunft.
  • Geodatenbank ohne Verbindung nach außen. Der Dienst ortet Adressen mit Dateien auf dem Server (DB-IP Lite oder MaxMind GeoLite2). Er lädt sie selbst (update-geoip, auch regelmäßig), nimmt sie vom Client entgegen (upload-geoip) oder am Server (import-geoip). Neue Mengen GeoIpFiles, GeoIpSource, Befehl set-geoip-source, Einstellungen `Gateway:SignInLog`.
  • „Abgewiesen“ im Dienststatus ohne Herausforderungen. DeniedLastFiveMinutes zählte die Antwort 401 auf eine Anfrage ohne Anmeldedaten mit, mit der jede Windows-Anmeldung beginnt. Ein Betrieb mit Windows-Anmeldung zeigte dadurch dauernd Abweisungen, ohne dass etwas abgewiesen wurde.
  • Grund unprotected. Eine SQL-Anmeldung, ein Code des zweiten Faktors, eine Anfrage an die Verwaltung oder die Selbstbedienung über eine ungeschützte Verbindung trägt jetzt diesen Grund (vorher ohne Grund) und erscheint so im Anmeldeprotokoll.
  • Verwaltungsspeicher Schema 14. Der Dienst stellt einen älteren Speicher beim ersten Start um; eine Sicherung entsteht wie bei jeder Umstellung.

2026-10-18 – Wiederholschutz, Schreiben und Betrieb hinter einem Proxy (Vertrag unverändert)

  • Wiederholschutz unter umbenanntem Schlüsselkopf. Mit einem eigenen Gateway:Security:ApiKeyHeader unterschied der Dienst bei Idempotency-Key die Aufrufer nicht: Ein zweiter Aufrufer mit gleichem Idempotency-Key, gleicher Adresse und gleichem Rumpf konnte die gespeicherte Antwort eines anderen erhalten. Jetzt gehört jede gespeicherte Antwort zu ihrem Aufrufer.
  • Spalten nicht angebotener Typen nehmen keine Werte mehr an. sql_variant, hierarchyid, vector und CLR-Typen fehlen in $metadata, nahmen beim Schreiben aber Werte an. Jetzt antwortet der Dienst 400 wie für ein unbekanntes Feld.
  • SQL-Anmeldung mit Verwaltungsspeicher in jeder Reihenfolge einrichtbar. Der Dienst startet mit SqlLogin in AuthMode, auch bevor eine Datenquelle SQL-Anmeldungen zulässt und eine Zuordnung besteht; bis dahin warnt er im Protokoll und verweist auf die Verwaltung, und eine Anmeldung mit Name und Kennwort endet mit 401. Siehe SQL-Anmeldung einrichten.
  • Adressen in Antworten hinter einem Proxy. Von einem vertrauten Proxy übernimmt der Dienst X-Forwarded-Proto und X-Forwarded-Host für die absoluten Adressen seiner Antworten (Dienstdokument, Folgeseiten, Location, Einmal-Links); die IIS-Vorlage setzt beide Kopfzeilen. Siehe Hinter IIS oder einem Proxy.
  • Erster Administrator mit Windows-Konto. init-admin --windows ordnet das Konto jetzt der Verwaltungsregel zu. Vorher erhielt die Windows-Anmeldung keine Rechte; mit --no-key entstand ein Administrator, der sich nicht anmelden konnte, und admin-status zählte ihn trotzdem als arbeitsfähig. Ruhende Schlüssel auf Abruf zählen dort ebenfalls nicht mehr.
  • Zugang ändern. Läuft setup-host über einem bestehenden Verwaltungsspeicher, weist es darauf hin, dass die Anmelderegeln des neuen Zugangs dort nicht gelten. Ohne eingetragene Firmennetze lässt die Firewall-Regel nur noch das lokale Teilnetz zu statt jedes Netz.

2026-10-16 – Vollständige OData-Seiten und Schreiben neben Geodaten (Vertrag unverändert)

  • Ein Fenster ist nie größer als Limits:MaxRows (auch je Objekt). Vorher endete eine OData-Seite bei kleinerem MaxRows ohne @odata.nextLink und ohne Kennzeichen; Access, Excel und Power BI sahen einen Teil der Zeilen als das ganze Ergebnis.
  • Spalten nicht angebotener Typen (Geodaten, hierarchyid, sql_variant, json, vector, CLR-Typen) fehlen jetzt auch beim Lesen ohne Feldliste und beim Rücklesen nach dem Schreiben. Vorher antwortete das Schreiben in eine Tabelle mit einer geography-Spalte 503, obwohl der Satz gespeichert war, und die eigene Route ohne Feldliste lieferte sql_variant roh. Wer diese Werte über die eigene Route ohne Feldliste gelesen hat, erhält sie nicht mehr.

2026-10-16 – Dokumentation: neue Seiten und Berichtigungen (Vertrag unverändert)

Neu: Sicherheitsmodell und Vertrauensgrenzen, Normen und Spezifikationen. Berichtigt: Eine Person mit persönlichem Schlüssel ohne SQL-Anmeldung läuft auch an einem Alias mit Persons: Impersonate unter der Anmeldung des Alias (kein 403); wkl.person setzt der Dienst nur für persönliche Schlüssel und gewählte Identitäten; DenyImpersonate gilt nicht für die Anmeldung per HTTP Basic; über OData wird ein Zeitpunkt mit Versatz in UTC umgerechnet statt abgewiesen; 503 nach einer Schreibanfrage heißt „Ausgang unbekannt“; /health/ready antwortet auch ohne Alias 200. Das Verhalten des Dienstes ist unverändert.

2026-10-16 – Geprüfte Anweisungen (Vertrag unverändert)

Aufrufer ohne das Recht sql können an POST /api/v1/cf/{alias}/sql.json Anweisungen schicken, die der Dienst prüft: Verbünde, Unterabfragen, UNION, Funktionen, CASE, LIKE-Muster mit _ und […], Mengenänderungen und der Aufruf einer Prozedur – über genau die Objekte und mit genau den Methoden, die ihre Regeln freigeben. Mehrere Anweisungen in einem Stapel sind erlaubt; jede wird für sich geprüft. Damit laufen über den ODBC-Treiber die Abfragen, die Access über verknüpfte Tabellen schickt, auch ohne das Recht sql. Neu in der Konfiguration: AllowCheckedStatements je Datenquelle (Vorgabe true); der Verwaltungsspeicher stellt beim Start auf Schemaversion 13 um und übernimmt die Vorgabe für alle vorhandenen Datenquellen. Das Schemadokument nennt die Adresse (Store.PassThrough) jetzt auch diesen Aufrufern. Provider-Vertrag 1.1: IDataSource.CheckStatement, Fähigkeit CheckedStatements; der mitgelieferte Provider sqlserver verlangt Vertrag 1.1.

An derselben Adresse neu: Ausgabe- und Rückgabeparameter (outputs in Anfrage und Antwort), alle Ergebnismengen (results nach der ersten) und das Beschreiben einer Anweisung ohne sie auszuführen ("describe": true), siehe Ausgabeparameter, mehrere Ergebnismengen, Beschreiben. Antworten ohne diese Felder bleiben unverändert. Provider-Vertrag 1.1: Fähigkeiten StatementOutputs und StatementDescription.

2026-10-16 – Datenbanken über Provider (Vertrag unverändert)

Der Dienst bindet Datenbanken über nachladbare Provider an. Mitgeliefert ist der Provider sqlserver (Ordner providers/sqlserver/1.0.0 neben dem Programm); Antworten an Aufrufer bleiben unverändert. Neu in der Konfiguration: Provider, ProviderVersion, ProviderOptions je Datenquelle und Gateway:Providers:Path, siehe Konfiguration des Dienstes (Referenz). Dialect: mssql gilt weiter. Fehlt einer Datenquelle eine Fähigkeit, weist der Dienst die Anfrage mit 400 ab, bevor er die Datenbank anspricht.

2026-10-15 – Dokumentation neu aufgeteilt (Vertrag unverändert)

Das Administrator-Handbuch der Verwaltungsanwendung und die Referenz der VBA-Klasse DbGwClient gehören jetzt zur Dokumentation der Verwaltungsanwendung (eigenes Repository Wkl.Data.Gateway.Access). Die Aufgaben am Server – Installation, erster Administrator, Sicherung, Hauptschlüssel, Notfallzugang – stehen hier im neuen Bereich Betrieb.

2026-10-15 – Verwaltungsspeicher, Schema 12 (Vertrag unverändert)

  • Einladungen per Mail: Mailvorlagen in der Menge MailTemplates (drei eingebaut), Mail-Adresse an der Person (Email) und Einmal-Links per Mail ("delivery": "mail" bei issue-key und enroll-totp), die einen Neustart überdauern und kein Geheimnis vorhalten; Einstellung mail_link_hours, Konfiguration Gateway:Store:MailLinkHours. Siehe Einmal-Link per Mail.
  • Ein Speicher älterer Version wird beim Start umgestellt (Sicherung .v11-…bak vorher).

2026-10-14 – Vertrag 0.6.0

  • Neue Fehlerart DATABASE_UNREADABLE (503): SQL Server ist erreichbar, kann die Datenbank des Alias aber nicht lesen (Laufwerk verloren, offline, verdächtig, in Wiederherstellung). Gilt nicht als vorübergehend. Vorher lautete die Antwort UNAVAILABLE; ein Aufrufer, der den Code nicht kennt, liest weiter 503.

2026-10-13 – Vertrag 0.5.0

  • Fehlerantworten tragen die Meldungen von SQL Server (details: Nummer, SQLSTATE, Schwere, Text, released). Nummer, SQLSTATE und Schwere kommen wie über eine direkte Verbindung immer an; den Text hält der Dienst zurück (released: false), wenn er ein Objekt nennt, das der Aufrufer nicht erreicht, oder wenn er unter der Anmeldung der Datenquelle einen Datenwert zitieren kann (etwa ein doppelter Schlüssel oder ein zu langer Wert). Siehe Fehlerform.

2026-10-07 – Vertrag 0.4.0

  • Filter können ein Feld mit einem anderen Feld vergleichen (GatewayFilter.FieldComparison).

2026-09-24 – Vertrag 0.3.0

  • Neue Fehlerart TIMEOUT (504): Die Anweisung überschritt das Zeitlimit des Dienstes. Vorher lautete die Antwort UNAVAILABLE (503).

2026-09-23 – Vertrag 0.2.0

  • Eine Mengenprüfung darf bis zu 20 000 Werte tragen (vorher 1 000).

2026-08-03 – Vertrag 0.1.0

  • Erste Version.
de/wiki/data-conectivity/database-gateway/changelog.txt · Last modified: by Wolfgang van der Stille