Sdílet prostřednictvím


Jak volat modul runtime .NET v jazykových rozšířeních SQL Serveru

Platí pro: SQL Server 2019 (15.x) a novější verze

Funkce SQL Server Language Extensions používá sp_execute_external_script systém uloženou proceduru jako rozhraní pro volání modulu runtime .NET.

Tento článek s postupy vysvětluje podrobnosti implementace kódu jazyka C#, který se spouští na SQL Serveru.

Kde umístit třídy jazyka C#

Kód jazyka C# v SQL Serveru můžete volat tak, že do databáze nahrajete zkompilované knihovny .NET a další závislosti pomocí knihovny DDL externí knihovny . Další informace naleznete v tématu Vytvoření knihovny DLL .NET z projektu jazyka C#.

Základní principy

Tady jsou některé základní principy při spouštění jazyka C# na SQL Serveru.

  • Kompilované vlastní třídy .NET musí existovat v souborech DLL.

  • V parametru script uložené procedury musí být zadanou metodou jazyka C#, kterou voláte.

  • Pokud třída patří do balíčku, packageName musí být k dispozici.

  • params slouží k předávání parametrů do třídy jazyka C#. Volání metody, která vyžaduje argumenty, není podporováno. Parametry jsou proto jediným způsobem, jak předat hodnoty argumentů metodě.

Poznámka:

Tato poznámka restuje podporované a nepodporované operace specifické pro jazyk C# v SQL Serveru 2019 (15.x) a novějších verzích. U uložené procedury se podporují vstupní parametry, zatímco výstupní parametry se nepodporují.

Volání kódu jazyka C#

Uložená procedura systému sp_execute_external_script je rozhraní, které slouží k volání modulu runtime .NET. Následující příklad ukazuje sp_execute_external_script použití rozšíření .NET a parametry pro zadání cesty, skriptu a vlastního kódu.

Poznámka:

Nemusíte definovat, kterou metodu se má volat. Ve výchozím nastavení se volá metoda Execute . To znamená, že potřebujete postupovat podle sady Microsoft Extensibility SDK pro jazyk C# pro SQL Server a implementovat metodu Execute ve třídě jazyka C#.

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;

Použití externí knihovny

V SQL Serveru 2019 (15.x) a novějších verzích můžete použít externí knihovny pro jazyk C# ve Windows. Třídy můžete zkompilovat do souboru DLL a nahrát knihovnu DLL a další závislosti do databáze pomocí CREATE EXTERNAL LIBRARY DDL.

Příklad nahrání souboru DLL s externí knihovnou:

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

Když vytvoří externí knihovnu, SQL Server má automaticky přístup ke třídám jazyka C# a nemusíte pro cestu nastavovat žádná zvláštní oprávnění.

Následující kód je příkladem volání Execute metody ve třídě MyClass z balíčku MyPackage, nahrané jako externí knihovna:

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

Další informace naleznete v tématu VYTVOŘENÍ EXTERNÍ KNIHOVNY.