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)