Устранение неполадок со службой панели запуска, выполняющей скрипты Python и R в Службах машинного обучения SQL Server

Применимо к: SQL Server 2016 (13.x) и более поздних версий

Эта статья содержит рекомендации по устранению неполадок, связанных со службой Панели запуска SQL Server при использовании Служб машинного обучения. Служба панели запуска поддерживает выполнение внешних скриптов для R и Python. Запуску панели запуска SQL Server могут препятствовать различные неполадки, включая проблемы или изменения в конфигурации и отсутствие сетевых протоколов.

Определение того, выполняется панель запуска

  1. Откройте Диспетчер конфигурации SQL Server. В командной строке введите SQLServerManager13.msc, SQLServerManager14.msc или SQLServerManager15.msc.

  2. Запишите учетную запись службы, под которой выполняется панель запуска. Каждый экземпляр, где включен R или Python, должен иметь собственный экземпляр службы панели запуска. Например, служба для именованного экземпляра может иметь вид MSSQLLaunchpad$имя_экземпляра.

  3. Если служба остановлена, перезапустите ее. Если при перезапуске возникают проблемы с конфигурацией, в журнал системных событий заносится сообщение, а служба снова останавливается. Проверьте журнал системных событий на наличие сведений о причинах остановки службы.

  4. Проверьте содержимое файла RSetup.log и убедитесь в отсутствии ошибок в программе установки. Например, сообщение Выполняется выход с кодом 0 указывает на сбой запуска службы.

  5. Чтобы найти другие ошибки, просмотрите содержимое файла журнала rlauncher.log.

Проверка учетной записи службы панели запуска

По умолчанию может использоваться учетная запись службы "NT Service$SQL2016", "NT Service$SQL2017" или "NT Service$SQL2019". Конечная часть может отличаться в зависимости от имени экземпляра SQL.

Служба панели запуска (Launchpad.exe) выполняется с использованием учетной записи службы с минимальными правами доступа. Однако, чтобы запустить R и Python и взаимодействовать с экземпляром базы данных, учетной записи службы панели запуска требуются следующие права пользователя:

  • Вход в систему в качестве службы (SeServiceLogonRight)
  • Замена токена уровня процесса (SeAssignPrimaryTokenPrivilege)
  • Обход проходной проверки (SeChangeNotifyPrivilege)
  • Настройка квот памяти для процесса (SeIncreaseQuotaSizePrivilege)

Сведения об этих правах пользователя см. в разделе "Права доступа и права Windows" статьи Настройка учетных записей службы Windows и разрешений.

Совет

Если вы знакомы с использованием средства Support Diagnostics Platform (SDP) для диагностики SQL Server, можете использовать SDP для просмотра выходного файла с именем "имя_компьютера_UserRights.txt".

Группе пользователей для панели запуска не удается войти в систему локально

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

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

Чтобы устранить проблему, задайте для группы SQLRUserGroup разрешение Локальный вход в систему.

Дополнительные сведения см. в статье Настройка учетных записей службы Windows и разрешений.

Разрешения для запуска внешних скриптов

Даже если панель запуска настроена правильно, она возвращает ошибку, когда у пользователя нет разрешения на выполнение скриптов R или Python.

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

Чтобы устранить эту проблему, в SQL Server Management Studio администратор безопасности может изменить имя входа SQL или учетную запись пользователя Windows, запустив следующий скрипт:

GRANT EXECUTE ANY EXTERNAL SCRIPT TO <username>

Дополнительные сведения см. в разделе GRANT (Transact-SQL).

Распространенные ошибки панели запуска

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

"Не удается запустить среду выполнения для скрипта R"

Если группа Windows для пользователей R (также используемая для Python) не может войти в экземпляр, где выполняются службы R Services, могут отобразиться следующие ошибки:

  • Ошибки, возникающие при попытке запуска скриптов R:

    • Не удается запустить среду выполнения для сценария R. Проверьте конфигурацию среды выполнения R.

    • Возникла ошибка во внешнем сценарии. Не удается запустить среду выполнения.

  • Ошибки, вызываемые службой Панель запуска SQL Server:

    • Не удалось инициализировать средство запуска RLauncher.dll

    • Библиотеки DLL средства запуска не зарегистрированы

    • Согласно журналам безопасности, учетной записи NT SERVICE не удалось выполнить вход

