Hoe kunt u in .Net geschreven functies toevoegen aan de SQL-server ?

0000001375     -      28-09-2018

In SQL Server kunnen functies worden toegevoegd die geschreven werden in een .Net-omgeving. Dit illustreren wij hier met een ontwikkeling uitgevoerd in C#, waarvan u de bronnen in het bijgevoegde voorbeeld vindt. De klasse in kwestie omvat een methode Xsha1, die een sleutel Sha-1 berekent op basis van eender welke tekenreeks. Ze kan eenvoudig worden gebruikt in elke SQL-zoekopdracht die aan de gegevensserver wordt gegeven.

Hierna vindt u de te volgen procedure om deze externe functie te installeren.

  • Plaats de assembly MercatorSqlAddOn.dll in een directory op een lokale disk van de SQL-server.


  • Start SQL Management Studio op, kies de optie "Beveiliging / Verbindingen" en neem de eigenschappen van de verbinding die overeenkomt met de databank in kwestie (MERCATORABCXYZ). In "Servertaken" activeert u "SysAdmin".


  • Voer op het tabblad SQL van code-editor het onderstaande commando uit om de .Net-extensies op de SQL-server te activeren (enkel de eerste maal voor deze server):

    EXEC sp_configure @configname = 'clr enabled', @configvalue = 1
    RECONFIGURE WITH OVERRIDE


  • Maak een verwijzing naar de assembly door op het tabblad SQL van code-editor onderstaand commando uit te voeren. Zorg er daarbij voor dat u het adrespad aanpast:

    CREATE ASSEMBLY asmMercatorSqlAddOn FROM 'C:\Test\MercatorSqlAddOn\MercatorSqlAddOn\bin\Debug\MercatorSqlAddOn.dll'


  • Creëer de externe functie Xsha1:

    CREATE FUNCTION dbo.Xsha1
    ( @s as nvarchar(4000) )
    RETURNS nvarchar(200)
    AS EXTERNAL NAME [asmMercatorSqlAddOn].[MercatorSqlAddOn.Class1].[Xsha1]


  • Deactiveer het vakje "SysAdmin" in SQL Management Studio.

De functie XSha1 zal nu in elke SQL-opdracht kunnen worden gebruikt net als de klassieke gebruikersfuncties:

select f_nom,dbo.xsha1(f_nom) from fou

Ze kan ook worden gebruikt in constraints, triggers, ...



Te laden : 0000001375.zip (9 Kb - 30-11-2007)