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)