Устранение неполадок со службой панели запуска, выполняющей скрипты Python и R в Службах машинного обучения SQL Server
Область применения: SQL Server 2016 (13.x) и более поздних версий
Эта статья содержит рекомендации по устранению неполадок, связанных со службой Панели запуска SQL Server при использовании Служб машинного обучения. Служба панели запуска поддерживает выполнение внешних скриптов для R и Python. Запуску панели запуска SQL Server могут препятствовать различные неполадки, включая проблемы или изменения в конфигурации и отсутствие сетевых протоколов.
Определение того, выполняется панель запуска
Откройте Диспетчер конфигурации SQL Server. В командной строке введите SQLServerManager13.msc, SQLServerManager14.msc или SQLServerManager15.msc.
Запишите учетную запись службы, под которой выполняется панель запуска. Каждый экземпляр, где включен R или Python, должен иметь собственный экземпляр службы панели запуска. Например, служба для именованного экземпляра может иметь вид MSSQLLaunchpad$имя_экземпляра.
Если служба остановлена, перезапустите ее. Если при перезапуске возникают проблемы с конфигурацией, в журнал системных событий заносится сообщение, а служба снова останавливается. Проверьте журнал системных событий на наличие сведений о причинах остановки службы.
Проверьте содержимое файла RSetup.log и убедитесь в отсутствии ошибок в программе установки. Например, сообщение Выполняется выход с кодом 0 указывает на сбой запуска службы.
Чтобы найти другие ошибки, просмотрите содержимое файла журнала 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, возможно, была остановлена служба панели запуска для этого экземпляра.
Запустите диспетчер конфигурации SQL Server из командной строки Windows. Дополнительные сведения см. в разделе SQL Server Configuration Manager.
Щелкните правой кнопкой мыши панель запуска SQL Server для этого экземпляра и выберите пункт Свойства.
Откройте вкладку Службы и убедитесь, что служба запущена. Если это не так, установите АвтоматическийРежим запуска и нажмите кнопку Применить.
Перезапуск службы обычно устраняет проблему и позволяет запускать скрипты машинного обучения. Если перезапуск не устраняет проблему, запишите путь и аргументы в свойстве Путь к двоичным файлам и сделайте следующее:
a. Просмотрите файл 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
Если вы устанавливаете ядро СУБД с другими компонентами, устанавливаете исправление для сервера, а затем добавляете компонент Машинного обучения с использованием исходного носителя, может быть установлена неправильная версия компонентов Машинного обучения. Когда панель запуска обнаруживает несовпадение версий, она завершает работу и создает файл дампа.
Чтобы предотвратить эту проблему, обязательно устанавливайте новые компоненты на том же уровне исправлений, что и экземпляр сервера.
Неправильный способ обновления:
- Установите SQL Server 2016 без служб R Services.
- Установите накопительный пакет обновления 2 для SQL Server 2016.
- Установите службы R Services (в базе данных) с помощью носителя RTM.
Правильный способ обновления:
- Установите SQL Server 2016 без служб R Services.
- Обновите SQL Server 2016 до требуемого уровня исправлений. Например, установите пакет обновления 1 (SP1), а затем накопительный пакет обновления 2.
- Чтобы добавить компонент на правильном уровне исправлений, снова запустите программу установки пакета обновления 1 и накопительного пакета обновления 2, а затем выберите "R Services (в базе данных)".
Не удается запустить панель запуска, если требуется нотация 8dot3
Примечание.
В старых системах панель запуска может не запускаться, если задано требование нотации 8dot3. Это требование было удалено в более поздних выпусках. Клиенты служб SQL Server 2016 R Services должны установить один из следующих компонентов:
- SQL Server 2016 с пакетом обновления 1 (SP1) и накопительным пакетом обновления 1 (CU1 ) для SQL Server.
- SQL Server 2016 RTM, накопительный пакет обновления 3 и это исправление, предоставляемое по запросу.
Для совместимости с R службам SQL Server 2016 R Services (в базе данных) необходимо, чтобы диск, куда устанавливается этот компонент, поддерживал создание коротких имен файлов с использованием нотации 8dot3. Имя файла 8.3 также называется коротким именем файла и используется для обеспечения совместимости с предыдущими версиями Microsoft Windows или в качестве альтернативы длинным именам файлов.
Если том, куда вы устанавливаете R, не поддерживает короткие имена файлов, процессы, запускающие R из SQL Server, могут не найти соответствующий исполняемый файл, и панель запуска не запустится.
В качестве обходного решения можно включить нотацию 8dot3 в томе, где установлен SQL Server со службами R Services. Затем необходимо указать короткое имя для рабочего каталога в файле конфигурации служб R.
Чтобы включить нотацию 8dot3, запустите служебную программу fsutil с аргументом 8dot3name, как описано в следующем разделе: fsutil 8dot3name.
После включения нотации 8dot3 откройте файл RLauncher.config и запишите значение свойства
WORKING_DIRECTORY
. Сведения о том, как найти этот файл, см. в разделе Сбор данных для устранения неполадок машинного обучения.Используйте программу fsutil с аргументом file, чтобы указать короткий путь к файлу для папки, указанной в свойстве WORKING_DIRECTORY.
Измените файл конфигурации, указав тот же рабочий каталог, который вы указали в свойстве WORKING_DIRECTORY. Кроме того, можно указать другой рабочий каталог и выбрать существующий путь, который уже совместим с нотацией 8dot3.
Следующие шаги
Сбор данных для устранения неполадок машинного обучения