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

Comment ajouter des fonctions écrites en .Net dans le serveur SQL ?

0000001375     -      28/09/2018

SQL Server permet l'ajout de fonctions écrites dans l'environnement .Net. Nous illustrons ceci ici avec un développement effectué en C#, dont les sources se trouvent dans l'exemple ci-joint. La classe en question contient une méthode Xsha1, qui effectue le calcul d'un clé Sha-1 sur base de n'importe quelle chaîne de caractères. Elle pourra être utilisée simplement dans toute requête SQL passée au serveur de données

Voici la procédure à suivre pour installer cette fonction externe :

  • Placer l'assembly MercatorSqlAddOn.dll dans un répertoire sur un disque local du serveur SQL
     
  • Démarrer le SQL Management Studio, ouvrir l'option "Sécurité / Connexions" et prendre les propriétés de la connexion correspondant à la base de données en question (MERCATORABCXYZ). Dans "rôles de serveur", activer "SysAdmin".
     
  • Exécuter dans l'onglet SQL de l'éditeur de code cette commande qui permet d'activer les extensions .Net sur le serveur SQL (uniquement la première fois sur ce serveur) :

    EXEC sp_configure @configname = 'clr enabled', @configvalue = 1
    RECONFIGURE WITH OVERRIDE
     
  • Référencer l'assembly en exécutant dans l'onglet SQL de l'éditeur de code cette commande, en prenant soin d'adapter le chemin d'accès :

    CREATE ASSEMBLY asmMercatorSqlAddOn FROM 'C:\Test\MercatorSqlAddOn\MercatorSqlAddOn\bin\Debug\MercatorSqlAddOn.dll'
     
  • Créer la fonction externe Xsha1 :

    CREATE FUNCTION dbo.Xsha1
    ( @s as nvarchar(4000) )
    RETURNS nvarchar(200)
    AS EXTERNAL NAME [asmMercatorSqlAddOn].[MercatorSqlAddOn.Class1].[Xsha1]
     
  • Décocher "SysAdmin" dans le SQL Management Studio

La fonction XSha1 pourra être utilisée ensuite dans toute requête SQL comme les fonctions utilisateurs classiques :

select f_nom,dbo.xsha1(f_nom) from fou

Elle peut aussi être utilisée dans les contraintes, les triggers, ...



A télécharger : 0000001375.zip (9 Kb - 30/11/2007)