Come chiamare il runtime .NET nelle estensioni del linguaggio di SQL Server
Si applica a: SQL Server 2019 (15.x) e versioni successive
Le funzionalità estensioni del linguaggio di SQL Server usa la stored procedure di sistema sp_execute_external_script come interfaccia per chiamare il runtime .NET.
Questo articolo illustra i dettagli di implementazione per il codice C# eseguito in SQL Server.
Dove inserire le classi C#
Il codice C# viene chiamato in SQL Server caricando librerie .NET compilate (DLL) e altre dipendenze nel database usando il DDL della libreria esterna. Per altre informazioni, vedere Creare un file DLL .NET da un progetto C#.
Principi di base
Di seguito sono riportati alcuni principi di base per l'esecuzione di C# in SQL Server.
Le classi .NET personalizzate compilate devono esistere in file DLL.
Il metodo C# che si sta chiamando deve essere specificato nel parametro
script
nella stored procedure.Se la classe appartiene a un pacchetto, è necessario specificare il
packageName
.params
viene usato per passare parametri a una classe C#. La chiamata a un metodo che richiede argomenti non è supportata. Pertanto, i parametri sono l'unico modo per passare i valori degli argomenti al metodo.
Nota
Questa nota riporta le operazioni supportate e non supportate specifiche di C# in SQL Server 2019 (15.x) e versioni successive. Nella stored procedure sono supportati i parametri di input, mentre i parametri di output non sono supportati.
Chiamare il codice C#
La stored procedure di sistema sp_execute_external_script è l'interfaccia usata per chiamare il runtime .NET. L'esempio seguente illustra un sp_execute_external_script
che usa l'estensione .NET e i parametri per specificare il percorso, lo script e il codice personalizzato.
Nota
Non è necessario definire il metodo da chiamare. Per impostazione predefinita, viene chiamato un metodo denominato Execute
. Ciò significa che è necessario seguire Microsoft Extensibility SDK per C# in SQL Server e implementare un metodo Execute
nella 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;
Usare una libreria esterna
In SQL Server 2019 (15.x) e versioni successive è possibile usare librerie esterne per il linguaggio C# su Windows. È possibile compilare le classi in un file DLL e caricare la DLL e altre dipendenze nel database usando il DDL CREATE EXTERNAL LIBRARY.
Esempio di come caricare un file DLL con libreria esterna:
CREATE EXTERNAL LIBRARY [dotnetlibrary]
FROM (CONTENT = '<local path to .dll file>')
WITH (LANGUAGE = 'dotnet');
GO
Creando una libreria esterna, SQL Server avrà automaticamente accesso alle classi C# e non sarà necessario impostare autorizzazioni di accesso speciali per il percorso.
Il codice seguente è un esempio di chiamata di un metodo Execute
in una classe MyClass
da un pacchetto MyPackage
, caricato come libreria esterna:
EXEC sp_execute_external_script
@language = N'dotnet',
@script = N'MyPackage.MyClass',
@input_data_1 = N'SELECT * FROM MYTABLE'
WITH RESULT SETS((column1 INT));
Per altre informazioni, vedere CREATE EXTERNAL LIBRARY.