Установка расширения языка SQL Server .NET в Windows

Область применения: SQL Server 2019 (15.x) и более поздних версий

Узнайте, как установить компонент расширения языка .NET (используемый C#) для SQL Server в Windows. Расширение языка .NET входит в состав расширений языка SQL Server.

Примечание.

Эта статья предназначена для установки расширения языка .NET для SQL Server в Windows. ОС Linux не поддерживается.

Предварительные требования

Примечание.

Возможности компонентов и параметры установки зависят от версии SQL Server. Используйте раскрывающийся список селектора версий, чтобы выбрать соответствующую версию SQL Server.

  • Программа установки SQL Server необходима, если требуется установить поддержку расширения языка .NET.

  • Расширение языка .NET поддерживает среду выполнения .NET 6 и более поздних версий и поддерживается только в Windows.

  • Требуется экземпляр ядра СУБД. Вы не можете установить только компоненты расширения языка .NET, хотя их можно добавить постепенно в существующий экземпляр.

  • Для обеспечения непрерывности бизнеса для расширений языка поддерживаются группы доступности Always On. Необходимо установить расширения языка и настроить пакеты на каждом узле. Установка расширения языка .NET также поддерживается в экземпляре отказоустойчивого кластера в SQL Server.

  • Не устанавливайте расширения языка SQL Server или расширение языка .NET на контроллере домена. Не удается выполнить установку расширений языка.

  • Расширения языка и службы машинного обучения устанавливаются по умолчанию в кластерах больших данных SQL Server. Если вы используете Кластеры больших данных, вам не нужно выполнять действия, описанные в этой статье. Дополнительные сведения см. в статье Запуск скриптов Python и R с использованием служб машинного обучения в кластерах больших данных SQL Server 2019.

Внимание

После завершения установки обязательно выполните действия после конфигурации, описанные в этой статье. Эти действия включают настройку SQL Server для использования внешнего кода и добавление учетных записей, необходимых SQL Server для выполнения кода C# от вашего имени. Изменения в конфигурации обычно требуют перезапуска экземпляра или службы Launchpad.

Среда выполнения .NET

Долгосрочная поддержка .NET 6 (LTS) является самой ранней поддерживаемой средой выполнения. Вы можете скачать среду выполнения .NET для Windows. ОС Linux не поддерживается.

Если вы хотите использовать последнюю версию LTS среды выполнения .NET, необходимо перекомпилировать расширение языка .NET.

Получение установочного носителя

Расположение скачивания для SQL Server зависит от выпуска:

Запуск программы установки

Для локальных установок необходимо запускать программу установки с правами администратора. Если SQL Server устанавливается с удаленного общего ресурса, необходимо использовать учетную запись домена, у которой есть разрешения чтения и записи на этом удаленном ресурсе.

  1. Запустите мастер установки SQL Server.

  2. На вкладке Установка выберите параметр Новая установка изолированного экземпляра SQL Server или добавление компонентов к существующей установке.

  3. На странице Выбор компонентов выберите следующие компоненты:

    Службы ядра СУБД: Чтобы использовать расширения языков в SQL Server, необходимо установить экземпляр ядра СУБД. Можно использовать экземпляр по умолчанию или именованный экземпляр.

    Службы машинного обучения и языковые расширения: Этот параметр устанавливает компонент «Языковые расширения», который поддерживает выполнение кода C#.

    Скриншот функций экземпляра.

  4. На странице Все готово для установки проверьте, включены ли указанные ниже компоненты, и нажмите Установить.

    • Службы ядра СУБД
    • Службы машинного обучения и расширения языка

    Обратите внимание на расположение папки в каталоге ..\Setup Bootstrap\Log, где хранятся файлы конфигурации. После завершения установки можно просмотреть установленные компоненты в файле сводки.

  5. Если после завершения установки будет предложено перезагрузить компьютер, выполните перезагрузку. Важно прочитать сообщение мастера установки после завершения установки. Дополнительные сведения см. в разделе "Просмотр и чтение файлов журнала установки SQL Server".

Регистрация расширения языка

  1. Выполните следующие действия, чтобы скачать и зарегистрировать расширение языка .NET, которое используется для выполнения кода C#.

    1. Скачайте файл dotnet-core-CSharp-lang-extension-windows-release.zip из репозитория GitHub расширения языка .NET для SQL Server. Скачайте последнюю версию файла dotnet-core-CSharp-lang-extension-windows-release.zip для Windows. Если вы предпочитаете использовать более новую среду выполнения .NET, необходимо скомпилировать dotnet-core-CSharp-lang-extension из исходного кода GitHub.

    2. Используйте SQL Server Management Studio (SSMS) для подключения к экземпляру SQL Server и выполните следующую команду Transact-SQL (T-SQL), чтобы зарегистрировать расширение языка .NET с помощью CREATE EXTERNAL LANGUAGE.

    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. Перезапустите Панель запуска.

    1. Откройте Диспетчер конфигурации SQL Server.

    2. В разделе "Службы SQL Server" щелкните "Панель запуска SQL Server" правой кнопкой мыши и выберите параметр Перезапустить.

Перезапустить службу

После завершения установки перезапустите ядро СУБД перед продолжением следующего шага, включив выполнение скрипта.

При перезапуске службы автоматически перезапускается соответствующая служба Панель запуска SQL Server.

Вы можете перезапустить службу с помощью команды контекстного меню Restart для экземпляра в SSMS, с помощью панели Службы в Панели управления или с помощью Диспетчера конфигурации SQL Server.

Включение выполнения сценария

  1. Откройте SQL Server Management Studio. Подключитесь к экземпляру, в который вы установили расширения языка, выберите Создать запрос, чтобы открыть окно запроса, и выполните следующую команду:

    EXECUTE sp_configure;
    

    Эта функция по умолчанию отключена (value0) и, прежде чем вы сможете выполнять код C#, должна быть явно включена администратором.

  2. Чтобы включить внешний компонент написания сценариев, выполните следующую инструкцию:

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

    Если вы уже включили функцию для служб Машинное обучение, не выполняйте повторную настройку для расширений языка. Базовая платформа расширяемости поддерживает и те, и другие.

Регистрация внешнего языка

Для каждой базы данных, в которой вы хотите использовать расширения языка, необходимо зарегистрировать внешний язык в CREATE EXTERNAL LANGUAGE.

В следующем примере в базу данных на SQL Server в среде Windows добавляется внешний язык с именем dotnet.

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

Дополнительные сведения см. в разделе CREATE EXTERNAL LANGUAGE.

Проверка установки

Проверьте состояние установки экземпляра в журналах установки.

Выполните указанные ниже действия, чтобы убедиться в том, что все компоненты, используемые для запуска внешнего скрипта, запущены.

Вы можете подключиться к экземпляру SQL Server с помощью любого знакомого клиентского средства SQL Server, например sqlcmd, SQL Server Management Studio (SSMS) или расширения MSSQL для Visual Studio Code.

  1. Подключитесь к клиенту базы данных и выполните следующую инструкцию:

    EXECUTE sp_configure 'external scripts enabled';
    

    Теперь run_value имеет значение 1.

  2. Откройте раздел Службы или диспетчер конфигурации SQL Server и убедитесь, что служба Панель запуска SQL Server запущена. Для каждого экземпляра ядра СУБД, для которого установлены языковые расширения, должна быть одна служба. Дополнительные сведения о службе см. в разделе "Архитектура расширяемости" в расширениях языка SQL Server.

Дополнительная настройка

Если шаг проверки выполнен успешно, можно запустить код C# от любого клиента, который может отправлять инструкции T-SQL на сервер.

Если при выполнении команды возникнет ошибка, обратитесь к дополнительным шагам настройки, указанным в этом разделе. Возможно, потребуется внести дополнительные конфигурации в службу или базу данных.

На уровне экземпляра дополнительные параметры конфигурации могут включать:

В базе данных могут потребоваться следующие обновления конфигурации:

Примечание.

Необходимость дополнительной настройки зависит от схемы безопасности, в которой установлен ваш SQL Server, и от того, как ваши пользователи должны подключаться к базе данных и запускать внешние скрипты.

Предлагаемые оптимизации

Теперь, когда у вас все работает, может потребоваться оптимизировать сервер для поддержки расширения языка .NET.

Оптимизация сервера для расширения языка .NET

Параметры по умолчанию для установки SQL Server предназначены для оптимизации баланса сервера для различных служб, поддерживаемых ядро СУБД, которые могут включать процессы извлечения, преобразования и загрузки (ETL), отчетов, аудита и приложений, использующих данные SQL Server. В связи с этим при использовании параметров по умолчанию ресурсы для расширений языка могут быть ограничены или регулироваться, особенно в случае с операциями с интенсивным использованием памяти.

Чтобы задачам расширений языка назначались соответствующие приоритеты и выделялись необходимые ресурсы, рекомендуем использовать Resource Governor SQL Server для настройки внешнего пула ресурсов. Вы также можете изменить объем памяти, выделяемой для ядра СУБД, или увеличить количество учетных записей, от имени которых запускается служба SQL Server Launchpad.

Если вы используете выпуск Standard и не имеете регулятора ресурсов, вы можете использовать динамические административные представления и расширенные события, а также мониторинг событий Windows для управления ресурсами сервера.

Следующий шаг

Разработчики C# могут приступить к работе с некоторыми простыми примерами и узнать основы работы C# с SQL Server. Сведения о следующем шаге см. по ссылке: