Architecture de la base de données
UserLock s’appuie sur une base de données centrale pour stocker les journaux d’activité. Comprendre le fonctionnement de cette base et les technologies prises en charge aide les administrateurs à faire les bons choix en termes de performance, de fiabilité et de maintenance à long terme.
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.
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.
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.
Les déploiements UserLock évoluent fréquemment au fil du temps. Les besoins de migration courants incluent :
- passer d’Access à SQL Server (scénario de production le plus typique), 
- passer d’un SQL Server à un autre (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.
- 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.
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 : enregistre les événements de session et d’authentification. 
- UserStatus : enregistre le Statut utilisateur. 
- AdminActions : enregistre les actions de des administrateurs. 
- AdminActionResults : 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.
| Nom du champ | Type | Description du champ | 
|---|---|---|
| EventType | entier | Sessions interactives Sessions d'accès à distance Wi-Fi/VPN Sessions IIS Sessions SaaS Evènements UAC | 
| EventTime | heure et date | Date et heure de l'événement d'ouverture/fermeture de session | 
| UserAccount | chaîne | Compte utilisateur | 
| UserDomain | 
 | 
 | 
| UserFullName | 
 | Nom complet de l'utilisateur | 
| ComputerName | 
 | 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 | 
 | 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 | 
 | Identificateur de sous-session. Incrémenté par 1 après chaque événement de déverrouillage ou de connexion (nouvelle sous-session) | 
| Status | 
 | 0: Pour tous les événements de session, à l'exception des cas ci-dessous. 
 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. | 
| 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 : 
 | 
| 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: Raisons détaillées d'un refus de connexion par UserLock lorsque le champs EventType associé = 4, 104 ou 204. 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 UserLock lorsque le champs EventType associé =20, 220 ou 420: 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: | 
| SessionType | entier | Type de Session: | 
| 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. | 
| SkipReason | entier | Relatif au bouton “Passer” optionnellement affiché dans la boîte de dialogue de configuration MFA. | 
| Country | chaîne | Pays à partir duquel la connexion a été effectuée | 
| Nom du champ | 
 | Description du champ | 
|---|---|---|
| Id | entier | Identifiant de l'enregistrement (automatique) | 
| Status | entier | Statut actuel de l'utilisateur. | 
| Triggers | entier | Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur. | 
| OldStatus | entier | Statut précédent de l'utilisateur. | 
| OldTriggers | entier | Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur. | 
| 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 Sessions d'accès à distance Wi-Fi/VPN Sessions IIS | 
| EventTime | heure et date | Date et heure de l'événement d'ouverture/fermeture de sessionDate and time of the logon/logoff event | 
| Nom du champ | Type | Description du champ | 
|---|---|---|
| Id | entier | ID de l’enregistrement (auto) | 
| ServerName | chaîne | Nom du serveur | 
| Kind | entier | 
 | 
| Action | entier | 
 | 
| 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 | 
 | 
| Severity | entier | 
 | 
| DisplayState | entier | 
 | 
| UserAccountFullName | chaîne | Nom complet du compte utilisateur à l’origine de l’action | 
| Domain | chaîne | Nom du domaine | 
| Nom du champ | Type | Description du champ | 
|---|---|---|
| Id | entier | ID de l’enregistrement (auto) | 
| ServerName | string | Nom du serveur | 
| AdminActionId | integer | Identifiant de AdminAction | 
| Item | string | Le paramètre modifié par l’action de l’administrateur | 
| Param1 | string | Champs dynamique | 
| Param2 | string | Champs dynamique | 
| Param3 | string | Champs dynamique | 
| Param4 | string | Champs dynamique | 
| Param5 | string | Champs dynamique | 
| Param6 | string | Champs dynamique | 
| StateResult | integer | 
 | 
| Details | string | Détails concernant l'action de l'administrateur |