Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: 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 и разрешений.
Совет
Если вы знакомы с использованием средства платформы диагностики поддержки (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, возможно, была остановлена служба панели запуска для этого экземпляра.
Запустите диспетчер конфигурации SQL Server из командной строки Windows. Дополнительные сведения см. в разделе SQL Server Configuration Manager.
Щелкните правой кнопкой мыши панель запуска SQL Server для этого экземпляра и выберите пункт Свойства.
Откройте вкладку Службы и убедитесь, что служба запущена. Если он не запущен, измените режим запуска на "Автоматический" и нажмите кнопку "Применить".
Перезапуск службы обычно устраняет проблему и позволяет запускать скрипты машинного обучения. Если перезагрузка не исправляет проблему, запишите путь и аргументы в свойстве 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
Если вы устанавливаете ядро СУБД с другими компонентами, устанавливаете исправление для сервера, а затем добавляете компонент Машинного обучения с использованием исходного носителя, может быть установлена неправильная версия компонентов Машинного обучения. Когда панель запуска обнаруживает несовпадение версий, она завершает работу и создает файл дампа.
Чтобы предотвратить эту проблему, обязательно устанавливайте новые компоненты на том же уровне исправлений, что и экземпляр сервера.
Неправильный способ обновления:
- Установите 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
Примечание.
В старых системах Launchpad может не запускаться, если требуется нотация 8dot3. Это требование было удалено в более поздних выпусках. Клиенты служб SQL Server 2016 R Services должны установить один из следующих компонентов:
- SQL Server 2016 с пакетом обновления 1 (SP1) и накопительным обновлением 1 (CU1): KB3208177 - Накопительное обновление 1 для SQL Server 2016 SP1.
- 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.После включения нотации 8dot3 откройте файл RLauncher.config и запишите значение свойства
WORKING_DIRECTORY. Сведения о том, как найти этот файл, см. в статье "Сбор данных" для устранения неполадок скриптов Python и R со службами машинного обучения SQL Server.Используйте программу fsutil с аргументом file, чтобы указать короткий путь к файлу для папки, указанной в свойстве WORKING_DIRECTORY.
Измените файл конфигурации, указав тот же рабочий каталог, который вы указали в свойстве WORKING_DIRECTORY. Кроме того, можно указать другой рабочий каталог и выбрать существующий путь, который уже совместим с нотацией 8dot3.