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 扩展所使用的输入和输出数据的接口。