SQL Server 用于 C# 的 Microsoft 扩展性 SDK

适用于: SQL Server 2019 (15.x) 及更高版本

了解如何才能使用用于 .NET 的 Microsoft 扩展性 SDK 为 SQL Server 实现 C# 程序。 SDK 是用于与 SQL Server 交换数据并从 SQL Server 执行 C# 代码的 .NET 语言扩展的接口。

该代码是开放源代码,可在 SQL Server 语言扩展 GitHub 存储库中找到。

实现要求

SDK 接口定义了一组要求,SQL Server 需要满足这些要求才能与 .NET 运行时通信。 若要使用 SDK,需要在主类中遵循一些实现规则。 SQL Server 随后可以执行 C# 中的特定方法,并使用 .NET 语言扩展交换数据。

有关如何使用 SDK 的示例,请参阅教程:在 C# 中使用正则表达式 (regex) 搜索字符串

SDK 类

SDK 由几个类组成。

  • 抽象类 AbstractSqlServerExtensionExecutor 定义 .NET 扩展用于与 SQL Server 交换数据的接口。

  • 多个帮助程序类将实现 CSharpDataSet 数据集对象。

在下节中,将会看到 SDK 中每个类的说明。 SDK 类的源代码在 SQL Server 语言扩展 GitHub 存储库中提供。

类:AbstractSqlServerExtensionExecutor

抽象类 AbstractSqlServerExtensionExecutor 包含由 SQL Server 的 .NET 语言扩展用于执行 C# 代码的接口。

主 C# 类需要从此类继承。 从此类继承表示类中有一些需要在自己的类中实现的特定方法。

若要从此抽象类继承,请在类声明中使用抽象类名进行扩展,其中 MyClass 是类的名称:

public class MyClass : AbstractSqlServerExtensionExecutor {}

主类至少需要实现 Execute(...) 方法。

Execute 方法

Execute 方法是通过 .NET 语言扩展从 SQL Server 进行调用,以便从 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 扩展所使用的输入和输出数据的接口。