Dela via


Anropa .NET-körningen i SQL Server Language Extensions

Gäller för: SQL Server 2019 (15.x) och senare versioner

Funktionen SQL Server Language Extensions använder den sp_execute_external_script system lagrade proceduren som gränssnitt för att anropa .NET-körningen.

Den här instruktionsartikeln beskriver implementeringsinformation för C#-kod som körs på SQL Server.

Plats för C#-klasser

Du anropar C#-kod i SQL Server genom att ladda upp kompilerade .NET-bibliotek (DLL:er) och andra beroenden till databasen med hjälp av det externa bibliotekets DDL. Mer information finns i Skapa en .NET DLL från ett C#-projekt.

Grundprinciper

Följande är några grundläggande principer när du kör C# på SQL Server.

  • Kompilerade anpassade .NET-klasser måste finnas i DLL-filer.

  • C#-metoden som du anropar måste anges i parametern script i den lagrade proceduren.

  • Om klassen tillhör ett paket måste den packageName anges.

  • params används för att skicka parametrar till en C#-klass. Det går inte att anropa en metod som kräver argument. Därför är parametrar det enda sättet att skicka argumentvärden till din metod.

Anmärkning

I den här anteckningen upprepas åtgärder som stöds och inte stöds som är specifika för C# i SQL Server 2019 (15.x) och senare versioner. I den lagrade proceduren stöds indataparametrar, medan utdataparametrar inte stöds.

Anropa C#-kod

Den sp_execute_external_script system lagrade proceduren är gränssnittet som används för att anropa .NET-körningen. I följande exempel visas ett sp_execute_external_script med .NET-tillägget och parametrar för att ange sökväg, skript och din anpassade kod.

Anmärkning

Du behöver inte definiera vilken metod som ska anropas. Som standard anropas en metod som heter Execute . Det innebär att du måste följa Microsoft Extensibility SDK för C# för SQL Server och implementera en Execute metod i C#-klassen.

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;

Använda externt bibliotek

I SQL Server 2019 (15.x) och senare versioner kan du använda externa bibliotek för C#-språket i Windows. Du kan kompilera dina klasser till en DLL-fil och ladda upp DLL och andra beroenden till databasen med hjälp av DDL:et CREATE EXTERNAL LIBRARY (SKAPA EXTERNT BIBLIOTEK ).

Exempel på hur du laddar upp en DLL-fil med ett externt bibliotek:

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

När det skapar ett externt bibliotek har SQL Server automatiskt åtkomst till C#-klasserna och du behöver inte ange några särskilda behörigheter för sökvägen.

Följande kod är ett exempel på att anropa Execute metoden i klassen MyClass från ett paket MyPackage, uppladdat som ett externt bibliotek:

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

Mer information finns i SKAPA EXTERNT BIBLIOTEK.