---
locale: "fr"
updated_at: "2026-05-28T12:32:27.020Z"
canonical: "https://www.isdecisions.com/fr/userlock/docs/reference/concepts-fondamentaux/architecture-base-de-donnees"
---

# Architecture de la base de données

Bases de données supportées, schémas et bonnes pratiques.

## Pourquoi UserLock a besoin d’une base de données

UserLock enregistre en continu des informations telles que :

- les événements de session et d’authentification,
- les changements de statut des utilisateurs,
- les actions des administrateurs,
- les modifications de configuration.

Une base de données centrale garantit que ces informations sont conservées, consultables et cohérentes sur l’ensemble du déploiement.

## Base de données par défaut : Microsoft Access

Par défaut, le package d’installation de UserLock fournit un fichier de base de données **Microsoft Access** (`UserLock.mdb`).

Cette option est conçue pour la **simplicité** : aucune configuration n’est nécessaire et elle permet aux administrateurs de commencer immédiatement l’évaluation de UserLock.

Cependant, Access présente des limitations structurelles :

- taille maximale de fichier de **2 Go**,
- performances et évolutivité limitées,
- manque de résilience pour un usage à long terme ou en production.

> **Cas d'usage**
>
> 👉 Uniquement adapté pour l’évaluation, les tests ou de très petits environnements.

## Bases de données de production prises en charge et prérequis

Pour les déploiements en production, IS Decisions recommande vivement d’utiliser SQL Server ou un autre système pris en charge :

- **Microsoft SQL Server** (2005 et versions ultérieures, 32/64 bits)
  - Aucune limite théorique de taille.
  - Recommandé pour l’évolutivité, la résilience et l’intégration en entreprise.
- **Microsoft SQL Server Express** (2005 et versions ultérieures, 32/64 bits)
  - Édition gratuite avec une taille maximale de base de données de **10 Go**.
  - Fournit la plupart des fonctionnalités de SQL Server, avec des limitations CPU et RAM.
  - Une option économique pour les PME ou les environnements plus petits, mais suffisamment robuste pour la production.
- **MySQL 5.6 et versions ultérieures**
  - Nécessite le **pilote ODBC 32 bits** (même sur les systèmes d’exploitation 64 bits).
  - Le connecteur .NET MySQL **ne doit pas** être installé.
  - Une fois le pilote ODBC disponible, MySQL apparaît comme option dans UserLock.

> **Note**
>
> Les éditions **LocalDB** de SQL Server ne sont pas compatibles avec UserLock.

## Scénarios de migration

Les déploiements UserLock évoluent fréquemment au fil du temps. Les besoins de migration courants incluent :

- passer d’[Access à SQL Server](/userlock/docs/guides/base-de-donnees/transfert-depuis-ms-access-vers-sql-express) (scénario de production le plus typique),
- passer d’un [SQL Server à un autre](/userlock/docs/guides/base-de-donnees/migrer-vers-autre-base-donnees-sql-server) (changement d’infrastructure, mise à jour ou reprise après sinistre).

UserLock fournit des outils et des guides dédiés pour effectuer ces migrations tout en conservant les données et l’historique.

Si vous avez besoin d'aider pour déployer SQL Express, vous pouvez consulter ce guide pour savoir [comment installer et configurer SQL Express](/userlock/docs/guides/base-de-donnees/install-and-configure-sql-express).

## Bonnes pratiques

- Utiliser toujours **SQL Server** (ou SQL Server Express, ou MySQL) pour la production.
- Héberger la base sur un **serveur dédié et sauvegardé**.
- Surveiller la croissance de la base et planifier la maintenance (archivage, purge des anciens journaux).
- Tester les migrations dans un environnement de préproduction dès que possible.
- Travailler avec l’équipe DBA pour respecter les standards et politiques de sauvegarde de l’entreprise.

> **Note**
>
> Pour les options de configuration détaillées dans la console, voir [Paramètres serveur ▸ Base de données](/userlock/docs/reference/parametres-serveur/base-de-donnees).

## Schéma de base de données

La base de données UserLock est composée de quatre tables. Ces tables ne sont pas configurables depuis la console, mais comprendre leur contenu peut aider pour l’audit, le dépannage ou l’intégration.

