Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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.