Datenbank-Zugriff
Verbindung zur Datenbank
Abschnitt betitelt „Verbindung zur Datenbank“Standardmässig verbindet sich der Interface Client per klassischem SQL-Server-Login (Benutzername/Passwort):
jdbcurl: "jdbc:sqlserver://<server>;database=<db>;user=<user>;password=<passwort>;encrypt=true;trustServerCertificate=true;"Zugriff auf eine Azure SQL Datenbank via Azure Active Directory (Entra ID)
Abschnitt betitelt „Zugriff auf eine Azure SQL Datenbank via Azure Active Directory (Entra ID)“Läuft deine Zieldatenbank als Azure SQL Database, Azure SQL Managed Instance oder als SQL Server 2022+ mit Azure-Arc-Registrierung, kann sich der Interface Client statt mit einem klassischen SQL-Login auch über eine Azure-AD-App-Registrierung (Service Principal) authentifizieren. Für einen reinen on-premises SQL Server ohne Azure-Arc-Registrierung steht diese Option nicht zur Verfügung.
Passe dazu die jdbcurl in deiner Konfigurationsdatei wie folgt an:
jdbcurl: "jdbc:sqlserver://<server>.database.windows.net:1433;database=<db>;authentication=ActiveDirectoryServicePrincipal;user=<Application-Client-ID>;password=<Client-Secret>;encrypt=true;trustServerCertificate=false;"user: die Application (Client) ID deiner App-Registrierungpassword: das Client Secret deiner App-Registrierung
Voraussetzungen auf der Datenbank
Abschnitt betitelt „Voraussetzungen auf der Datenbank“Damit die Authentifizierung funktioniert, sind zwei einmalige Schritte in deiner Azure-Umgebung nötig:
- Auf dem Azure SQL Server muss ein Microsoft Entra ID Administrator hinterlegt sein.
- In der Zieldatenbank muss die App-Registrierung als externer Benutzer angelegt und mit den nötigen Rechten versehen werden:
CREATE USER [<Anzeigename-der-App-Registrierung>] FROM EXTERNAL PROVIDER;ALTER ROLE db_datareader ADD MEMBER [<Anzeigename-der-App-Registrierung>];ALTER ROLE db_datawriter ADD MEMBER [<Anzeigename-der-App-Registrierung>];db_datareader/db_datawriter reichen zum Lesen und Schreiben, aber nicht für TRUNCATE TABLE, das der Interface Client vor jedem Download auf den Zieltabellen ausführt. Dafür braucht es zusätzlich ALTER-Rechte, entweder gezielt pro Tabelle oder pauschal über eine Serverrolle:
Gezielt pro Tabelle (empfohlen, minimale Rechte):
GRANT ALTER ON [e_period] TO [<Anzeigename-der-App-Registrierung>];Muss für jede Tabelle wiederholt werden, die der Interface Client truncatet.
Alternativ, pauschal über db_ddladmin (einfacher zu pflegen, dafür weitreichender):
ALTER ROLE db_ddladmin ADD MEMBER [<Anzeigename-der-App-Registrierung>];Das deckt automatisch alle aktuellen und künftigen Tabellen ab, gibt der App-Registrierung aber generell DDL-Rechte in der Datenbank.