---
title: "Connecter Azure SQL et Synapse"
description: "Connectez Datarelix à Azure SQL Database ou à Azure Synapse Analytics en lecture seule, avec les modes d’authentification, le pare-feu et les rôles à accorder."
canonical: https://docs.datarelix.ai/fr/guides/connections/azure-sql/
---

# Connecter Azure SQL et Synapse

Datarelix se connecte à Azure SQL Database et à Azure Synapse Analytics via un service de requêtes en lecture seule qui utilise le [ODBC Driver 18 for SQL Server](https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server). Les deux variantes de T-SQL partagent le même connecteur.

## Types de pools Synapse

Synapse expose deux surfaces SQL, dont les modèles d'authentification diffèrent :

| Type de pool | Comment l'accès est accordé |
|-----------|----------------------|
| **Dedicated SQL pool** (pool dédié) | Comme Azure SQL Database — nécessite un utilisateur de base de données contenu (`CREATE USER ... FROM EXTERNAL PROVIDER`) |
| **Serverless SQL pool** (pool serverless) | [Rôles RBAC Synapse](https://learn.microsoft.com/en-us/azure/synapse-analytics/security/how-to-manage-synapse-rbac-role-assignments) attribués dans Synapse Studio — aucune commande SQL nécessaire |

Lorsque les étapes de configuration ci-dessous diffèrent selon le type de pool, un encadré signale la différence.

## Prérequis

- Une base Azure SQL Database, un pool SQL dédié Synapse ou un pool SQL serverless Synapse.
- Un utilisateur SQL (pour l'authentification par mot de passe) ou un principal Entra (pour l'authentification Entra) disposant au minimum de `SELECT` sur les schémas et les tables que vous voulez analyser.
- Pare-feu : autorisez les adresses IP de sortie de Datarelix dans le panneau **Networking → Public access** du serveur SQL (ou utilisez un Private Endpoint). Voir les [règles de pare-feu Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/database/firewall-configure).

## Modes d'authentification

### Nom d'utilisateur et mot de passe

Authentification SQL classique. Le nom d'utilisateur et le mot de passe sont transmis au pilote ODBC ; le mot de passe est stocké chiffré. Pratique pour les comptes de service de secours.

**Configuration — créer un utilisateur SQL en lecture seule**

Connectez-vous en tant qu'administrateur du serveur et exécutez :

```sql
CREATE LOGIN datarelix_reader WITH PASSWORD = 'choose-a-strong-password';
USE your_db;
CREATE USER datarelix_reader FOR LOGIN datarelix_reader;
ALTER ROLE db_datareader ADD MEMBER datarelix_reader;
```

Cela accorde un accès en lecture seule via le rôle de base de données fixe [`db_datareader`](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles).

**Où trouver vos identifiants**

| Champ | Où le trouver |
|-------|----------------|
| Host (hôte) | Portail Azure → votre serveur SQL → **Overview** → Server name (par ex. `yourserver.database.windows.net`) |
| Port | `1433` (par défaut) |
| Database (base de données) | Le nom de la base de données |
| Username (nom d'utilisateur) | Le login créé ci-dessus |
| Password (mot de passe) | Le mot de passe défini dans `CREATE LOGIN` |

**À saisir**

```ini
Host:            yourserver.database.windows.net
Port:            1433
Database:        your_db
Allowed schema:  dbo
Username:        datarelix_reader
Password:        ••••••••
```

---

### Chaîne de connexion

Collez une chaîne de connexion ODBC. Pratique si vous en avez déjà une, issue du portail Azure ou de votre outil de gestion des connexions.

**Où trouver votre chaîne de connexion**

Portail Azure → votre base Azure SQL Database → **Connection strings** → onglet **ODBC**. Copiez-la et remplacez `{your_password}` par le mot de passe réel.

**À saisir**

```
Driver={ODBC Driver 18 for SQL Server};Server=tcp:yourserver.database.windows.net,1433;Database=your_db;Uid=datarelix_reader;Pwd=your-password;Encrypt=yes;TrustServerCertificate=no
```

---

### Entra OBO

La connexion hérite de l'identité Entra de **l'utilisateur actuellement connecté**. Son jeton bearer est échangé, via le flux OAuth On-Behalf-Of, contre un jeton limité à `https://database.windows.net`, que le pilote ODBC utilise directement. Aucun mot de passe n'est stocké. C'est le meilleur choix pour des analystes interactifs, quand vous voulez une attribution d'audit par utilisateur côté base de données.

Pour le contexte, voir [l'authentification Microsoft Entra pour Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/database/authentication-aad-overview) et le [flux OAuth 2.0 On-Behalf-Of](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-on-behalf-of-flow).

**Configuration**

1. Dans votre base Azure SQL Database, [associez vos utilisateurs Entra à des rôles de base de données](https://learn.microsoft.com/en-us/azure/azure-sql/database/authentication-aad-configure). Connectez-vous en tant qu'administrateur Entra et exécutez :
   ```sql
   CREATE USER [user@yourtenant.onmicrosoft.com] FROM EXTERNAL PROVIDER;
   ALTER ROLE db_datareader ADD MEMBER [user@yourtenant.onmicrosoft.com];
   ```
   Ou, pour un groupe ou un principal de service :
   ```sql
   CREATE USER [YourEntraGroupName] FROM EXTERNAL PROVIDER;
   ALTER ROLE db_datareader ADD MEMBER [YourEntraGroupName];
   ```

2. L'inscription d'application Entra de Datarelix doit avoir `https://database.windows.net/user_impersonation` configuré comme autorisation déléguée. Contactez votre administrateur si votre locataire (tenant) exige un consentement administrateur pour cela.

**Où trouver vos identifiants**

Aucun identifiant supplémentaire à saisir — la connexion utilise automatiquement l'identité de l'utilisateur connecté.

**À saisir**

```ini
Host:            yourserver.database.windows.net
Port:            1433
Database:        your_db
Allowed schema:  dbo
Auth mode:       Entra OBO
```

---

### Principal de service — secret client

Une inscription d'application Azure AD s'authentifie avec un ID client et un secret client. Adapté aux charges de travail sans intervention humaine. Le secret client est stocké chiffré.

**Configuration**

1. Dans le portail Azure, [inscrivez une application](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app) dans Microsoft Entra ID. Donnez-lui un nom (par ex. `datarelix-sql-reader`).
2. Sous **Certificates & secrets → Client secrets**, [ajoutez un secret client](https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials). Copiez la valeur (**Value**) immédiatement — elle n'est affichée qu'une seule fois.
3. Copiez l'**Application (client) ID** depuis la page Overview de l'application.
4. Copiez votre **Directory (tenant) ID** depuis la même page Overview.
5. Accordez à l'application un accès en lecture — la méthode dépend du type de pool :

   **Azure SQL Database ou pool SQL dédié Synapse** — connectez-vous en tant qu'administrateur Entra et exécutez :
   ```sql
   CREATE USER [datarelix-sql-reader] FROM EXTERNAL PROVIDER;
   ALTER ROLE db_datareader ADD MEMBER [datarelix-sql-reader];
   ```

   **Pool SQL serverless Synapse** — ignorez l'étape SQL. Dans [Synapse Studio](https://web.azuresynapse.net), allez dans **Manage → Access control → Add role assignment** et attribuez au principal de service le rôle **Synapse SQL Administrator** (ou un [rôle RBAC Synapse personnalisé](https://learn.microsoft.com/en-us/azure/synapse-analytics/security/synapse-workspace-synapse-rbac-roles) limité au pool serverless). Aucune commande `CREATE USER` n'est nécessaire.

**Où trouver vos identifiants**

| Champ | Où le trouver |
|-------|----------------|
| Tenant ID | Azure AD → votre inscription d'application → **Overview** → Directory (tenant) ID |
| Client ID | Azure AD → votre inscription d'application → **Overview** → Application (client) ID |
| Client secret | Azure AD → votre inscription d'application → **Certificates & secrets** → la valeur du secret copiée à la création |

**À saisir**

```ini
Host:            yourserver.database.windows.net
Port:            1433
Database:        your_db
Allowed schema:  dbo
Auth mode:       Service Principal (secret)
Tenant ID:       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Client ID:       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Client secret:   ••••••••
```

---

### Principal de service — certificat

L'inscription d'application s'authentifie avec un certificat (certificat public téléversé dans Entra, clé privée stockée sur la connexion). Même cas d'usage que la variante par secret, mais avec un identifiant à durée de vie plus longue et plus difficile à exfiltrer.

**Configuration**

1. Générez une paire de clés avec certificat :
   ```bash
   openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -nodes -days 365 \
     -subj "/CN=datarelix-sql-reader"
   ```
2. Dans votre [inscription d'application](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app) → **Certificates & secrets → Certificates**, [téléversez `cert.pem`](https://learn.microsoft.com/en-us/entra/identity-platform/how-to-add-credentials) (le certificat public). Azure affiche l'empreinte (thumbprint) après le téléversement.
3. Accordez à l'application un accès en lecture par la même méthode que la variante par secret ci-dessus — `CREATE USER` / `ALTER ROLE` pour Azure SQL et les pools dédiés ; attribution d'un rôle RBAC Synapse dans Synapse Studio pour les pools serverless.

**Où trouver vos identifiants**

| Champ | Où le trouver |
|-------|----------------|
| Tenant ID | Azure AD → inscription d'application → **Overview** → Directory (tenant) ID |
| Client ID | Azure AD → inscription d'application → **Overview** → Application (client) ID |
| Certificate thumbprint (empreinte) | Azure AD → inscription d'application → **Certificates & secrets → Certificates** → chaîne hexadécimale de 40 caractères affichée après le téléversement |
| Certificate PEM | Le fichier `key.pem` que vous avez généré — collez le bloc complet `-----BEGIN PRIVATE KEY-----` … `-----END PRIVATE KEY-----` |

**À saisir**

```ini
Host:                   yourserver.database.windows.net
Port:                   1433
Database:               your_db
Allowed schema:         dbo
Auth mode:              Service Principal (certificate)
Tenant ID:              xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Client ID:              xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Certificate thumbprint: AABBCCDDEEFF...
Certificate PEM:        -----BEGIN PRIVATE KEY-----
                        ...
                        -----END PRIVATE KEY-----
```

---

## Sémantique de la portée

Le champ **Allowed schema** (schéma autorisé) limite l'introspection et les requêtes à un seul schéma. Valeur par défaut : `dbo`. T-SQL utilise la qualification `[schema].[table]`.

Pour analyser plusieurs schémas, créez une connexion par schéma.

## Découverte

Entièrement prise en charge. L'introspection parcourt `sys.tables`, `sys.columns`, `sys.foreign_keys` et `sys.key_constraints` pour faire remonter les tables, les colonnes, les clés primaires et les clés étrangères.

## Limites

- Aucune requête d'écriture ni DDL — le validateur rejette `INSERT/UPDATE/DELETE/MERGE/CREATE/ALTER/DROP/GRANT/REVOKE/TRUNCATE`.
- Application de `TOP` côté serveur : le validateur réécrit le `SELECT` dans l'arbre syntaxique pour ajouter `TOP <row_limit>` lorsqu'il est absent.
- Les fonctionnalités propres à Synapse (tables externes PolyBase, `COPY INTO`) ne sont pas bloquées par le validateur, mais l'introspection traite les tables externes comme des tables ordinaires.

## Dépannage

| Symptôme | Cause probable | Solution |
|---------|--------------|-----|
| `Login failed for user` | Identifiants SQL incorrects ou pare-feu | Vérifiez **Networking** sur le serveur Azure SQL → autorisez les adresses IP de sortie de Datarelix. |
| `Could not open a connection to SQL Server` | Incompatibilité TLS ou de pilote | Vérifiez que le ODBC Driver 18 est bien utilisé ; sur des serveurs plus anciens, vous devrez peut-être ajuster les paramètres d'application de TLS. |
| Entra OBO renvoie 401 | Audience ou consentement incohérent | Vérifiez que l'application Entra a `https://database.windows.net/user_impersonation` comme autorisation déléguée, et que le consentement administrateur a été accordé si la politique de votre locataire l'exige. |
| `AADSTS65001: The user or administrator has not consented` | Le locataire exige un consentement administrateur | Demandez à votre administrateur Azure AD d'accorder le consentement pour l'application à l'adresse `https://login.microsoftonline.com/<tenant>/adminconsent?client_id=<client-id>` |
| `Forbidden: Principal is not authorized` | Utilisateur non associé dans la base de données | Pool dédié / Azure SQL : exécutez `CREATE USER ... FROM EXTERNAL PROVIDER` et ajoutez-le à `db_datareader`. Pool serverless : attribuez le rôle RBAC Synapse dans Synapse Studio. |