Сведения о том, как предоставить этой группе пользователей необходимые разрешения, см. в разделе Установка служб SQL Server R Services.

Примечание

Это ограничение не распространяется на тот случай, если вы используете имена входа SQL для выполнения скриптов R с удаленной рабочей станции.

"Вход в систему не произведен: выбранный режим входа для данного пользователя не предусмотрен"

По умолчанию при запуске Панель запуска SQL Server использует следующую учетную запись: NT Service\MSSQLLaunchpad. Учетная запись настраивается программой установки SQL Server, чтобы иметь все необходимые разрешения.

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

ERROR_LOGON_TYPE_NOT_GRANTED 1385 (0x569) Вход в систему не произведен: выбранный режим входа для данного пользователя на этом компьютере не предусмотрен

Чтобы предоставить новой учетной записи службы необходимые разрешения, используйте приложение "Локальная политика безопасности" и добавьте в учетную запись следующие разрешения:

  • Назначение квот памяти процессам (SeIncreaseQuotaPrivilege)
  • Обход проходной проверки (SeChangeNotifyPrivilege)
  • Вход в систему в качестве службы (SeServiceLogonRight)
  • Замена токена уровня процесса (SeAssignPrimaryTokenPrivilege)

"Не удалось связаться со службой панели запуска"

Если вы установили и затем включили машинное обучение, но эта ошибка возникает при попытке запуска скрипта R или Python, возможно, была остановлена служба панели запуска для этого экземпляра.

  1. Запустите диспетчер конфигурации SQL Server из командной строки Windows. Дополнительные сведения см. в разделе SQL Server Configuration Manager.

  2. Щелкните правой кнопкой мыши панель запуска SQL Server для этого экземпляра и выберите пункт Свойства.

  3. Откройте вкладку Службы и убедитесь, что служба запущена. Если это не так, установите АвтоматическийРежим запуска и нажмите кнопку Применить.

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

    а. Просмотрите файл CONFIG средства запуска и убедитесь, что рабочий каталог допустим.

    b. Убедитесь, что группа Windows, используемая панелью запуска, может подключаться к экземпляру SQL Server.

    c. При изменении любых свойств службы перезапустите службу панели запуска.

"Неустранимая ошибка: сбой при создании tmpFile"

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

Не удалось связаться со средой выполнения для скрипта R. Проверьте требования среды выполнения R.

В то же время среда выполнения внешнего скрипта записывает следующее сообщение в составе сообщения STDERR:

Неустранимая ошибка: сбой при создании tmpfile.

Эта ошибка означает, что у учетной записи, которую пытается использовать панель запуска, нет разрешения на вход в базу данных. Такая ситуация может возникать, если применены строгие политики безопасности. Чтобы определить, является ли это причиной, просмотрите журналы SQL Server и проверьте, не был ли запрещен доступ для учетной записи MSSQLSERVER01 при входе. Те же сведения приведены в журналах, относящихся к R_SERVICES или PYTHON_SERVICES. Найдите файл ExtLaunchError.log.

По умолчанию настроено 20 учетных записей, сопоставленных с процессом Launchpad.exe, с именами от MSSQLSERVER01 и до MSSQLSERVER20. При интенсивном использовании R или Python число учетных записей можно увеличить.

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

"Недостаточно квот для обработки этой команды"

Эта ошибка может указывать на одну из следующих ситуаций:

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

  • Недостаточно памяти для обработки задачи R. Эта ошибка чаще всего возникает в среде по умолчанию, где SQL Server может использовать до 70 процентов ресурсов компьютера. Сведения о том, как изменить конфигурацию сервера для увеличение объема ресурсов, используемых R, см. в статье Ввод в эксплуатацию кода R.

"Не удается найти пакет"

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

Эта ошибка может возникать во многих случаях:

  • Вы установили новый пакет на сервере, но в доступе было отказано, поэтому R установил пакет в пользовательскую библиотеку.

  • Вы установили службы R, а затем установили еще один инструмент или набор библиотек, например RStudio.

