Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
scripti den lagrade proceduren.Om klassen tillhör ett paket måste den
packageNameanges.paramsanvä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.