Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

La requête select dbo.AskToShield apparaît dans les requêtes coûteuses de SQL Server

0000003110     -      21/09/2022

Les requêtes suivantes peuvent apparaître dans les requêtes coûteuses de SQL Server alors qu'elles n'ont aucune raison d'y apparaître :

  • select dbo.AskToShield('ConnectToServer',@tag1,@tag2,@tag3,'',@tag4) as receive
  • select dbo.AskToShield('TestLicence',@tag1,@tag2,@tag3,@tag4) as receive

Cette situation, liée à une installation de MercatorShield en configuration cloudpeut conduire à un ralentissement important du serveur SQL et, par conséquent, des Mercators qui y sont connectés. Elle serait apparue avec les versions plus récentes de SQL Server.

L'arrêt forcé de l'exécution de ces requêtes peut, en outre, prendre un temps important, qui peut in fine exiger le redémarrage du service SQL.

Pour corriger cette situation, il faut prendre une mise à jour de Mercator (Mercator.exe version égale ou supérieure à 10.10.114) et ensuite effectuer à nouveau "Outils > Outils Avancés > MercatorShield > Configurer via SQL Server" (une seule fois). Ceci aura pour effet de mettre à jour l'assembly qui contient la méthode utilisée en mode SQL-CLR pour la fonction dbo.AskToShield.

La vérification de la bonne installation de cette mise à jour peut être effectuée avec cette requête SQL :

select dbo.SHIELD_SQL_VERSION()

qui doit renvoyer 1.0.7.40.


De plus, si MercatorShieldServer est installé sur le même serveur que le serveur SQL (ce qui est généralement le cas), nous recommandons d'indiquer le host de MercatorShieldServer avec l'adresse IP 127.0.0.1 (et non avec le nom du serveur ou son adresse IP dans le réseau local). L'option MercatorShield host (ID = SHIELDHOST) devient donc :

127.0.0.1:5022@SQL

Cette notation permet d'optimiser les fonctionnalités de contrôle de MercatorShield, en le dispensant de vérifier que MercatorShieldServer se trouve dans le même réseau local.


Ceci ne concerne pas les Mercator avec une base de données SQL Azure.