U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Standaard Mercator CLR-functies

0000002952     -      11-03-2024

Mercator 10.7 biedt de mogelijkheid om CLR-functies te activeren, dwz geschreven voor de .net-omgeving. Het doel is om bepaalde functies (scalaire functies, tabelfuncties, opgeslagen procedures) die automatisch door Mercator in de database zijn geplaatst, te vervangen in TSQL door hun equivalente .net-versie. De bedoeling is om prestaties te verbeteren, vooral voor zeer algoritmische functies. TSQL is inderdaad een geïnterpreteerde taal terwijl .net het onderwerp is van een a priori compilatie.

Bovendien maakt dit proces het ook mogelijk om functionaliteiten op de SQL-server toe te voegen die niet programmeerbaar zijn in TSQL maar eerder in C #. Bijvoorbeeld: geocoding.

Om deze mogelijkheid te activeren, gaat u naar het menu "Extra> Geavanceerde hulpmiddelen> SQL-database> SQL CLR-functie activeren". Dit vereist een verbinding met de database met beheerdersrechten (login SA). Voor de rest is deze installatie volledig transparant. Er wordt geen verandering in het gedrag van Mercator waargenomen.

Als u deze functionaliteit wilt deactiveren, moet u gewoon hetzelfde menu gebruiken en meer bepaald het element "Deactiveren". Het wordt aanbevolen om te deactiveren voordat de database naar een andere SQL-server wordt getransporteerd.

In een database weten we of de CLR-functies van Mercator zijn geactiveerd door bijvoorbeeld te kijken naar de definitie van de scalaire functie STREXTRACT die is geworden :

ALTER FUNCTION [dbo].[STREXTRACT](@StrIn [nvarchar](max), @StartDelim [nvarchar](128), @EndDelim [nvarchar](128), @Occurence [int])
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [asmMercatorSqlClr].[MercatorSqlClr.Functions].[StrExtract]

 

Opmerking: de assembly MercatorSqlClr.dll bevindt zich in Mercator en mag nooit op schijf worden geplaatst. Het kan alleen worden geïnstalleerd door het hierboven beschreven proces. Dus nooit handmatig.


Beoordeling prestatieprestatie :

Hoe meer een TSQL-functie algoritmische delen bevat (extractie van tekenreeksen, aaneenschakelingen, lussen, tests, ...), hoe meer de prestatieverbetering door zijn .net-equivalent aanzienlijk zal zijn. Het beste voorbeeld hiervan is de scalaire functie dbo.GET_DROIT (waarmee wordt vastgesteld of een gebruiker het recht heeft om een actie te zien op basis van zijn gebruikers-ID of zijn groepslidmaatschap). Tijdens prestatietests hebben we dit waargenomen voor de extractie van acties door de kalender van de CRM van Mercator: extractie van 8 records onder 7000 in de tabel ACTIONS

  • TSQL-versie: 3 seconden
  • .net-versie: momentopname.

Zie ook: Functies voor afbeeldingen op SQL Server