Microsoft Extensibility SDK per C# per SQL Server
Si applica a: SQL Server 2019 (15.x) e versioni successive
Informazioni su come implementare un programma C# per SQL Server usando Microsoft Extensibility SDK per .NET. L'SDK è un'interfaccia per l'estensione del linguaggio .NET utilizzabile per scambiare dati con SQL Server ed eseguire codice C# da SQL Server.
Il codice è open source ed è disponibile nel repository GitHub delle estensioni del linguaggio di SQL Server.
Requisiti di implementazione
L'interfaccia dell'SDK definisce un set di requisiti che devono essere soddisfatti affinché SQL Server sia in grado di comunicare con il runtime NET. Per usare l'SDK, è necessario seguire alcune regole di implementazione nella classe principale. SQL Server può quindi eseguire un metodo specifico in C# e scambiare dati usando l'estensione del linguaggio .NET.
Per un esempio di come usare l'SDK, vedere Esercitazione: cercare una stringa usando espressioni regolari (regex) in C#.
Classi dell'SDK
L'SDK è costituito da diverse classi.
La classe astratta
AbstractSqlServerExtensionExecutor
definisce l'interfaccia usata dall'estensione .NET per scambiare dati con SQL Server.Diverse classi helper implementano l'oggetto del set di dati
CSharpDataSet
.
Nella sezione seguente sono disponibili descrizioni di ogni classe dell'SDK. Il codice sorgente delle classi SDK è disponibile nel repository GitHub delle estensioni del linguaggio di SQL Server.
Classe: AbstractSqlServerExtensionExecutor
La classe astratta AbstractSqlServerExtensionExecutor
contiene l'interfaccia usata per eseguire il codice C# dall'estensione del linguaggio .NET per SQL Server.
La classe C# principale deve ereditare da questa classe. Ereditare da questa classe significa che esistono alcuni metodi della classe che è necessario implementare nella propria classe.
Per ereditare da questa classe astratta, si estende con il nome della classe astratta nella dichiarazione della classe, dove MyClass
è il nome della propria classe:
public class MyClass : AbstractSqlServerExtensionExecutor {}
La classe principale deve implementare almeno il metodo Execute(...)
.
Metodo Execute
Il metodo Execute
è il metodo chiamato da SQL Server tramite l'estensione del linguaggio NET per richiamare il codice C# da SQL Server. Si tratta di un metodo chiave in cui si includono le operazioni principali che si vuole eseguire da SQL Server.
Per passare gli argomenti del metodo a C# da SQL Server, usare il parametro @param
in sp_execute_external_script
. Il metodo Execute
accetta gli argomenti in questo modo.
public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);
Metodo Init
Il metodo Init
viene eseguito dopo il costruttore e prima del metodo Execute
. Qualsiasi operazione che deve essere eseguita prima di Execute
può essere eseguita in questo metodo.
public virtual void Init(string sessionId, int taskId, int numTasks);
Classe: CSharpExtension
La classe CSharpExtension
implementa tutte le API delle estensioni del linguaggio e restituisce i risultati all'host nativo.
Classe: CSharpDataSet
La classe astratta CSharpDataSet
contiene l'interfaccia per la gestione dei dati di input e output usati dall'estensione .NET.