分享方式:


適用於 SQL Server 的 Microsoft Extensibility SDK for C#

適用於:SQL Server 2019 (15.x) 和更新版本

了解如何使用「適用於 .NET 的 Microsoft 擴充性 SDK」來實作適用於 SQL Server 的 C# 程式。 SDK 是 .NET 語言延伸模組的介面,可用來與 SQL Server 交換資料,並從 SQL Server 執行 C# 程式碼。

此程式碼是開放原始碼,而且可以在 SQL Server 語言延伸模組 GitHub 存放庫中找到。

實作需求

SDK 介面會定義一組需求,必須滿足這組需求,SQL Server 才能與 .NET 執行階段進行通訊。 若要使用 SDK,您必須在主要類別中遵循一些實作規則。 之後,SQL Server 可以執行 C# 中的特定方法,並使用 .NET 語言延伸模組交換資料。

如需如何使用 SDK 的範例,請參閱教學課程:在 C# 中使用規則運算式 (regex) 搜尋字串

SDK 類別

SDK 是由數個類別所組成。

  • 抽象類別 AbstractSqlServerExtensionExecutor 會定義 .NET 延伸模組用來與 SQL Server 交換資料的介面。

  • 數個協助程式類別會實作 CSharpDataSet 資料集物件。

在下一節中,您會在 SDK 中找到每個類別的描述。 您可以在 SQL Server 語言延伸模組 GitHub 存放庫中找到 SDK 類別的原始程式碼。

類別:AbstractSqlServerExtensionExecutor

抽象類別 AbstractSqlServerExtensionExecutor 包含適用於 SQL Server 的 .NET 語言延伸模組用來執行 C# 程式碼的介面。

您的主要 C# 類別必須繼承自此類別。 繼承自此類別表示類別中有您必須在自己的類別中實作的特定方法。

若要繼承自這個抽象類別,您可以在類別宣告中使用抽象類別名稱來擴充,其中 MyClass 為類別名稱:

public class MyClass : AbstractSqlServerExtensionExecutor {}

您的主要類別至少必須實作 Execute(...) 方法。

Execute 方法

Execute 方法是從 SQL Server 透過 .NET 語言延伸模組呼叫的方法,用來從 SQL Server 叫用 C# 程式碼。 這是一個重要的方法,其中包含您想要從 SQL Server 執行的主要作業。

若要從 SQL Server 將方法引數傳遞至 C#,請在 sp_execute_external_script 中使用 @param 參數。 Execute 方法會以該方式接受其引數。

public abstract DataFrame Execute(DataFrame input, Dictionary<string, dynamic> sqlParams);

Init 方法

Init 方法會在建構函式之後和 Execute 方法之前執行。 需要在 Execute 之前執行的任何操作都可以使用這個方法來完成。

public virtual void Init(string sessionId, int taskId, int numTasks);

類別:CSharpExtension

類別 CSharpExtension 會實作所有語言延伸模組 API,並將結果傳回原生主機。

類別:CSharpDataSet

抽象類別 CSharpDataSet 包含用來處理 .NET 延伸模組所使用之輸入和輸出資料的介面。