Бөлісу құралы:


Устранение неполадок со службой панели запуска, выполняющей скрипты 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 и разрешений.

Совет

Если вы знакомы с использованием средства платформы диагностики поддержки (SDP) для диагностики SQL Server, можно использовать SDP для просмотра выходного файла с именем MachineName_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.

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

Это ограничение не применяется, если вы используете учетные данные 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. Перезапуск службы обычно устраняет проблему и позволяет запускать скрипты машинного обучения. Если перезагрузка не исправляет проблему, запишите путь и аргументы в свойстве Binary Path и выполните следующие действия:

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

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

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

"Неустранимая ошибка: сбой при создании 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, см. в руководстве по Python: развертывание модели линейной регрессии с помощью машинного обучения SQL.

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

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

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

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

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

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

EXECUTE 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

Примечание.

В старых системах Launchpad может не запускаться, если требуется нотация 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 .

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

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

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