Time-out voor het uitvoeren van SQL-query's

0000002832     -      25-06-2024

Mercator is een client-server applicatie die communiceert met de SQL-server; waarbij deze wordt gevraagd gegevens op te halen of te wijzigen. Voor elke query is er een maximale wachttijd ingesteld. Dit wordt de SQL time-out genoemd. Als de SQL-server binnen deze tijd niet reageert, beschouwt Mercator de server als niet beschikbaar en informeert de gebruiker dat de gevraagde functionaliteit momenteel niet beschikbaar is.

Deze time-out is gedefinieerd in de optie beschikbaar via "Tools / Opties / Anderen : Time-out (sec.) SQL Server" (id = TO_SQLARUB). Deze optie geldt voor alle gebruikers en alle query's.

De standaardwaarde is 30 seconden. Een hogere waarde kan nodig zijn voor complexe query's, maar dit kan het volgende nadeel hebben : bij tijdelijke onbeschikbaarheid van de SQL-server moet men wachten tot deze tijd verstreken is voordat men weer verder kan.

 

Het is mogelijk om af te wijken van deze algemene time-out

1. In de query's van de rapporteditor of in aangepaste query's

Het is mogelijk om deze waarde voor een enkele query in te stellen door een geformatteerde opmerking te gebruiken :

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

Deze tijd wordt altijd in seconden uitgedrukt.

 

2. In het gebruikersprofiel

het gebruikersprofiel bevat op het eerste tabblad een veld "Timeout SQL (sec)". Standaard is de waarde nul. Als deze waarde groter is dan nul, wordt deze gebruikt voor alle SQL-query's die door deze gebruiker worden uitgevoerd.

timeout_sql_user

 

Dit biedt bijvoorbeeld een oplossing voor het volgende scenario : in een "point of sale" omgeving hebben kassamedewerkers een hoge interface-reactiviteit nodig. Bij onbeschikbaarheid van de SQL-server moet de wachttijd kort zijn. Deze gebruikers vragen dus om een korte time-out (bijvoorbeeld 30 seconden), ingesteld in de algemene optie. Andere gebruikers die functies gebruiken die meer tijd vergen, zoals boekhoudkundige rapporten of inventarisatie, kunnen een langere persoonlijke time-out hebben ingesteld in hun gebruikersprofiel.

 

De volgorde van prioriteiten is als volgt :

  1. Time-out ingesteld in de query
  2. Time-out gedefinieerd in het gebruikersprofiel
  3. Algemene optie