Delen via


De .NET-runtime aanroepen in SQL Server Language Extensions

Van toepassing op: SQL Server 2019 (15.x) en latere versies

De functie SQL Server Language Extensions maakt gebruik van de sp_execute_external_script door het systeem opgeslagen procedure als interface voor het aanroepen van de .NET-runtime.

In dit artikel wordt informatie over de implementatie uitgelegd voor C#-code die wordt uitgevoerd op SQL Server.

Waar C#-klassen plaatsen

U roept C#-code aan in SQL Server door gecompileerde .NET-bibliotheken (DLL's) en andere afhankelijkheden naar de database te uploaden met behulp van de DDL van de externe bibliotheek . Zie Een .NET DLL maken op basis van een C#-project voor meer informatie.

Basisprincipes

Hier volgen enkele basisprincipes bij het uitvoeren van C# op SQL Server.

  • Gecompileerde aangepaste .NET-klassen moeten bestaan in DLL-bestanden.

  • De C#-methode die u aanroept, moet worden opgegeven in de script parameter voor de opgeslagen procedure.

  • Als de klasse deel uitmaakt van een pakket, moet de packageName klasse worden opgegeven.

  • params wordt gebruikt om parameters door te geven aan een C#-klasse. Het aanroepen van een methode waarvoor argumenten zijn vereist, wordt niet ondersteund. Daarom zijn parameters de enige manier om argumentwaarden door te geven aan uw methode.

Opmerking

Deze opmerking plaatst ondersteunde en niet-ondersteunde bewerkingen die specifiek zijn voor C# in SQL Server 2019 (15.x) en latere versies. In de opgeslagen procedure worden invoerparameters ondersteund, terwijl uitvoerparameters niet worden ondersteund.

C#-code aanroepen

De sp_execute_external_script door het systeem opgeslagen procedure is de interface die wordt gebruikt om de .NET-runtime aan te roepen. In het volgende voorbeeld ziet u een sp_execute_external_script met behulp van de .NET-extensie en parameters voor het opgeven van pad, script en uw aangepaste code.

Opmerking

U hoeft niet te definiƫren welke methode moet worden aangeroepen. Standaard wordt een aangeroepen Execute methode aangeroepen. Dit betekent dat u de Microsoft Extensibility SDK voor C# voor SQL Server moet volgen en een Execute methode in uw C#-klasse moet implementeren.

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;

Externe bibliotheek gebruiken

In SQL Server 2019 (15.x) en latere versies kunt u externe bibliotheken gebruiken voor de C#-taal in Windows. U kunt uw klassen compileren in een DLL-bestand en de DLL en andere afhankelijkheden uploaden naar de database met behulp van de DDL CREATE EXTERNAL LIBRARY .

Voorbeeld van het uploaden van een DLL-bestand met een externe bibliotheek:

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

Wanneer er een externe bibliotheek wordt gemaakt, heeft SQL Server automatisch toegang tot de C#-klassen en hoeft u geen speciale machtigingen voor het pad in te stellen.

De volgende code is een voorbeeld van het aanroepen van de Execute methode in klasse MyClass vanuit een pakket MyPackage, geüpload als een externe bibliotheek:

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

Zie CREATE EXTERNAL LIBRARY voor meer informatie.