Ä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.keyundwkl.rolejetzt für jede Anfrage schreibgeschütztwkl.client(Aufrufer),wkl.method(Anmeldeart),wkl.alias,wkl.request(Korrelation wie im Zugriffsprotokoll) undwkl.rules(alle Regeln des Aufrufers), dazuwkl.rule(die Zugriffsregel, die die Ressource freigibt),wkl.session(Sitzung des zweiten Faktors) undwkl.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_idals 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
.licaus 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.dbund die Protokolldatei alsdbgwsvc-logs.dban, bishergateway.dbundgateway-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-folderund die Sicherung aus der Verwaltungsanwendung benennen die Kopie nach dem Speicher, alsodbgwsvc-<Zeitpunkt>.db; Sicherungen mit dem früheren Namen bleiben gültig. - Hilfsskripte im Programmordner:
dbgwsvc-Erster-Administrator.cmdunddbgwsvc-Zertifikat-LetsEncrypt.cmd, bisher ohnedbgwsvc-. - Dienst WKL Database Update: Das Programm heißt
dbgwupd.exe, bisherWkl.Data.Update.exe; Befehle lauten etwadbgwupd.exe status kunden. Der Windows-Dienst behält seinen NamenWkl.Data.Updateund damit sein KontoNT 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:PerCallerjeWindowSeconds, Vorgabe 1 200 je Minute, also 20 je Sekunde), statt am Ende eines festen Zeitraums auf einmal; nach einer Pause sind bis zuRateLimit:BurstAnfragen auf einmal frei (Vorgabe 600). Ein Aufrufer, der weiterarbeitet, wird auf die Rate gebremst statt bis zum Ende der Minute abgewiesen. Jede429der Grenze nennt inRetry-After, wann die nächste Anfrage durchgeht; der ODBC-Treiber ab 0.8.2 wartet so lange und liest weiter. - Audit:
Gateway:AuditLog:Daysist 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) undlog_max_megabytes(64–65 536 MB) der MengeSettingsgehenGateway:AuditLog:DaysundGateway:Store:LogMaxMegabytesvor und wirken ohne Neustart; ein Wert außerhalb der Grenzen wird mit einer Meldung abgewiesen.ServiceStatusnennt neuLogMaxMegabytes. Der Verwaltungsspeicher hat damit die Schemaversion 27; er stellt sich beim Start selbst um. GET /odata/v4ohne 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ßtdbgwsvc.exe(mitdbgwsvc.dll) stattWkl.Data.Gateway.exe; alle Befehle rufen Sie damit auf, etwadbgwsvc.exe init-admin. Die Aktualisierung ersetzt die alte Datei und den Pfad im Dienst. Name des Dienstes, Dienstkonto, Datenordner und Ereignisquelle bleibenWkl.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
codeauswerten, 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=nbei einer Leseanfrage ohne$top: Seiten bisMaxTop, bestätigt inPreference-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
AuditEntriesmitReason 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
ServiceStatusder Verwaltung nennt, wie weit die Protokolle zurückreichen:AuditDays(Aufbewahrung des Zugriffsprotokolls),AuditOldestAt(ältester aufbewahrter Zugriff) undSignInEventDays(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/8einer Anmelderegel oder ein Pfad), lässt sich jetzt über seine Adresse lesen, ändern und entfernen. Der Schrägstrich kommt kodiert als%2Fan; der Dienst fand den Eintrag bisher nicht und antwortete mit404, was Access als Schreibkonflikt meldete (Fehler 3197). Das gilt für die Verwaltung und für die Datenoberfläche. Ein Wert, der die Zeichen%2Fselbst 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,PersoninPersonRules,PersonalKeysundSessionTokens,DataSourceundRoleder 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)
Personshat die FelderLastSignInAtundLastSignInMethod(letzte erfolgreiche Anmeldung, nur lesbar) undLeftAt(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)
SessionTokenshat die FelderEndReasonundEndedBy: 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)
AuditEntrieshat zwei neue Felder:Targetnennt, was eine Anfrage angesprochen hat (Pfad und Abfrage, etwa…/Vertraege(17)oder…?$filter=Nr eq 17),AccessRuledie Zugriffsregel, die einen beantworteten Zugriff auf eine Tabelle oder Sicht erlaubt hat, mit Version.ClientRuleszeigt die heutige Version jeder Regel inRuleVersion. 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.jsonin 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 alsWkl.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 mitfailure: Networkan (“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 dannLogin(18456) oderDatabase(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:DaysTage lang (Vorgabe 90).AuditEntriesliest 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 mitGateway:Store:ChangeLog; Anmelde- und Lastprotokoll wie bisher mitGateway:SignInLog:EnabledundGateway: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=:1033auf Englisch, mitTRANSFORMS=:1060auf 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 inlabel(leer bzw. der wiederholte Name);namebleibt 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,DATETRUNCundDATE_BUCKETan (DATEPART(month, Datum),DATEADD(day, 30, Datum)). Bisher wies der Dienst sie mit403ab (“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,geographyundgeometrystehen jetzt im Schemadokument und in jedem Leseergebnis, als Binärwert mit den gespeicherten Bytes – denselben, die ODBC Driver 18 liefert.sql_variantsteht als Text in der Form seines Grundtyps. Bisher fehlten diese Spalten, und eine eigene Anweisung mit einer solchen Spalte endete mit503. Siehe Zeitpunkte, Zahlen und Namen.- OData: Ein Vergleich in
$filteroder 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 mit400ab. Bisher kam422von der Datenbank, beisql_variantstill eine leere Antwort. - Eigene Anweisungen:
columnsnennt 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. Ohneconnection.secretmeldet er sich mit seinem eigenen Windows-Konto an. Verwaltet wird er auf dem Server mitWkl.Data.Update.exein einer Eingabeaufforderung als Administrator; siehe Dienst WKL Database Update (Referenz). Mails des Meldewegsemailverschickt er über den Mailserver, denmailin 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 UTF8geschrieben) 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 als503statt401an, 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
429statt503.
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 mit403und dem CodeFORBIDDENab. Er richtet sich nach der KopfzeileSec-Fetch-Sitedes Browsers; fehlt sie, mussOriginSchema, 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/jsontragen (hochgeladene Dateienapplication/octet-stream); sonst antwortet der Dienst mit400und dem CodeBAD_REQUEST. Ausgenommen sind die Abfrageoptionen in$queryalstext/plain. Treiber, .NET-Client und Verwaltungsanwendung senden schon so; Skripte, die einen Rumpf ohne Typ senden (etwacurl -dohne-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
UpdateSettingsgeä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,NotifyEmailToinUpdateSettings); Verwaltungsspeicher Schemaversion 23. - Das Modul räumt nach jeder Sicherung alte Sicherungen derselben Datenbank auf (
BackupKeepCount,BackupKeepDaysinUpdateSettings), wenn es den Sicherungsordner erreicht (Aufbewahrung der Sicherungen); Verwaltungsspeicher Schemaversion 24. setup-host(Installationspaket) legt im Datenordner den Ordnerupdatesan, den nur Administratoren und System ändern und das Dienstkonto liest, und trägt ihn alsGateway:Updates:Folderein.
2026-10-28 – Hinter IIS keine Windows-Anmeldung (Vertrag unverändert)
setup-host --mode iis(Installationspaket mitGW_MODE=iis) setztAuthModeaufPersonalKey. 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
WindowsinAuthModeund nenntTrustedProxieseinen 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--logindie SQL-Anmeldung und schaltete die Person ohne--disabledwieder ein. Neu sind--no-login,--no-rulesund--enabled; ohne--rulebleiben die Regeln.save-personweist 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 mit422.init-adminnimmt nur eine Regel, die die Verwaltung mit jeder ihrer Methoden ändern darf, undadmin-statuszählt nur solche Personen als Administratoren.
2026-10-28 – Dezimalzahlen mit bis zu 38 Stellen (Vertrag unverändert)
- Ein Wert einer
decimal- odernumeric-Spalte mit mehr als 28 Stellen, bis zu den 38 vondecimal(38, s), wird gelesen und geschrieben, mit jeder Stelle. Bisher scheiterte das Lesen einer solchen Zeile mit503, und das Schreiben wies den Wert mit400ab; 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 alsfloatgebunden.
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 (failureNetworkstattDatabase). 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.Gatewaybleibt: 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 mitGateway: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.txtmit den Fremdkomponenten und ihren Lizenzen, die Hinweise der .NET-Laufzeiten sowieSECURITY.md(Schwachstellen melden, unterstützte Versionen) undMANUFACTURER.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.mdundLICENSE.sl.mdim 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)
$metadatader Verwaltung ohneAggregation.ApplySupported. Die Verwaltung weist$applyab, kündigte es aber an. Der ODBC-Treiber schickte deshalbMAX,SUM,COUNT(Spalte)und Gruppen – etwa ausDMaxin Access – als Anfragen, die mit400scheiterten. 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)
- Antworten ohne
Server: Kestrel. Der Dienst nennt seine Server-Software nicht mehr. Hinter IIS entfernt eine Einstellung von IIS dessen eigene Kopfzeile, siehe So betreiben Sie den Dienst hinter IIS oder einem Proxy.
2026-10-21 – Version der Anmelderegeln und nicht wirksame Dateiregeln (Vertrag unverändert)
RuleVersioninSignInRules. Jede gespeicherte Regel nennt die Version, die Anmeldeereignisse undexplain-sign-innennen; „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 wieAS3320),Clients/ExceptClients(Programmart ausUser-Agent, vom Client behauptet) undHours/ExceptHours(Zeitfenster wieMon-Fri 06:00-20:00); eine Ausnahme nimmtOperators,ClientsundHours. Beschreibung unter Nach Netzbetreiber, Programm und Zeit. - Eigene Netze nach Name.
FromundExceptFromeiner Regel undFromeiner Ausnahme dürfen den Namen eines eigenen Netzes ausGateway:SignInLog:Networksnennen. - Signale mit Verlässlichkeit. Das Anmeldeereignis nennt in
Signalszusätzlichoperator,clientund je Signaltrust(observed,claimed,verified).explain-sign-innimmt je Herkunftoperator,clientundat. - Verwaltungsspeicher Schema 20.
2026-10-20 – Probemodus für Anmelderegeln (Vertrag unverändert)
- Regel erproben. Eine Anmelderegel hat einen Modus:
Enforce(Vorgabe) oderReport. 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
SignInRuleReportszählt je Regel in Probe und Version die Anmeldungen, die sie getroffen hätte, mit der Zahl der Personen und Herkünfte. explain-sign-inzeigt Regeln in Probe getrennt untertried.
2026-10-20 – Grundlage jeder Anmeldeentscheidung im Protokoll (Vertrag unverändert)
- Entscheidende Regel im Anmeldeereignis.
SignInEventsnennt inRulesdie Anmelderegeln, nach denen entschieden wurde, mit Kennung und Version, auch eine Regel, die eine Ausnahme aufgehoben hat, und die Untergrenze der Verwaltung;Signalsnennt Land und zweiten Faktor. Beschreibung unter Grundlage der Entscheidung. - Ablehnende Regel im Audit.
AuditEntriesnennt inSignInRuledie 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 Regelidundversion, 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
DataSourcesliest und schreibtProvider,ProviderVersionundProviderOptionswie die Konfigurationsdatei (Verwaltungsspeicher Schema 18). Die neuen MengenProvidersundProviderPropertieszeigen die installierten Provider-Pakete und die Eigenschaften, die jeder für seine Verbindung beschreibt. - Verbindung als Eigenschaften. Statt einer Zeichenfolge nimmt
DataSourcesdie Verbindung alsConnectionProperties; 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-connectionnennt 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 durchGateway: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:EventDayslöscht nichts mehr; es legt nur fest, wie weitSignInOriginsundSignInEventsohne eigene Zeitangabe zurücklesen.SignInEventsliest Bedingungen aufPerson,AtundIdaus 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
Idin der neuen Menge `SignInFindings`; „seit dem letzten Blick“ istId gt x. Ohne das Rechtsign-in-eventsbleiben Person, Schlüssel und Vergleichswerte leer. - Meldung der Befunde. Befunde der Stufe
actstehen als Warnung im Dienstprotokoll und gehen mitGateway:SignInLog:Alerts:Recipientssofort als Mail hinaus, Befunde der Stufeaskeinmal 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
LoadFindingsmit beständigerId, stündlich aus den Hinweisen vonLoadAdvice. - Sicherung.
backup-storesichert die Protokolldatei mit (…-logs.dbneben der Kopie des Speichers); die Antwort des HTTP-Befehls nennt zusätzlichlogFileundlogBytes.
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
DELETEaufPersonsmit422ab; 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.
Exceptionsbefreit 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
SignInRuleExceptionsundSignInRuleExceptionItems, neue Merkmalecountryundexcept_country;save-sign-in-rulenimmtcountries,exceptCountriesundexceptions;explain-sign-innennt das Land und die befreiende Ausnahme und nimmt je Herkunft ein Land an. Neuer GrunddeniedByCountryim 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,LoadAdviceund, nur mit dem neuen Rechtload-persons,LoadPersons. Einstellungen unter `Gateway:LoadLog`. Siehe So finden Sie heraus, was den Dienst und die Datenbank belastet. - Hinweise mit Abhilfe.
LoadAdvicenennt 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 sichWkl.Data.Gateway, wenn die Verbindungszeichenfolge keinen eigenenApplication Namesetzt. - 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 Rechtsign-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 MengenGeoIpFiles,GeoIpSource, Befehlset-geoip-source, Einstellungen `Gateway:SignInLog`. - „Abgewiesen“ im Dienststatus ohne Herausforderungen.
DeniedLastFiveMinuteszählte die Antwort401auf 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:ApiKeyHeaderunterschied der Dienst beiIdempotency-Keydie Aufrufer nicht: Ein zweiter Aufrufer mit gleichemIdempotency-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,vectorund CLR-Typen fehlen in$metadata, nahmen beim Schreiben aber Werte an. Jetzt antwortet der Dienst400wie für ein unbekanntes Feld. - SQL-Anmeldung mit Verwaltungsspeicher in jeder Reihenfolge einrichtbar. Der Dienst startet mit
SqlLogininAuthMode, 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 mit401. Siehe SQL-Anmeldung einrichten. - Adressen in Antworten hinter einem Proxy. Von einem vertrauten Proxy übernimmt der Dienst
X-Forwarded-ProtoundX-Forwarded-Hostfü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 --windowsordnet das Konto jetzt der Verwaltungsregel zu. Vorher erhielt die Windows-Anmeldung keine Rechte; mit--no-keyentstand ein Administrator, der sich nicht anmelden konnte, undadmin-statuszä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 kleineremMaxRowsohne@odata.nextLinkund 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 einergeography-Spalte503, obwohl der Satz gespeichert war, und die eigene Route ohne Feldliste liefertesql_variantroh. 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"beiissue-keyundenroll-totp), die einen Neustart überdauern und kein Geheimnis vorhalten; Einstellungmail_link_hours, KonfigurationGateway:Store:MailLinkHours. Siehe Einmal-Link per Mail. - Ein Speicher älterer Version wird beim Start umgestellt (Sicherung
.v11-…bakvorher).
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 AntwortUNAVAILABLE; 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 AntwortUNAVAILABLE(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.