> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Server

> Synchronisez les événements personnalisés depuis Microsoft SQL Server vers OneSignal pour déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs.

export const DATA_TYPE_0 = "event data"

export const PLATFORM_0 = "SQL Server"

export const COLUMN_HEADER_0 = "SQL Server Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata as JSON string"

## Aperçu

L'intégration OneSignal + SQL Server permet la synchronisation d'événements personnalisés depuis votre base de données Microsoft SQL Server vers OneSignal pour déclencher des campagnes de messagerie automatisées et des Journeys basés sur le comportement des utilisateurs.

SQL Server est le système de gestion de base de données relationnelle de Microsoft conçu pour les applications d'entreprise et l'entreposage de données.

***

## Exigences

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### SQL Server

* **Instance SQL Server** avec accès réseau
* **Utilisateur de base de données** avec les autorisations appropriées
* **Tables d'événements** contenant des données comportementales structurées
* **Connectivité réseau** de OneSignal vers votre instance SQL Server

***

## Configuration

<Steps>
  <Step title="Créer un utilisateur dédié pour OneSignal">
    Créez un compte utilisateur dédié avec un mot de passe fort et unique :

    ```sql theme={null}
    -- Create census user with the ability to sign in with a password
    CREATE USER CENSUS WITH PASSWORD = '<strong-unique-password>';

    -- Give the census user the ability to connect to database
    GRANT CONNECT TO CENSUS;
    ```

    <Info>
      Toutes les commandes SQL Server s'exécuteront dans la base de données spécifiée lors de l'exécution du script.
    </Info>
  </Step>

  <Step title="Accorder les autorisations de lecture">
    Fournissez un accès en lecture seule à vos données d'événements :

    ```sql theme={null}
    -- Give the census user the ability to read tables within the database
    EXEC sp_addrolemember 'db_datareader', CENSUS;

    -- Grant census user ability to read data from within a schema
    -- Run this for each schema you intend OneSignal to access
    GRANT SELECT, VIEW DEFINITION ON SCHEMA::<your-schema> TO CENSUS;
    ```

    <Info>
      Remplacez `<your-schema>` par le nom réel de votre schéma contenant les données d'événements. Répétez cette commande pour chaque schéma auquel vous souhaitez que OneSignal accède.
    </Info>
  </Step>

  <Step title="Configurer le moteur de synchronisation avancé (Optionnel)">
    Pour des performances améliorées, créez un schéma de comptabilité pour l'état de synchronisation de OneSignal :

    ```sql theme={null}
    -- Create a private bookkeeping schema where Census can store sync state
    CREATE SCHEMA CENSUS AUTHORIZATION CENSUS;

    -- Give the census user full access to the bookkeeping schema
    GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT,
              UPDATE, VIEW DEFINITION ON SCHEMA::CENSUS TO CENSUS;

    -- Give the census user the ability to create tables within the database
    GRANT CREATE TABLE TO CENSUS;
    ```

    <Warning>
      Ignorez cette étape si vous utilisez le moteur de synchronisation de base ou le mode lecture seule.
    </Warning>
  </Step>

  <Step title="Se connecter à OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    Sélectionnez **SQL Server** et fournissez les détails de connexion suivants :

    * **Hôte :** Le nom d'hôte ou l'adresse IP de votre instance SQL Server
    * **Port :** 1433 (par défaut) ou votre port personnalisé
    * **Base de données :** Le nom de votre base de données
    * **Nom d'utilisateur :** `CENSUS`
    * **Mot de passe :** Le mot de passe de l'étape 1
  </Step>
</Steps>

***

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

### Exemple de schéma de table d'événements

```sql theme={null}
-- Example SQL Server event table
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1) PRIMARY KEY,
    event_name NVARCHAR(100) NOT NULL,
    user_id NVARCHAR(255) NOT NULL,
    event_timestamp DATETIME2 DEFAULT GETUTCDATE(),
    event_data NVARCHAR(MAX),
    session_id NVARCHAR(255),
    device_type NVARCHAR(50)
);
```

### Mode de requête SQL

Écrivez des requêtes SQL personnalisées pour transformer vos données d'événements :

```sql theme={null}
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETUTCDATE())
    AND JSON_VALUE(event_data, '$.value') > 100
ORDER BY event_timestamp DESC;
```

***

## Configuration réseau avancée

OneSignal peut se connecter avec succès aux instances SQL Server qui utilisent des contrôles réseau avancés, y compris les contraintes de région, les listes d'autorisation d'adresses IP ou le tunneling SSH.

Pour plus d'informations sur la configuration de l'accès réseau, contactez votre administrateur SQL Server ou le support OneSignal.

***

## Options du moteur de synchronisation

### Moteur de synchronisation de base

* Accès en lecture seule à vos données d'événements
* Suivi de l'état géré par l'infrastructure OneSignal
* Configuration plus simple avec des autorisations minimales

### Moteur de synchronisation avancé

* Performances améliorées avec suivi d'état local
* Nécessite des autorisations supplémentaires pour créer des tables
* Recommandé pour le traitement d'événements à haut volume

***

## Limitations

* Les requêtes complexes peuvent impacter les performances de la base de données pendant les périodes de fort trafic
* Les opérations JSON nécessitent SQL Server 2016 ou ultérieur pour des performances optimales
* Toutes les autorisations sont accordées au niveau de la base de données spécifiée lors de la configuration

***

## FAQ

### Puis-je me connecter à plusieurs schémas SQL Server ?

Oui, vous pouvez accorder à l'utilisateur CENSUS l'accès à plusieurs schémas en exécutant l'instruction `GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema>` pour chaque schéma contenant des données d'événements.

### Quelles versions de SQL Server sont prises en charge ?

OneSignal prend en charge les versions modernes de SQL Server. Pour les opérations JSON dans les requêtes d'événements, SQL Server 2016 ou ultérieur est recommandé.

### Dois-je utiliser le moteur de synchronisation avancé ?

Non, le moteur de synchronisation de base fonctionne bien pour la plupart des cas d'utilisation. Utilisez le moteur de synchronisation avancé si vous avez besoin de performances améliorées et pouvez autoriser OneSignal à créer des tables dans votre instance SQL Server.
