Time-out pour l'exécution des requêtes SQL

0000002832     -      25/06/2024

Mercator est une application client-serveur qui communique avec le serveur SQL, en lui demandant d'exécuter des requêtes d'extraction de données ou de modification. Pour chacune de ces requêtes, un délai maximal d'attente est fixé. Ce délai s'appelle le time-out SQL. Si au-delà de ce délai, le serveur SQL n'a pas donné la réponse attendue, Mercator considère que le serveur SQL n'est pas apte à répondre et gère cette situation en indiquant à l'utilisateur que la fonctionnalité demandée n'est actuellement pas disponible.

Ce time-out est défini dans l'option disponible via "Outils / Options / Autres : Time-out (sec.) SQL Server" (id = TO_SQLARUB). Il est commun à tous les utilisateurs et à toutes les requêtes.

La valeur par défaut est de 30 secondes. Indiquer une valeur supérieure est parfois nécessaire, pour permettre l'exécution de requêtes complexes, mais peut apporter l'inconvénient suivant : en cas d'indisponibilité temporaire du serveur SQL, il faudra attendre ce délai avant de pouvoir reprendre la main.

 

Il est possible de déroger à ce time-out général

1. Dans les requêtes de l'éditeur de rapports ou dans les requêtes sur mesure

Il est possible de fixer cette valeur pour une seule requête, en la passant sous la forme d'un commentaire formaté :

/*<TimeOutSql>100</TimeOutSql>*/

Ce délai est toujours exprimé en secondes.

 

2. Dans le profil utilisateur

Le profil utilisateur contient dans le premier onglet une zone "Timeout SQL (sec)". Par défaut, sa valeur est zéro. Si elle est supérieure à zéro, alors cette valeur est prise en compte pour toutes les requêtes SQL exécutées par cet utilisateur.

timeout_sql_user

 

Ceci permet de répondre, par exemple, à ce cas métier : dans un environnement "point de vente", les opérateurs de caisse ont besoin d'une haute réactivité de l'interface. En cas d'indisponibilité du serveur SQL, le délai d'attente doit être court. Ces utilisateurs vont dès lors demander un time-out court (par exemple 30 secondes). Celui-ci sera fixé dans l'option générale. En revanche, d'autres utilisateurs utilisent des fonctionnalités requérant un temps d'exécution plus important : édition d'états comptables, de l'inventaire, ... Ces utilisateurs pourront alors disposer d'un time-out personnel plus grand défini dans leur profil utilisateur.

 

L'ordre de priorités est le suivant :

  1. Time-out fixé dans la requête
  2. Time-out défini dans le profil utilisateur
  3. Option générale