在 Windows 上安装 SQL Server .NET 语言扩展

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

了解如何为 Windows 上的 SQL Server 安装 .NET 语言扩展组件(被 C# 使用)。 .NET 语言扩展是 SQL Server 语言扩展的一部分。

注意

本文适用于在 Windows 上安装 SQL Server 的 .NET 语言扩展。 不支持 Linux。

先决条件

注意

功能和安装选项因 SQL Server 版本而异。 使用版本选择器下拉列表选择适当版本的 SQL Server。

  • 如果要安装针对 .NET 语言扩展的支持,则需要 SQL Server 安装程序。

  • .NET 语言扩展支持 .NET 6 及更高版本的运行时,并且仅在 Windows 上受支持。

  • 需要数据库引擎实例。 尽管可以将 .NET 语言扩展功能以增量方式添加到现有实例中,但无法只安装该功能。

  • 为实现业务连续性,语言扩展支持 Always On 可用性组。 必须在每个节点上安装语言扩展并配置包。 还支持在 SQL Server 中的故障转移群集实例上安装 .NET 语言扩展。

  • 请勿在域控制器上安装 SQL Server 语言扩展或 .NET 语言扩展。 安装程序的语言扩展部分失败。

  • 默认情况下,语言扩展和机器学习服务安装在 SQL Server 大数据群集上。 如果使用大数据群集,则无需按照本文中的步骤进行操作。 有关详细信息,请参阅通过机器学习服务在 SQL Server 2019 大数据群集上运行 Python 和 R 脚本

重要

安装完成后,请务必完成本文中所述的配置后步骤。 这些步骤包括使 SQL Server 能够使用外部代码,以及添加 SQL Server 代表你运行 C# 代码所需的帐户。 配置更改通常需要重启实例或重启 Launchpad 服务。

.NET 运行时

.NET 6 长期支持 (LTS) 是最早支持的运行时。 可以下载适用于 Windows 的 .NET 运行时。 不支持 Linux。

如果你要使用 .NET 运行时的最新 LTS 版本,则必须重新编译 .NET 语言扩展。

获取安装介质

SQL Server 的下载位置由版本决定:

  • SQL Server Enterprise、Standard 和 Express 版本。 这些版本已获得生产使用许可。 如需 Enterprise 和 Standard 版本,请联系软件供应商获取安装媒体。 你可以在 Microsoft 采购网站上找到采购信息和 Microsoft 合作伙伴目录。
  • 最新免费版本

运行安装程序

对于本地安装,必须以管理员身份运行安装程序。 如果从远程共享安装 SQL Server ,则必须使用对远程共享具有读取和执行权限的域帐户。

  1. 启动 SQL Server 的安装向导。

  2. 在“安装”选项卡上,选择“全新 SQL Server 独立安装或向现有安装添加功能” 。

  3. 在“功能选择” 页上,选择以下选项:

    数据库引擎服务:要将语言扩展与 SQL Server 结合使用,必须安装数据库引擎的实例。 可使用默认实例或命名实例。

    机器学习服务和语言扩展:此选项将安装支持 C# 代码执行的语言扩展组件。

    实例功能的屏幕截图。

  4. 在“准备安装”页面上,验证是否已包括这些选择,然后选择“安装” 。

    • 数据库引擎服务
    • 机器学习服务和语言扩展

    请注意配置文件存储路径 ..\Setup Bootstrap\Log 下的文件夹位置。 安装完成后,可以在“摘要”文件中查看已安装的组件。

  5. 安装完成后,如果收到重启计算机的指示,请立即重启。 安装完成后,请务必阅读安装向导中的消息。 有关详细信息,请参阅 查看和读取 SQL Server 安装程序日志文件

注册语言扩展

  1. 按照以下步骤下载并注册 .NET 语言扩展,该扩展用于运行 C# 代码。

    1. SQL Server GitHub 存储库的 .NET 语言扩展下载 dotnet-core-CSharp-lang-extension-windows-release.zip 文件。 下载最新的 Windows dotnet-core-CSharp-lang-extension-windows-release.zip 文件。 如果你想要使用较新的 .NET 运行时,则需要从 GitHub 源代码编译 dotnet-core-CSharp-lang-extension

    2. 使用 SQL Server Management Studio (SSMS)Azure Data Studio 连接到 SQL Server 实例,并运行以下 Transact-SQL (T-SQL) 命令,以便使用 CREATE EXTERNAL LANGUAGE 注册 .NET 语言扩展。

    3. 修改此语句中的路径,以反映下载的语言扩展 zip 文件 (dotnet-core-CSharp-lang-extension-windows-release.zip) 的位置。

    CREATE EXTERNAL LANGUAGE [dotnet]
    FROM (CONTENT = N'C:\path\to\dotnet-core-CSharp-lang-extension-windows-release.zip',
        FILE_NAME = 'dotnetextension.dll');
    GO
    
  2. 重启 Launchpad

    1. 打开“SQL Server 配置管理器”

    2. 在“SQL Server 服务”下,右键单击“SQL Server Launchpad”,然后选择“重启” 。

重新启动服务。

安装完成后,请先重启数据库引擎,然后再继续执行下一步,以启用脚本执行。

重启 SQL Server 服务也会自动重启相关的 SQL Server Launchpad 服务。

可以使用 SSMS 中实例的右键单击“重启”命令、“控制面板”中的“服务”面板,或者使用 SQL Server 配置管理器来重启服务。

启用脚本执行

  1. 打开 SQL Server Management Studio。 连接到已安装语言扩展的实例,选择“新建查询”以打开查询窗口,并运行以下命令:

    EXEC sp_configure;
    

    此功能默认处于关闭状态(value0),必须在管理员显式启用此功能后,才能运行 C# 代码。

  2. 若要启用外部脚本编写功能,请运行以下语句:

    EXEC sp_configure 'external scripts enabled', 1;
    GO
    RECONFIGURE WITH OVERRIDE
    

    如果已为机器学习服务启用此功能,请勿再次为语言扩展运行重新配置。 基础扩展性平台支持这两种方法。

注册外部语言

对于想要在其中使用语言扩展的每个数据库,需要使用 CREATE EXTERNAL LANGUAGE 注册外部语言。

以下示例将一种名为 dotnet 的外部语言添加到 Windows 上的 SQL Server 的数据库中。

CREATE EXTERNAL LANGUAGE [dotnet]
FROM (CONTENT = N'<path-to-zip>', FILE_NAME = 'dotnetextension.dll');
GO

有关详细信息,请参阅 CREATE EXTERNAL LANGUAGE

验证安装

在安装程序日志中检查实例的安装状态。

使用以下步骤验证用于启动外部脚本的所有组件是否都在运行。

  1. 在 SQL Server Management Studio 或 Azure Data Studio 中打开新的查询窗口,然后运行以下语句:

    EXEC sp_configure 'external scripts enabled';
    

    run_value 现已设置为 1

  2. 打开“服务”面板或 SQL Server 配置管理器,并验证“SQL Server Launchpad”是否正在运行 。 应有一项服务适用于已安装语言扩展的每个数据库引擎实例。 有关该服务的更多信息,请参阅 SQL Server 语言扩展中的扩展性体系结构

其他配置

如果验证步骤成功,则可以从 SQL Server Management Studio、Azure Data Studio、Visual Studio Code 或者能够向服务器发送 T-SQL 语句的其他任何客户端运行 C# 命令。

如果在运行命令时遇到错误,请查看本部分中的其他配置步骤。 可能需要对服务或数据库进行其他适当配置。

在实例级别,其他配置可能包括:

数据库上可能需要以下配置更新:

注意

是否需要其他配置取决于安全架构、SQL Server 的安装位置,以及期望用户以何方式连接到数据库和运行外部脚本。

建议的优化

一切正常运行后,可能还需要优化服务器以支持 .NET 语言扩展。

针对 .NET 语言扩展优化服务器

SQL Server 安装程序的默认设置旨在为数据库引擎支持的各种服务(可能包括提取、转换和加载 (ETL) 进程、报告、审核和使用 SQL Server 数据的应用程序)优化服务器平衡。 因此,在默认设置下,可能会发现语言扩展(尤其是占用大量内存的操作)的资源有时被限制或被阻止。

若要确保语言扩展作业的优先级别并为其分配相应资源,建议使用 SQL Server Resource Governor 配置外部资源池。 可能还想要更改分配到数据库引擎的内存量,或增加 SQL Server Launchpad 服务下运行的帐户数。

如果使用的是 Standard edition 且没有 Resource Governor,则可以使用动态管理视图 (DMV) 和扩展事件以及 Windows 事件监视来帮助管理服务器资源。

下一步

C# 开发人员可以开始使用一些简单的示例,并了解 C# 如何与 SQL Server 协同工作的基础知识。 有关下一步,请参阅以下链接: