Partager via


Guide pratique pour appeler le runtime .NET dans les extensions de langage SQL Server

S’applique à : SQL Server 2019 (15.x) et versions ultérieures

Les extensions de langage SQL Server utilisent la procédure stockée système sp_execute_external_script comme interface pour appeler le runtime .NET.

Cet article Aide et Astuces décrit les détails relatifs à l’implémentation du code C# qui s’exécute sur SQL Server.

Où placer les classes C#

Vous appelez du code C# dans SQL Server en chargeant des bibliothèques .NET compilées (DLL) et d’autres dépendances dans la base de données à l’aide de la bibliothèque externe DDL. Pour plus d’informations, consultez Créer un projet .NET DLL à partir d’un projet C#.

Principes de base

Voici quelques principes de base liés à l’exécution de C# sur SQL Server.

  • Les classes .NET personnalisées compilées doivent exister dans des fichiers DLL.

  • La méthode C# que vous appelez doit être indiquée dans le paramètre script de la procédure stockée.

  • Si la classe appartient à un package, le packageName doit être fourni.

  • params permet de passer des paramètres à une classe C#. L’appel d’une méthode qui nécessite des arguments n’est pas pris en charge. Les paramètres sont donc le seul moyen de passer des valeurs d’argument à votre méthode.

Remarque

Cette remarque rappelle les opérations prises en charge et non prises en charge spécifiques à C# dans SQL Server 2019 (15.x) et versions ultérieures. Dans la procédure stockée, les paramètres d’entrée sont pris en charge, tandis que les paramètres de sortie ne sont pas pris en charge.

Appeler le code C#

La procédure stockée système sp_execute_external_script est l’interface utilisée pour appeler le runtime .NET. L’exemple suivant montre une procédure stockée système sp_execute_external_script qui utilise l’extension .NET, et des paramètres qui permettent de spécifier le chemin, le script et votre code personnalisé.

Remarque

Vous n’avez pas besoin de définir la méthode à appeler. Par défaut, une méthode nommée Execute est appelée. Cette appellation signifie que vous devez suivre le kit SDK d’extensibilité Microsoft pour C# pour SQL Server, et implémenter une méthode Execute dans votre classe C#.

DECLARE @param1 INT;

SET @param1 = 3;

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

Utiliser une bibliothèque externe

Dans SQL Server 2019 (15.x) et versions ultérieures, vous pouvez utiliser des bibliothèques externes pour le langage C# sur Windows. Vous pouvez compiler vos classes dans un fichier DLL et charger le DLL ainsi que d’autres dépendances dans la base de données à l’aide de l’instruction DDL CRÉER UNE BIBLIOTHÈQUE EXTERNE.

Exemple de chargement d’un fichier DLL avec une bibliothèque externe :

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

Lorsque SQL Server crée une bibliothèque externe, il a automatiquement accès aux classes C#. De plus, il n’est pas nécessaire de définir des autorisations spéciales pour le chemin d’accès aux classes.

Le code suivant est un exemple d’appel de la méthode Execute dans la classe MyClass à partir d’un package MyPackage, téléchargé en tant que bibliothèque externe :

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

Pour plus d’informations, consultez CREATE EXTERNAL LIBRARY.