Чтобы определить расположение библиотеки пакетов R, используемое данным экземпляром, откройте SQL Server Management Studio (или любое другое средство по работе с запросами к базе данных), подключитесь к экземпляру, а затем запустите следующую хранимую процедуру:

EXEC sp_execute_external_script @language = N'R',  
@script = N' print(normalizePath(R.home())); print(.libPaths());'; 

Образец результатов

Сообщения STDOUT из внешнего скрипта:

[1] "C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\R_SERVICES"

[1] "C:/Program Files/Microsoft SQL Server/MSSQL13.SQL2016/R_SERVICES/library"

Чтобы устранить эту проблему, необходимо переустановить пакет в библиотеку экземпляров SQL Server.

Примечание

Если вы обновили экземпляр SQL Server 2016 для использования последней версии Microsoft R, расположение библиотеки по умолчанию отличается. Дополнительные сведения см. в разделе Расположение библиотеки R по умолчанию.

Завершение работы панели запуска из-за несовпадающих библиотек DLL

Если вы устанавливаете ядро СУБД с другими компонентами, устанавливаете исправление для сервера, а затем добавляете компонент Машинного обучения с использованием исходного носителя, может быть установлена неправильная версия компонентов Машинного обучения. Когда панель запуска обнаруживает несовпадение версий, она завершает работу и создает файл дампа.

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

Неправильный способ обновления:

  1. Установите SQL Server 2016 без служб R Services.
  2. Установите накопительный пакет обновления 2 для SQL Server 2016.
  3. Установите службы R Services (в базе данных) с помощью носителя RTM.

Правильный способ обновления:

  1. Установите SQL Server 2016 без служб R Services.
  2. Обновите SQL Server 2016 до требуемого уровня исправлений. Например, установите пакет обновления 1 (SP1), а затем накопительный пакет обновления 2.
  3. Чтобы добавить компонент на правильном уровне исправлений, снова запустите программу установки пакета обновления 1 и накопительного пакета обновления 2, а затем выберите "R Services (в базе данных)".

Не удается запустить панель запуска, если требуется нотация 8dot3

Примечание

В старых системах панель запуска может не запускаться, если задано требование нотации 8dot3. Это требование было удалено в более поздних выпусках. Клиенты служб SQL Server 2016 R Services должны установить один из следующих компонентов:

Для совместимости с R службам SQL Server 2016 R Services (в базе данных) необходимо, чтобы диск, куда устанавливается этот компонент, поддерживал создание коротких имен файлов с использованием нотации 8dot3. Имя файла 8.3 также называется коротким именем файла и используется для обеспечения совместимости с предыдущими версиями Microsoft Windows или в качестве альтернативы длинным именам файлов.

Если том, куда вы устанавливаете R, не поддерживает короткие имена файлов, процессы, запускающие R из SQL Server, могут не найти соответствующий исполняемый файл, и панель запуска не запустится.

В качестве обходного решения можно включить нотацию 8dot3 в томе, где установлен SQL Server со службами R Services. Затем необходимо указать короткое имя для рабочего каталога в файле конфигурации служб R.

  1. Чтобы включить нотацию 8dot3, запустите служебную программу fsutil с аргументом 8dot3name, как описано в следующем разделе: fsutil 8dot3name.

  2. После включения нотации 8dot3 откройте файл RLauncher.config и запишите значение свойства WORKING_DIRECTORY. Сведения о том, как найти этот файл, см. в разделе Сбор данных для устранения неполадок машинного обучения.

  3. Используйте программу fsutil с аргументом file, чтобы указать короткий путь к файлу для папки, указанной в свойстве WORKING_DIRECTORY.

  4. Измените файл конфигурации, указав тот же рабочий каталог, который вы указали в свойстве WORKING_DIRECTORY. Кроме того, можно указать другой рабочий каталог и выбрать существующий путь, который уже совместим с нотацией 8dot3.

Дальнейшие действия

Сбор данных для устранения неполадок машинного обучения

Установка служб машинного обучения SQL Server

Устранение неполадок подключений к ядру СУБД