Megosztás a következőn keresztül:


A .NET-futtatókörnyezet meghívása az SQL Server nyelvi bővítményeiben

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók

Az SQL Server Language Extensions szolgáltatás a sp_execute_external_script rendszer által tárolt eljárást használja felületként a .NET-futtatókörnyezet meghívásához.

Ez az útmutató cikk az SQL Serveren futó C#-kód implementálási részleteit ismerteti.

C#-osztályok helye

C# kódot hívhat meg az SQL Serverben úgy, hogy lefordított .NET-kódtárakat (DLL-eket) és egyéb függőségeket tölt fel az adatbázisba a külső kódtár DDL-jének használatával. További információ: .NET DLL létrehozása C# projektből.

Alapelvek

Az alábbiakban néhány alapelvet ismertetünk a C# SQL Serveren való végrehajtásakor.

  • A lefordított egyéni .NET-osztályoknak DLL-fájlokban kell lenniük.

  • A hívott C# metódust meg kell adni a script tárolt eljárás paraméterében.

  • Ha az osztály egy csomaghoz tartozik, meg kell adni.packageName

  • params paramétert ad át egy C#-osztálynak. Az argumentumokat igénylő metódus meghívása nem támogatott. Ezért a paraméterek az egyetlen módja annak, hogy argumentumértékeket adjanak át a metódusnak.

Megjegyzés:

Ez a megjegyzés az SQL Server 2019 (15.x) és újabb verzióiban a C#-ra vonatkozó támogatott és nem támogatott műveleteket ismerteti. A tárolt eljárásban a bemeneti paraméterek támogatottak, míg a kimeneti paraméterek nem támogatottak.

C# kód meghívása

A sp_execute_external_script rendszer által tárolt eljárás a .NET-futtatókörnyezet meghívására használt felület. Az alábbi példa egy sp_execute_external_script .NET-bővítményt és paramétereket mutat be az elérési út, a szkript és az egyéni kód megadásához.

Megjegyzés:

Nem kell meghatároznia, hogy melyik metódust kell meghívnia. Alapértelmezés szerint a rendszer meghív egy metódust Execute . Ez azt jelenti, hogy követnie kell a Microsoft Bővíthetőségi SDK for C# for SQL Servert , és implementálnia kell egy metódust Execute a C# osztályban.

DECLARE @param1 AS INT;

SET @param1 = 3;

EXECUTE sp_execute_external_script
    @language = N'dotnet',
    @script = N'<PackageName>.<ClassName>',
    @input_data_1 = N'<Input Query>',
    @param1 = @param1;

Külső kódtár használata

Az SQL Server 2019 (15.x) és újabb verzióiban külső kódtárakat használhat a Windows C# nyelvéhez. Az osztályokat DLL-fájlba fordíthatja, és feltöltheti a DLL-t és más függőségeket az adatbázisba a CREATE EXTERNAL LIBRARY DDL használatával.

Példa egy DLL-fájl külső tárral való feltöltésére:

CREATE EXTERNAL LIBRARY [dotnetlibrary]
    FROM (CONTENT = '<local path to .dll file>')
    WITH (LANGUAGE = 'dotnet');
GO

Külső kódtár létrehozásakor az SQL Server automatikusan hozzáfér a C#-osztályokhoz, és nem kell külön engedélyeket beállítania az elérési úthoz.

Az alábbi kód egy példa arra, hogy egy külső kódtárként feltöltött csomagból MyPackagehívja meg az Execute osztályban MyClass a metódust:

EXECUTE sp_execute_external_script
    @language = N'dotnet',
    @script = N'MyPackage.MyClass',
    @input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS ((column1 INT));

További információ: KÜLSŐ KÓDTÁR LÉTREHOZÁSA.