- [UserLogonEvents](#table-userlogonevents) : enregistre les événements de session et d’authentification.
- [UserStatus](#userstatus-table) : enregistre le [Statut utilisateur](/userlock/docs/administration-serveur/server-properties/user-status).
- [AdminActions](#adminactions-table) : enregistre les actions de des administrateurs.
- [AdminActionResults](#adminactionresults-table) : enregistre les résultats liés aux actions administrateur.

Vous trouverez ci-dessous la liste détaillée des champs de ces tables, indiquant leur type et leur usage.

Ces informations sont fournies dans un objectif de transparence et d’intégration.

> **Note**
>
> La base de données UserLock est librement accessible afin de permettre l’intégration et le reporting sur les données collectées. Toutefois, nous recommandons fortement de **ne pas modifier** la structure ni le contenu de la base.

### Table UserLogonEvents

| Nom du champ | Type | Description du champ |
| --- | --- | --- |
| EventType | entier | **Sessions interactives** 0 fermeture / 1 ouverture / 2 verrouillage / 3 déverrouillage / 4 connexion refusée / 5 reconnexion / 6 déconnexion 20: Connexions Interactives refusées par Active Directory 420: Connexions RDP refusées par Active Directory (Voir LogonInfo pour détails)   **Sessions d'accès à distance Wi-Fi/VPN** 200 fermeture / 201 / 204 connexion refusée 220 Connexions refusées par Active Directory (Voir LogonInfo pour détails)   **Sessions IIS** 100 fermeture / 101 ouverture / 104 connexion refusée 120: Connexions refusées par Active Directory (Voir LogonInfo pour détails)    **Sessions SaaS** 500 fermeture / 501 ouverture / 504 connexion refusée par UserLock    **Evènements UAC** 601 ouverture / 604 connexion refusée par UserLock 620: Connexions refusées par Active Directory (Voir LogonInfo pour détails) |
| EventTime | heure et date | Date et heure de l'événement d'ouverture/fermeture de session |
| UserAccount | chaîne | Compte utilisateur |
| UserDomain | chaîne | Domaine de l'utilisateur |
| UserFullName | chaîne | Nom complet de l'utilisateur |
| ComputerName | chaîne | La station de travail ou le serveur de terminal |
| ComputerSession | entier | Identifiant de la session terminal |
|  |
| ClientName | chaîne | Nom de la station de travail ou nom du terminal pour une session terminal |
| ClientAddress | chaîne | Adresse de la station de travail ou du terminal (adresse MAC pour les sessions Wi-Fi, sinon adresse IP). |
| SessionId | chaîne | Identificateur de session (unique dans le temps) |
| SubSessionId | entier | Identificateur de sous-session. Incrémenté par 1 après chaque événement de déverrouillage ou de connexion (nouvelle sous-session) |
| Status | entier | 0: Pour tous les événements de session, à l'exception des cas ci-dessous. 1: Pour :  - Les réinitialisations faites depuis la console. - Les événements de fermeture de sessions interactives enregistrés automatiquement dans les cas suivants:   - L'ordinateur ne se trouve plus dans la zone réseau protégée par le serveur UserLock depuis au moins 7 jours.   - Le paramètre avancé "UnavailableTimeForRemove" est configuré et UserLock ne peut pas contacter l'ordinateur sur lequel la session était en cours pendant au moins le nombre de minutes configuré dans ce paramètre.   - Le service UserLock a détecté à distance que la session n'existe plus sur cet ordinateur.  3: Pour les événements de fermeture de sessions interactives enregistrés automatiquement après un arrêt ou un crash de l'ordinateur sur lequel la session se déroulait. Pour les valeurs 1 et 3: Si l'agent de bureau UserLock Desktop de l'ordinateur associé envoie ultérieurement la "vraie" fermeture de session interactive, l'enregistrement de la base de données sera automatiquement mis à jour avec la date de l'événement et le champ "Status" défini sur "0". |
| ErrorId | chaîne | Non nul uniquement si l'événement de session n'a pas pu être notifié en temps réel au serveur UserLock. Cela peut arriver dans les cas suivants :  - La connexion réseau n'est pas encore initialisée - Les prérequis ne sont pas respectés - Le service UserLock n'est pas démarré |
| LastError | entier | Différent de 0 uniquement si l'événement de session n'a pas pu être notifié en temps réel au serveur UserLock. Consultez la documentation du champ ErrorId ci-dessus pour plus de détails. |
| Param1 to Param6 | chaîne | Champs dynamiques pour les événements de sessions NPS/RRAS/IIS |
| Id | entier | Identifiant de l'enregistrement (automatique)Record id (auto) |
| LogonInfo | entier | **La signification de cette valeur est liée à la valeur du champ EventType associé.**  Raisons détaillées d'une connexion réussie lorsque le champs EventType associé = 1, 3, 5, 101, 201 ou 501: 128: MFA réussie (sauf si la valeur du champ "SkipReason" est différente de "-1", voir la documentation de ce champ ci-dessous).  Raisons détaillées d'un refus de connexion par UserLock lorsque le champs EventType associé = 4, 104 ou 204. 1 : Restriction de Groupe 2 : Restriction de Postes de travail 4 : Restriction de temps 8 : Restriction Quota de temps 16 : Restriction de Sessions 32 : Restriction de Points d'accès initiaux 64 : L'utilisateur est bloqué par UserLock 128: MFA échouée (lorsqu'un utilisateur tape un code MFA incorrect et que sa session est refusée) 256: MFA annulée (lorsqu'un utilisateur clique sur le bouton «Annuler» d'une fenêtre MFA) 512: Demande d'aide (lorsqu'un utilisateur clique sur le bouton "Demander de l'aide" d'une fenêtre MFA). 1024: Restriction de géolocalisation 2048: UserLock inaccessible  Un refus de connexion par UserLock peut avoir plusieurs raisons. C'est pourquoi la valeur enregistrée est une valeur cumulative. Par exemple 25 correspond à l'application conjointe de restrictions de Groupe, Utilisateur et Quotas de temps (1 + 16 + 8).  Raisons détaillées d'un refus de connexion par Active Directory lorsque le champs EventType associé =20, 220 ou 420: 0 : Inconnue 1 : Utilisateur invalide 2 : Mot de passe invalide 4 : Compte verrouillé 8 : Les horloges du contrôleur de domaine et de la station sont désynchronisées 16 : Le mot de passe doit être changer avant l'ouverture de la session 32 : Restriction Active Directory 64 : Restriction de compte 128 : ​Restriction d'heures de connexion 256 : Compte désactivé 512 : Restriction de station 1024 : Compte expiré 2048 : ​Mot de passe expiré  Les refus de connexions par Active Directory étant exclusifs, la valeur enregistrée sera toujours une seule valeur de cette liste.  Raison détaillée d'un refus de connexion par UserLock lorsque le champs EventType associé = 120: 2 : Mot de passe invalide |
| SessionType | entier | Type de Session: 1 = Station 2 = Terminal 4 = IIS 16 = VPN 32 = Wi-Fi 64 = SSO 256 = UAC |
| ServerAddress | chaîne | L'adresse IP de l'ordinateur où s'est déroulé l'événement de session. |
| TimeZoneShift | entier | Décalage horaire par rapport à UTC (Temps universel coordonné), en minutes. Ce champ est rempli uniquement pour les événements de sessions interactives. |
| SkipReason | entier | Relatif au bouton “Passer” optionnellement affiché dans la boîte de dialogue de configuration MFA. -1: Passer n'a pas été cliqué. 1: Passer a été cliqué, puis la raison suivante a été choisie: "J'ai oublié mon smartphone". 2: Passer a été cliqué, puis la raison suivante a été choisie: "Je n'ai pas de smartphone". 3: Passer a été cliqué, puis la raison suivante a été choisie: "Autre raison technique". |
| Country | chaîne | Pays à partir duquel la connexion a été effectuée |

### UserStatus table

| Nom du champ | Type | Description du champ |
| --- | --- | --- |
| Id | entier | Identifiant de l'enregistrement (automatique) |
| Status | entier | Statut actuel de l'utilisateur. 0 : Non protégé 1 : Protégé 2 : Inactif 3 : Nouveau 4 : Risque 5 : Haut risque |
| Triggers | entier | Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur. Valeurs en hexadécimal: 0x00000001 : Protégé 0x00000002 : Premier évènement 0x00000004 : Evènement 0x00000008 : Evènement après une période 0x00000010 : Inactivité 0x00000020 : Accès refusé pour un compte verrouillé dans Active Directory 0x00000040 : Sessions au-delà des limites 0x00000080 : Sessions au-delà d'une valeur personnalisée 0x00000100 : Accès refusé par UserLock 0 : Accès refusé par Active Directory |
| OldStatus | entier | Statut précédent de l'utilisateur. 0 : Non protégé 1 : Protégé 2 : Inactif 3 : Nouveau 4 : Risque 5 : Haut risque |
| OldTriggers | entier | Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur. Valeurs en hexadécimal: 0x00000001 : Protégé 0x00000002 : Premier évènement 0x00000004 : Evènement 0x00000008 : Evènement après une période 0x00000010 : Inactivité 0x00000020 : Accès refusé pour un compte verrouillé dans Active Directory 0x00000040 : Sessions au-delà des limites 0x00000080 : Sessions au-delà d'une valeur personnalisée 0x00000100 : Accès refusé par UserLock 0 : Accès refusé par Active Directory |
| UserAccount | chaîne | Compte utilisateur |
|  |
| UserDomain | chaîne | Domaine de l'utilisateur |
| UserFullName | chaîne | Nom complet de l'utilisateur |
| SessionId | chaîne | Identificateur de session (unique dans le temps) |
| SubSessionId | entier | Identificateur de sous-session. Incrémenté par 1 après chaque événement de déverrouillage ou de connexion (nouvelle sous-session) |
| EventType | entier | **Sessions interactives** 0 fermeture / 1 ouverture / 2 verrouillage / 3 déverrouillage / 4 connexion refusée / 5 reconnexion / 6 déconnexion 20: Connexions Interactives refusées par Active Directory 420: Connexions RDP refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails)   **Sessions d'accès à distance Wi-Fi/VPN** 200 fermeture / 201 / 204 connexion refusée 220 Connexions refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails)   **Sessions IIS** 100 fermeture / 101 ouverture / 104 connexion refusée 120: Connexions refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails) |
| EventTime | heure et date | Date et heure de l'événement d'ouverture/fermeture de sessionDate and time of the logon/logoff event |

### AdminActions table

| Nom du champ | Type | Description du champ |
| --- | --- | --- |
| Id | entier | ID de l’enregistrement (auto) |
| ServerName | chaîne | Nom du serveur |
| Kind | entier | - 0: action sur les **sessions** - 1: action sur les **machines** - 2: action sur les **utilisateurs** - 3: action sur les **comptes protégés** (stratégies) - 4: action sur les **propriétés du serveur** |
| Action | entier | - 0: installation d'agent(s) - 1: désinstallation d’agent(s) - 2: redémarrage de machine(s) - 3: arrêt de machine(s) - 4: réveil de machine(s) - 10: fermeture de la (des) session(s) - 11: verrouillage de la (des) session(s) - 12: réinitialiser la (les) session(s) - 13: envoyer une popup à la (aux) session(s) - 20: réinitialiser la clé Mfa - 21: réinitialiser le statut de l'aide Mfa - 30: création de stratégie - 31: mise à jour de stratégie - 32: suppression de stratégie - 33: bloquer un utilisateur - 34: débloquer un utilisateur - 35: désactiver la Mfa - 40: mise à jour des paramètres du serveur - 41: mise à jour de la version du serveur |
| DateStart | heure et date | Date et heure de début de l'action de l'administrateur |
| DateEnd | heure et date | Date et heure de fin de l'action de l'administrateur |
| UserAccount | chaîne | Nom du compte utilisateur à l’origine de l’action |
| Priority | entier | - 0: Faible - 1: Moyenne - 2: Haute |
| Severity | entier | - 0: Mineure - 1: Modérée - 2: Majeure - 3: Critique |
| DisplayState | entier | - 0: Non-lu - 1: Lu |
| UserAccountFullName | chaîne | Nom complet du compte utilisateur à l’origine de l’action |
| Domain | chaîne | Nom du domaine |

### AdminActionResults table

| Nom du champ | Type | Description du champ |
| --- | --- | --- |
| Id | entier | ID de l’enregistrement (auto) |
| ServerName | chaîne | Nom du serveur |
| AdminActionId | entier | Identifiant de AdminAction |
| Item | chaîne | Le paramètre modifié par l’action de l’administrateur |
| Param1 | chaîne | Champs dynamique |
|  |
| Param2 | chaîne | Champs dynamique |
| Param3 | chaîne | Champs dynamique |
| Param4 | chaîne | Champs dynamique |
| Param5 | chaîne | Champs dynamique |
| Param6 | chaîne | Champs dynamique |
| StateResult | entier | - 0: Réussie - 1: Annulée - 2: Echouée |
| Details | chaîne | Détails concernant l'action de l'administrateur |
