Известные проблемы, связанные с использованием Python и R в Службах машинного обучения SQL Server

Область применения: SQL Server 2016 (13.x) и более поздних версий

Внимание

Поддержка сервера Машинное обучение (ранее известного как R Server) закончилась 1 июля 2022 года. Дополнительные сведения см. в разделе Что будет с Machine Learning Server?

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

Проблемы с установкой и настройкой

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

Непоследовательные результаты в вычислениях MKL из-за отсутствия переменной среды

Применимо: R_SERVER двоичные файлы 9.0, 9.1, 9.2 или 9.3.

R_SERVER использует библиотеку Intel Math Kernel Library (MKL). Для вычислений, включающих MKL, непоследовательные результаты могут возникать, если в системе отсутствует переменная среды.

Задайте переменную среды 'MKL_CBWR'=AUTO, чтобы обеспечить условную числовую воспроизводимость в R_SERVER. Дополнительные сведения см. в разделе Введение в условную числовую воспроизводимость (CNR).

Обходное решение

  1. На панели управления выберите Система и безопасность>Система>Расширенные параметры системы>Переменные среды.

  2. Создайте новую пользовательскую или системную переменную.

    • Задайте для переменной MKL_CBWRзначение .
    • Задайте для значения AUTOзначение .
  3. Перезапустите R_SERVER. На SQL Server можно перезапустить службу панели запуска SQL Server.

Примечание.

Если вы используете SQL Server 2019 (15.x) в Linux, измените или создадите .bash_profile в домашнем каталоге пользователя, добавив строку export MKL_CBWR="AUTO". Выполните этот файл, введя команду source .bash_profile в командной строке bash. Перезапустите R_SERVER, введя Sys.getenv() в командной строке R.

Ошибка среды выполнения скрипта R (SQL Server 2017 CU 5 — регрессия cu 7)

Для SQL Server 2017 (14.x) в накопительных обновлениях 5–7 в файле rlauncher.config есть регрессия, в которой путь к файлу temp directory содержит пробел. Эта регрессия исправлена в cu 8.

Ошибка, которую вы увидите при выполнении скрипта R, включает следующие сообщения:

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

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

Неустранимая ошибка: не удается создать "R_TempDir"

Обходное решение

При достижении доступности примените CU 8. Кроме того, можно повторно создать, rlauncher.config запустив registerrext с удалением или установкой в командной строке с повышенными привилегиями.

<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRExt.exe /uninstall /sqlbinnpath:<SQLInstanceBinnPath> /userpoolsize:0 /instance:<SQLInstanceName>

<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRExt.exe /install /sqlbinnpath:<SQLInstanceBinnPath> /userpoolsize:0 /instance:<SQLInstanceName>

В следующем примере показаны команды с экземпляром по умолчанию "MSSQL14". MSSQLSERVER", установленный в C:\Program Files\Microsoft SQL Server\:

"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRext.exe" /uninstall /sqlbinnpath:"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn" /userpoolsize:0 /instance:MSSQLSERVER

"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\RevoScaleR\rxLibs\x64\RegisterRext.exe" /install /sqlbinnpath:"C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn" /userpoolsize:0 /instance:MSSQLSERVER

Не удается установить компоненты машинного обучения SQL Server на контроллере домена

Если вы попытаетесь установить СЛУЖБЫ R SQL Server 2016 (13.x) или службы SQL Server Машинное обучение на контроллере домена, программа установки завершается ошибкой.

Произошла ошибка во время процесса установки компонента

Не удается найти группу с удостоверением

Код ошибки компонента: 0x80131509

Сбой возникает из-за того, что на контроллере домена служба не может создать 20 локальных учетных записей, необходимых для запуска машинного обучения. Как правило, не рекомендуется устанавливать SQL Server на контроллере домена. Дополнительные сведения см. в бюллетене поддержки 2032911.

Чтобы обеспечить совместимость с Microsoft R Client, установите последний набор исправлений

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

На компьютере запущена версия 9.x.x клиента Microsoft R, несовместимая с Microsoft R Server версии 8.x.x. Скачайте и установите совместимую версию.

SQL Server 2016 (13.x) требует, чтобы библиотеки R на клиенте точно соответствовали библиотекам R на сервере. Ограничение было удалено для выпусков более поздней версии, чем R Server 9.0.1. Однако при возникновении этой ошибки проверьте версию библиотек R, используемых клиентом и сервером, и при необходимости обновите клиент в соответствии с версией сервера.

Как правило, версия R, устанавливаемая с SQL Server R Services, обновляется при установке набора исправлений SQL Server. Чтобы обеспечить наличие самых актуальных версий компонентов R, установите все пакеты обновления.

При запуске R Server 8.0.3 в SQL Server 2016 может появиться сообщение об ошибке: You are running version 9.0.0 of Microsoft R client on your computer, which is incompatible with the Microsoft R server version 8.0.3. Download and install a compatible version. совместимость с Microsoft R Client 9.0.0 в SQL Server 2016 была обеспечена в следующих исправлениях:

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

Область применения: службы R Server 2016 (13.x) с R Server версии 9.0.0 или более ранней

Компоненты R, отсутствующие в установке SQL Server 2017 с накопительным пакетом обновления 3 (CU 3)

Некоторое количество виртуальных машин Azure подготавливалось без файлов установки R, которые должны быть добавлены в SQL Server. Эта ошибка относится к виртуальным машинам, подготовленным в период с 5.01.2018 по 23.01.2018. Эта проблема также может повлиять на локальные установки, если вы применили обновление CU 3 для SQL Server 2017 (14.x) в период с 2018-01-05 до 2018-01-23.

Предоставлен набор исправлений, который включает в себя правильную версию файлов установки R.

Чтобы установить компоненты и восстановить SQL Server 2017 (14.x) CU 3, необходимо удалить накопительный пакет обновления 3 и переустановить обновленную версию:

  1. Скачайте обновленный файл установки CU 3, который включает установщики R.
  2. Удалите накопительный пакет обновления 3. На панели управления найдите Удалить обновление, а затем выберите "Исправление 3015 для SQL Server 2017 (KB4052987) (64-разрядный)". Выполните действия по удалению.
  3. Переустановите обновление CU 3, дважды щелкнув обновление для KB4052987, скачанных: SQLServer2017-KB4052987-x64.exe Следуйте инструкциям по установке.

Не удается установить компоненты Python в автономных установках SQL Server 2017 или более поздней версии

Если установить предварительную версию SQL Server 2017 (14.x) на компьютере без доступа к Интернету, установщик может не отобразить страницу, которая запрашивает расположение загруженных компонентов Python. В таком случае можно установить компонент Службы машинного обучения, но не компоненты Python.

Эта проблема исправлена в этом выпуске. Кроме того, это ограничение не применяется к компонентам R.

Область применения: SQL Server 2017 (14.x) с Python

Предупреждение о несовместимой версии при подключении к более старой версии служб SQL Server R от клиента с помощью SQL Server 2017

При запуске кода R в контексте вычислений SQL Server 2016 (13.x) может появиться следующая ошибка:

На компьютере используется Microsoft R Client версии 9.0.0, которая несовместима с Microsoft R Server версии 8.0.3. Скачайте и установите совместимую версию.

Это сообщение отображается, если одно из следующих двух операторов имеет значение true:

  • Вы установили R Server (автономный) на клиентском компьютере с помощью мастера установки для SQL Server 2017 (14.x).
  • Microsoft R Server установлен с помощью отдельного установщика Windows.

Чтобы убедиться, что сервер и клиент используют ту же версию, которую может потребоваться использовать привязку, поддерживаемую для microsoft R Server 9.0 и более поздних выпусков, для обновления компонентов R в экземплярах SQL Server 2016 (13.x). Чтобы определить, доступна ли поддержка обновлений для вашей версии служб R, см. статью Обновление экземпляра служб R с помощью SqlBindR.exe.

Область применения: службы R Server 2016 (13.x) с R Server версии 9.0.0 или более ранней

При установке выпусков служб SQL Server 2016 могут не установиться более новые версии компонентов R.

При установке накопительного обновления или установке пакета обновления для SQL Server 2016 (13.x) на компьютере, который не подключен к Интернету, мастер установки может не отобразить запрос, позволяющий обновить компоненты R с помощью скачанных CAB-файлов. Обычно это происходит, если несколько компонентов устанавливаются вместе с ядром СУБД.

В качестве обходного решения можно установить выпуск службы с помощью командной строки и указать MRCACHEDIRECTORY аргумент, как показано в этом примере, который устанавливает обновления CU 1:

C:\<path to installation media>\SQLServer2016-KB3164674-x64.exe /Action=Patch /IACCEPTROPENLICENSETERMS /MRCACHEDIRECTORY=<path to CU 1 CAB files>

Чтобы получить последние установщики, ознакомьтесь со статьей Установка компонентов машинного обучения без доступа к Интернету.

Область применения: службы R Server 2016 (13.x) с R Server версии 9.0.0 или более ранней

Службы панели запуска не запускаются, если их версия отличается от версии R

Если SQL Server R Services устанавливается отдельно от ядра СУБД, а версии сборки отличаются, в журнале системных событий может появиться следующее сообщение об ошибке:

Не удалось запустить службу панели запуска SQL Server из-за следующей ошибки: служба не ответила на запрос запуска или управления своевременно.

Эта ошибка может возникнуть, например, если вы установили ядро СУБД с использованием набора исправлений, применили исправление для обновления ядра СУБД, а затем добавили компонент службы R с использованием набора исправлений.

Чтобы избежать этой проблемы, используйте программу, например File Manager, чтобы сравнить версии Launchpad.exe с версией двоичных файлов SQL, например sqldk.dll. Все компоненты должны иметь одинаковый номер версии. Если вы обновляете один компонент, обязательно примените это же обновление ко всем остальным установленным компонентам.

Найдите панель запуска в папке Binn экземпляра. Например, в установке SQL Server 2016 (13.x) по умолчанию может быть C:\Program Files\Microsoft SQL Server\MSSQL.13.InstanceNameMSSQL\Binnпуть.

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

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

В качестве обходного решения на виртуальной машине Azure откройте брандмауэр Windows с расширенной безопасностью, выберите "Правила исходящего трафика" и отключите следующее правило: блокировка сетевого доступа для учетных записей локальных пользователей R в экземпляре SQL Server MSSQLSERVER. Можно также оставить правило включенным, но изменить свойство безопасности на Разрешить, если безопасно.

Подразумеваемая проверка подлинности в выпуске SQL Server 2016 Express

При выполнении заданий R с удаленной рабочей станции обработки и анализа данных с применением встроенной проверки подлинности Windows сервер SQL Server использует неявную проверку подлинности для создания локальных вызовов ODBC, которые могут потребоваться скрипту. Однако эта функция не работала в сборке RTM sql Server 2016 (13.x) Express.

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

Область применения: выпуск SQL Server 2016 (13.x) R Services Express

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

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

Например, даже если вы используете выпуск SQL Server Enterprise, R выполняется в однопоточном режиме при запуске кода R с помощью внешних средств. Чтобы получить преимущества производительности в SQL Server, инициируйте подключение SQL Server и используйте sp_execute_external_script для вызова внешней среды выполнения скрипта.

Как правило, следует избегать вызова библиотек машинного обучения, используемых SQL Server, из внешних средств. Если вам нужно выполнить отладку кода R или Python, это проще всего сделать за пределами SQL Server. Чтобы получить те же библиотеки, которые находятся в SQL Server, можно установить Microsoft R Client или SQL Server 2017 Machine Learning Server (отдельный).

SQL Server Data Tools не поддерживает разрешения, необходимые внешним скриптам

При использовании Visual Studio или SQL Server Data Tools для публикации проекта базы данных, если какой-либо участник имеет разрешения, относящиеся к выполнению внешнего скрипта, может появиться сообщение об ошибке следующего вида:

модель TSQL: обнаружена ошибка при реконструировании базы данных. Разрешение не было распознано и не было импортировано.

В настоящее время модель DACPAC не поддерживает разрешения, используемые службами R или службами Машинное обучение, например GRANT ANY EXTERNAL SCRIPTили EXECUTE ANY EXTERNAL SCRIPT. Эта проблема будет исправлена в будущем выпуске.

В качестве обходного решения выполните дополнительные GRANT инструкции в скрипте после развертывания.

Выполнение внешнего скрипта регулируется из-за значений по умолчанию для управления ресурсами

В выпуске Enterprise можно использовать пулы ресурсов для управления внешними процессами скриптов. В некоторых сборках максимальный размер памяти, который можно было выделять процессам R, был ограничен на уровне 20 %. Таким образом, если у сервера было 32 ГБ ОЗУ, исполняемые файлы R (RTerm.exe и BxlServer.exe) могут использовать не более 6,4 ГБ в одном запросе.

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

Область применения: SQL Server 2016 (13.x) Службы R, выпуск Enterprise

Ошибка при использовании sp_execute_external_script без libc++.so в Linux

На чистом компьютере Linux, который не libc++.so установлен, выполнение sp_execute_external_script запроса SPEES с помощью Java или внешнего языка завершается ошибкой, так как commonlauncher.so не удалось загрузить libc++.so.

Например:

EXECUTE sp_execute_external_script @language = N'Java'
    , @script = N'JavaTestPackage.PassThrough'
    , @parallel = 0
    , @input_data_1 = N'select 1'
WITH RESULT SETS((col1 INT NOT NULL));
GO

Происходит сбой с сообщением следующего вида:

Msg 39012, Level 16, State 14, Line 0

Unable to communicate with the runtime for 'Java' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'Java' runtime.

В журнале mssql-launchpadd появится примерно следующее сообщение об ошибке:

Oct 18 14:03:21 sqlextmls launchpadd[57471]: [launchpad] 2019/10/18 14:03:21 WARNING: PopulateLauncher failed: Library /opt/mssql-extensibility/lib/commonlauncher.so not loaded. Error: libc++.so.1: cannot open shared object file: No such file or directory

Обходное решение

Используйте одно из следующих обходных решений:

  1. Скопируйте libc++* из /opt/mssql/lib в системный путь по умолчанию /lib64

  2. Добавьте следующие записи в /var/opt/mssql/mssql.conf, чтобы предоставить путь:

    [extensibility]
    readabledirectories = /opt/mssql
    

Область применения: SQL Server 2019 (15.x) в Linux

Ошибка установки или обновления на серверах с поддержкой FIPS

При установке SQL Server 2019 (15.x) с помощью компонентов Машинное обучение служб и расширений языка или обновлении экземпляра SQL Server на сервере с поддержкой Федерального стандарта обработки информации (FIPS) вы получите следующую ошибку:

Произошла ошибка при установке функции расширяемости с сообщением об ошибке: сбой создания AppContainer с сообщением об ошибке NONE, состояние этой реализации не является частью проверенных алгоритмов шифрования fiPS платформы Windows.

Обходное решение

Отключите FIPS перед установкой SQL Server 2019 (15.x) с помощью компонента Машинное обучение служб и расширений языка или обновления экземпляра SQL Server. После завершения установки или обновления можно снова включить FIPS.

Область применения: SQL Server 2019 (15.x)

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

Проблема

Следующие ограничения применяются к SQL Server 2017 (14.x) с обновлением среды выполнения. Эта проблема относится к выпуску Enterprise.

  • Параллелизм: RevoScaleR и MicrosoftML параллелизм потоков алгоритма для сценариев ограничены не более чем двумя потоками.
  • Потоковая передача и секционирование. Сценарии, связанные @r_rowsPerRead с параметром, передаваемым в T-SQL sp_execute_external_script , не применяются.
  • Потоковая передача и секционирование: RevoScaleR и MicrosoftML источники данных (тXDFODBC. е. ) не поддерживают чтение строк в блоках для обучения или оценки сценариев. Эти сценарии всегда переносят все данные для вычислений в память, а операции зависят от памяти.

Решение

Лучшим решением является обновление до SQL Server 2019 (15.x). Кроме того, вы можете продолжать использовать SQL Server 2017 (14.x) с обновлением среды выполнения, настроенным с помощью RegisterRext.exe /configure, после выполнения следующих задач.

  1. Отредактируйте реестр, создав ключ Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\150, добавив значение SharedCode и указав в качестве данных C:\Program Files\Microsoft SQL Server\150\Shared либо настроенный общий каталог экземпляра.
  2. Создайте папку C:\Program Files\Microsoft SQL Server\150\Shared and copy instapi140.dll и скопируйте файл instapi140.dll из папки C:\Program Files\Microsoft SQL Server\140\Shared в созданную папку.
  3. Измените имя файла instapi140.dll на instapi150.dll в новой папке C:\Program Files\Microsoft SQL Server\150\Shared.

Внимание

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

Проблемы с производительностью пула процессов в службах машинного обучения (R и Python)

В этом разделе содержатся известные проблемы и обходные пути использования служб машинного обучения (R и Python) в SQL Server.

Холодный запуск производительности пула процессов в службах машинного обучения

После выполнения sp_execute_external_scriptслужба панели запуска запускает вспомогательные процессы, запускающие внешние среды выполнения, такие как R и Python. Для амортизации затрат на запуск создается пул процессов, который можно использовать в последующем выполнении sp_execute_external_script. Этот пул процессов зависит от этого пользователя, базы данных и используемого языка (R или Python в службах машинного обучения).

Первое выполнение запроса

Вспомогательные процессы необходимо разогреть при sp_execute_external_script первом выполнении или после периода простоя (процессы завершаются с помощью задачи очистки, если они не используются в течение некоторого времени). Холодный запуск таких процессов в пуле может быть медленным (например, из-за ограничений ресурсов).

Обходное решение

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

EXECUTE sp_execute_external_script @language = N'R', @script = N'';
GO

Большое количество одновременных запросов

Если число параллельных sp_execute_external_script выполнения выше активных процессов R/Python в пуле, холодное начало добавления дополнительных процессов в пул может быть медленным (например, из-за ограничений ресурсов).

Обходное решение

Чтобы устранить проблему с производительностью масштабирования, можно пакетировать несколько запросов (например, с помощью подключений к циклу или перезаписи скрипта для обработки нескольких запросов). Кроме того, для сценариев в режиме реального времени можно использовать SQL PREDICT .

Проблемы с выполнением скриптов R

В этом разделе содержатся известные проблемы, характерные для запуска R на SQL Server, а также некоторые проблемы, связанные с библиотеками R и инструментами, опубликованными корпорацией Майкрософт, включая RevoScaleR.

Дополнительные известные проблемы, которые могут повлиять на решения R, см. на сайте Machine Learning Server.

Предупреждение о запрете доступа при выполнении скриптов R для SQL Server в расположении, отличном от расположения по умолчанию

Если экземпляр SQL Server был установлен не в расположении по умолчанию, например за пределами папки Program Files, возникает предупреждение ACCESS_DENIED при попытке запустить скрипты, устанавливающие пакет. Например:

В normalizePath(path.expand(path), winslash, mustWork) : path[2]="~ExternalLibraries/R/8/1": доступ запрещен

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

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

Эта проблема решена в предстоящем наборе исправлений. В качестве обходного решения предоставьте группе SQLRUserGroup доступ на чтение для всех родительских папок ExternalLibraries.

Ошибка сериализации между старыми и новыми версиями RevoScaleR

При передаче модели с использованием сериализованного формата в удаленный экземпляр SQL Server может возникнуть ошибка:

Ошибка в memDecompress(data, type = decompress) internal error -3 in memDecompress(2).

Эта ошибка возникает, если вы сохранили модель с помощью последней версии функции сериализации rxSerializeModel, но экземпляр SQL Server, где вы десериализуете модель, имеет более старую версию API RevoScaleR, начиная с SQL Server 2017 (14.x) CU 2 или более ранней версии.

В качестве обходного решения можно обновить экземпляр SQL Server 2017 (14.x) до накопительного пакета обновления 3 или более поздней версии.

Ошибка не отображается, если версия API совпадает или если модель сохраняется с более старой функцией сериализации на сервер, использующий более новую версию API сериализации.

Иными словами, используйте одну и ту же версию RevoScaleR для операций сериализации и десериализации.

Оценка в режиме реального времени не правильно обрабатывает параметр learningRate в моделях дерева и леса

Если вы создаете модель с помощью дерева принятия решений или леса принятия решений и указываете скорость обучения, то при использовании sp_rxpredict или функции SQL PREDICT вы можете получить непоследовательные результаты по сравнению с применением rxPredict.

Причиной является ошибка в API, который обрабатывает сериализованные модели и ограничен параметром learningRate: например, в rxBTrees или

Эта проблема решена в предстоящем наборе исправлений.

Ограничения на соответствие процессоров для заданий R

В первоначальной сборке SQL Server 2016 (13.x) можно задать сходство процессоров только для ЦП в первой группе k-групп. Например, если сервер представляет собой компьютер с двумя сокетами и двумя k-группами, для процессов R используются только процессоры из первой k-группы. Это же ограничение действует при настройке регулирования ресурсов для заданий скриптов R.

Эта проблема устранена в SQL Server 2016 (13.x) с пакетом обновления 1 . Рекомендуем произвести обновление до более позднего набора исправлений.

Область применения: СЛУЖБЫ R Sql Server 2016 (13.x) (версия RTM)

Изменения типов столбцов невозможно выполнить при чтении данных в контексте вычислений SQL Server

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

Например, следующая инструкция приведет к ошибке, если столбец CRSDepTimeStr еще не является целым числом:

data <- RxSqlServerData(
  sqlQuery = "SELECT CRSDepTimeStr, ArrDelay FROM AirlineDemoSmall",
  connectionString = connectionString,
  colClasses = c(CRSDepTimeStr = "integer"))

В качестве обходного решения можно переписать SQL-запрос для использования CAST или CONVERT представления данных в R с помощью правильного типа данных. Как правило, оптимальнее в плане производительности работать с данными с помощью SQL, а не изменять данные в коде R.

Область применения: службы R SQL Server 2016 (13.x)

Ограничения на размер сериализованных моделей

При сохранении модели в таблице SQL Server необходимо сериализовать модель и сохранить ее в двоичном формате. Теоретически максимальный размер модели, который может храниться с помощью этого метода, составляет 2 ГБ, что является максимальным размером столбцов varbinary в SQL Server.

Если необходимо использовать более крупные модели, доступны следующие обходные пути:

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

  • Используйте выбор признаков для удаления ненужных столбцов.

  • При использовании алгоритма с открытым исходным кодом рассмотрите аналогичную реализацию, используя соответствующий алгоритм в MicrosoftML или RevoScaleR. Эти пакеты были оптимизированы для сценариев развертывания.

  • После того как модель будет рационализирована и уменьшена в размерах, подумайте, можно ли использовать функцию memCompress в базовом коде R, чтобы уменьшить размер модели, прежде чем передать ее в SQL Server. Этот параметр лучше всего подходит, если модель близка к ограничению в 2 ГБ.

  • Для больших моделей можно использовать функцию SQL Server FileTable, чтобы сохранить модели, вместо использования столбца типа varbinary.

    Чтобы использовать FileTable, необходимо добавить исключение брандмауэра, так как данные, хранящиеся в таблицах FileTable, управляются драйвером файловой системы Filestream в SQL Server, а правила брандмауэра по умолчанию блокируют доступ к сетевым файлам. Дополнительные сведения см. в разделе Обеспечение необходимых компонентов для FileTable.

    После включения таблицы FileTable для записи модели вы получаете путь из SQL с помощью API FileTable, а затем записываете модель в это расположение из кода. Когда необходимо прочитать модель, вы получите путь из SQL Server, а затем вызовите модель с помощью пути из скрипта. Дополнительные сведения см. в разделе Доступ к таблицам FileTable с помощью API-интерфейсов ввода-вывода файлов.

Избегайте очистки рабочих областей при выполнении кода R в контексте вычислений SQL Server

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

revoScriptConnection — это объект в рабочей области R, которая содержит сведения о сеансе R, вызываемом из SQL Server. Но если код R содержит команду для очистки рабочей области (например, rm(list=ls()))), вся информация о сеансе и других объектах в рабочей области R также очищается.

Чтобы избежать этой проблемы, старайтесь не очищать переменные и другие объекты без особой надобности при выполнении кода R в SQL Server. Хотя очистка рабочих областей является обычным действием при работе в консоли R, она может иметь непредвиденные последствия.

  • Для удаления конкретных переменных используйте функцию R remove, например remove('name1', 'name2', ...)
  • Если нужно удалить несколько переменных, сохраните имена временных переменных в списке и периодически выполняйте сборку мусора.

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

Нельзя использовать в скрипте R следующие типы результатов запроса:

  • данные из запроса Transact-SQL, который ссылается на столбцы AlwaysEncrypted;

  • данные из запроса Transact-SQL, который ссылается на маскированные столбцы.

    Если вам необходимо использовать скрытые данные в сценарии R, при необходимости можно создать копию данных во временной таблице и использовать эти данные.

Использование строк в качестве факторов может привести к снижению производительности

Использование переменных строкового типа в качестве факторов может значительно увеличить объем памяти, используемый для операций R. Это известная проблема с R в целом, и на эту тему есть множество статей. Например, см . статью "Факторы" не являются гражданами первого класса в R, Джоном Маунтом, в R-blogs) или stringsAsFactors: несанкционированная биография Роджер Пенг.

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

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

Обсуждение этой проблемы и другие советы см. в статье Производительность служб R: оптимизация данных.

Аргументы varsToKeep и varsToDrop не поддерживаются для источников данных SQL Server

При использовании функции rxDataStep для записи результатов в таблицу применение varsToKeep и varsToDrop является удобным способом указания столбцов для включения или исключения в рамках операции. Однако эти аргументы не поддерживаются для источников данных SQL Server.

Ограниченная поддержка типов данных SQL в sp_execute_external_script

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

Дополнительные сведения см. в разделе Библиотеки R и типы данных.

Возможное повреждение строк с помощью строк Юникода в столбцах varchar

Передача данных Юникода в столбцах varchar из SQL Server в R/Python может привести к повреждению строк. Это связано с кодировкой для этих строк Юникода в сортировках SQL Server может не совпадать с кодировкой UTF-8 по умолчанию, используемой в R/Python.

Чтобы отправить любые данные строки, отличные от ASCII, из SQL Server в R/Python, используйте кодировку UTF-8 (доступно в SQL Server 2019 (15.x)) или используйте для этого же тип nvarchar .

Только одно значение типа raw может быть возвращено из sp_execute_external_script

Если двоичный тип данных (тип данных raw R) возвращается из R, значение должно быть отправлено из блока выходных данных.

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

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

Потеря точности

Поскольку Transact-SQL и R поддерживают разные типы данных, во время преобразования возможна потеря точности для числовых типов данных.

Дополнительные сведения о неявном преобразовании типов данных см. в разделе Библиотеки R и типы данных.

Ошибка определения области переменной при использовании параметра transformFunc

Чтобы преобразовать данные во время моделирования, вы можете передать аргумент transformFunc в такой функции, как rxLinmod или rxLogit. Тем не менее вложенные вызовы функций могут привести к ошибкам области применения в контексте вычислений SQL Server, даже если вызовы правильно работают в локальном контексте.

Образец набора данных для анализа не имеет переменных

Например, предположим, что в глобальной локальной среде определены две функции, f и g, и g вызывает f. При распределенных или удаленных вызовах g, связанных с этой ошибкой, вызов может завершиться g ошибкой, так как f не удается найти, даже если вы передали и f g удаленный звонок.

При возникновении этой проблемы можно внедрить определение f в ваше определение gв любом месте перед тем, где g обычно вызывает f.

Например:

f <- function(x) { 2*x * 3 }
g <- function(y) {
              a <- 10 * y
               f(a)
}

Чтобы избежать этой ошибки, перепишите определение следующим образом:

g <- function(y){
              f <- function(x) { 2*x +3}
              a <- 10 * y
              f(a)
}

Импорт и обработка данных с помощью RevoScaleR

При чтении столбцов varchar из базы данных пробелы обрезаются. Чтобы избежать этого, добавьте перед и после строк символы, отличные от пробелов.

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

Использование преобразования для изменения типа данных переменной не поддерживается при повторных вызовах rxImport или rxTextToXdf использовании для импорта и добавления строк, объединение нескольких входных файлов в один XDF-файл.

Ограниченная поддержка rxExec

В SQL Server 2016 (13.x) функция, предоставляемая пакетом RevoScaleR, rxExec может использоваться только в однопоточном режиме.

Увеличение максимального размера параметра для поддержки rxGetVarInfo

При использовании наборов данных с очень большим количеством переменных (например, более 40 000) следует задать флаг max-ppsize при запуске R для использования функций, таких как rxGetVarInfo. Флаг max-ppsize указывает максимальный размер стека защиты указателей.

Если вы используете консоль R (например, в RGui.exe или RTerm.exe), можно задать значение max-ppsize 500000, введя:

R --max-ppsize=500000

Проблемы с функцией rxDTree

Функция rxDTree в настоящее время не поддерживает преобразования в формуле. В частности, использование синтаксиса F() для создания факторов на лету не поддерживается. Однако числовые данные будут автоматически собираться.

Упорядоченные факторы обрабатываются так же, как факторы, во всех функциях анализа RevoScaleR, за исключением rxDTree.

data.table как OutputDataSet в R

Использование data.table в качестве OutputDataSet R не поддерживается в sql Server 2017 (14.x) накопительного обновления 13 (CU 13) и более ранних версий. Может появиться следующее сообщение:

Msg 39004, Level 16, State 20, Line 2
A 'R' script error occurred during execution of
'sp_execute_external_script' with HRESULT 0x80004004.
Msg 39019, Level 16, State 2, Line 2
An external script error occurred:
Error in alloc.col(newx) :
  Internal error: length of names (0) is not length of dt (11)
Calls: data.frame ... as.data.frame -> as.data.frame.data.table -> copy -> alloc.col

Error in execution.  Check the output for more information.
Error in eval(expr, envir, enclos) :
  Error in execution.  Check the output for more information.
Calls: source -> withVisible -> eval -> eval -> .Call
Execution halted

data.table как r OutputDataSet поддерживается в SQL Server 2017 (14.x) накопительного обновления 14 (CU 14) и более поздних версий.

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

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

Например, выполнение этого внешнего скрипта master в базе данных:

USE MASTER
DECLARE @language nvarchar(1) = N'R'
DECLARE @script nvarchar(max) = N'Sys.sleep(100)'
DECLARE @input_data_1 nvarchar(max) = N'select 1'
EXEC sp_execute_external_script @language = @language, @script = @script, @input_data_1 = @input_data_1 with result sets none
go

Пока dbo параллельно устанавливает библиотеку в LibraryManagementFunctional:

USE [LibraryManagementFunctional]
go

CREATE EXTERNAL LIBRARY [RODBC] FROM (CONTENT = N'/home/ani/var/opt/mssql/data/RODBC_1.3-16.tar.gz') WITH (LANGUAGE = 'R')
go

DECLARE @language nvarchar(1) = N'R'
DECLARE @script nvarchar(14) = N'library(RODBC)'
DECLARE @input_data_1 nvarchar(8) = N'select 1'
EXEC sp_execute_external_script @language = @language, @script = @script, @input_data_1 = @input_data_1
go

Предыдущий длительный внешний скрипт для master базы данных завершится следующим сообщением об ошибке:

Во время выполнения sp_execute_external_script произошла ошибка в скрипте R с HRESULT 0x800704d4.

Обходное решение

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

Применимо только к SQL Server 2019 (15.x) в Linux и только Кластеры больших данных.

SQL Server перестает отвечать на запросы при выполнении скриптов R, включающих параллельное выполнение

SQL Server 2019 (15.x) содержит регрессию, которая влияет на скрипты R, использующие параллельное выполнение. Примеры включают использование rxExec с контекстом вычислений RxLocalPar и скрипты, которые используют пакет параллельного выполнения. Эта проблема вызвана ошибками, возникающими в пакете параллельного выполнения, если при записи на устройство для него задано значение NULL во время выполнения в SQL Server.

Область применения: SQL Server 2019 (15.x)

Потеря точности для типов данных money/numeric/decimal/bigint

Выполнение скрипта R с sp_execute_external_script допускает использование типов данных money, numeric, decimal и bigint в качестве входных данных. Однако, поскольку они преобразуются в числовой тип R, это приводит к ухудшению точности в случае очень высоких значений или значений с десятичным разделителем.

  • деньги: иногда центовые значения будут неточными, и предупреждение будет выдано: Предупреждение: не удается точно представлять значения центов.
  • числовой или десятичный разряд: sp_execute_external_script скрипт R не поддерживает полный диапазон этих типов данных и изменит последние несколько десятичных цифр, особенно с дробной дроби.
  • bigint: R поддерживает только до 53-разрядных целых чисел, а затем начнется потеря точности.

Проблемы с функцией rxExecBy — функция rxExecBy не может найти установленный пакет

При вызове rxExecBy функции запускается новый процесс выполнения R. Этот новый процесс не содержит обновленных путей библиотеки, поэтому пакеты, установленные в расположениях, отличных от пути библиотеки по умолчанию, не найдены во время выполнения.

Обходное решение

Путь к пакетам R должен быть явно обновлен. Предположим, что пакеты устанавливаются в пути внешних библиотек, для обновления пути библиотек можно использовать следующий скрипт R: .libPaths(c(Sys.getenv("MRS_EXTLIB_USER_PATH"), Sys.getenv("MRS_EXTLIB_SHARED_PATH"), .libPaths()))

Проблемы с выполнением скриптов Python

В этом разделе содержатся известные проблемы, характерные для запуска Python на SQL Server, а также некоторые проблемы, связанные с пакетами Python, опубликованными корпорацией Майкрософт, включая revoscalepy и microsoftml.

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

Если вы установили предварительно обученные модели в начале выпуска SQL Server 2017 (14.x), полный путь к обученному файлу модели может быть слишком длинным для чтения Python. Это ограничение исправлено в более позднем наборе исправлений.

Существует несколько возможных обходных путей:

  • При установке предварительно обученных моделей выберите пользовательское расположение.
  • Если это возможно, установите экземпляр SQL Server в пользовательском пути установки с более коротким путем, например C:\SQL\MSSQL14.MSSQLSERVER.
  • Используйте служебную программу Windows Fsutil, чтобы создать жесткую связь, которая сопоставляет файл модели с более коротким путем.
  • Выполните обновление до последнего набора исправлений.

Ошибка при сохранении сериализованной модели в SQL Server

При передаче модели в удаленный экземпляр SQL Server и попытке чтения двоичной модели с помощью функции rx_unserialize в revoscalepy может возникнуть ошибка:

NameError: имя rx_unserialize_model не определено

Эта ошибка возникает, если вы сохранили модель с помощью последней версии функции сериализации, но экземпляр SQL Server, где десериализация модели не распознает API сериализации.

Чтобы устранить проблему, обновите экземпляр SQL Server 2017 (14.x) до накопительного пакета обновления 3 или более поздней версии.

Сбой инициализации переменной varbinary приводит к ошибке BxlServer

Если вы запускаете код Python в SQL Server с помощью, sp_execute_external_scriptи код имеет выходные переменные типа varbinary(max),varchar(max) или аналогичные типы, переменная должна быть инициализирована или задана как часть скрипта. В противном случае компонент обмена данными BxlServer вызывает ошибку и прекращает работу.

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

declare @b varbinary(max);
exec sp_execute_external_script
  @language = N'Python'
  , @script = N'b = 0x0'
  , @params = N'@b varbinary(max) OUTPUT'
  , @b = @b OUTPUT;
go
declare @b varchar(30);
exec sp_execute_external_script
  @language = N'Python'
  , @script = N' b = ""  '
  , @params = N'@b varchar(30) OUTPUT'
  , @b = @b OUTPUT;
go

Предупреждение телеметрии об успешном выполнении кода Python

Начиная с SQL Server 2017 (14.x) CU 2, следующее сообщение может появиться, даже если код Python в противном случае успешно выполняется:

Сообщения STDERR из внешнего скрипта:~PYTHON_SERVICES\lib\site-packages\revoscalepy\utils\RxTelemetryLoggerSyntaxWarning: telemetry_state используется до глобального объявления

Эта проблема устранена в SQL Server 2017 (14.x) накопительного обновления 3 (CU 3).

Числовые, десятичные и денежные типы данных не поддерживаются

Начиная с sql Server 2017 (14.x) накопительного обновления 12 (CU 12), числовые, десятичные и денежные типы данных в WITH RESULT SETS не поддерживаются при использовании Python с sp_execute_external_script. Может появиться следующее сообщение:

[Код: 39004, состояние SQL: S1000] Ошибка скрипта Python во время выполнения sp_execute_external_script с HRESULT 0x80004004.

[Код: 39019, состояние SQL: S1000] Возникла ошибка во внешнем скрипте:

Ошибка SqlSatelliteCall: неподдерживаемый тип в схеме выходных данных. Поддерживаемые типы: bit, smallint, int, datetime, smallmoney, real и float. char, varchar поддерживаются частично.

Это исправлено в SQL Server 2017 (14.x) накопительного обновления 14 (CU 14).

Ошибка интерпретатора при установке пакетов Python с pip в Linux

При попытке использовать pip в SQL Server 2019 (15.x). Например:

/opt/mssql/mlservices/runtime/python/bin/pip -h

Вы получите следующее сообщение об ошибке:

bash: /opt/mssql/mlservices/runtime/python/bin/pip: /opt/microsoft/mlserver/9.4.7/bin/python: недопустимый интерпретатор: нет такого файла или каталога

Обходное решение

Установите pip из Центра пакетов Python (PyPA):

wget 'https://bootstrap.pypa.io/get-pip.py'
/opt/mssql/mlservices/bin/python/python ./get-pip.py

Рекомендация

См. раздел Установка пакетов Python с sqlmlutils.

Область применения: SQL Server 2019 (15.x) в Linux

Не удалось установить пакеты Python после pip установки SQL Server 2019 в Windows

После установки SQL Server 2019 (15.x) в Windows попытка установить пакет Python через pip из командной строки DOS завершится ошибкой. Например:

pip install quantfolio

Возвращается следующая ошибка:

pip настраивается с местоположениями, требующими TLS/SSL, однако модуль SSL в Python недоступен.

Это проблема, характерная для пакета Anaconda. Это будет исправлено в предстоящем наборе исправлений.

Обходное решение

Скопируйте следующие файлы:

  • libssl-1_1-x64.dll
  • libcrypto-1_1-x64.dll

из папки
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\Library\bin

в папку
C:\Program Files\Microsoft SQL Server\MSSSQL15.MSSQLSERVER\PYTHON_SERVICES\DLLs

Затем откройте новую командную оболочку DOS.

Область применения: SQL Server 2019 (15.x) в Windows

Ошибка при использовании sp_execute_external_script без libc++abo.so в Linux

На чистом компьютере Linux, который не libc++abi.so установлен, выполнение sp_execute_external_script запроса SPEES завершается ошибкой "Нет такого файла или каталога".

Например:

EXEC sp_execute_external_script
    @language = N'Python'
    , @script = N'
OutputDataSet = InputDataSet'
    , @input_data_1 = N'select 1'
    , @input_data_1_name = N'InputDataSet'
    , @output_data_1_name = N'OutputDataSet'
    WITH RESULT SETS (([output] int not null));
Msg 39012, Level 16, State 14, Line 0
Unable to communicate with the runtime for 'Python' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'Python' runtime.
STDERR message(s) from external script:

Failed to load library /opt/mssql-extensibility/lib/sqlsatellite.so with error libc++abi.so.1: cannot open shared object file: No such file or directory.

SqlSatelliteCall error: Failed to load library /opt/mssql-extensibility/lib/sqlsatellite.so with error libc++abi.so.1: cannot open shared object file: No such file or directory.
STDOUT message(s) from external script:
SqlSatelliteCall function failed. Please see the console output for more information.
Traceback (most recent call last):
  File "/opt/mssql/mlservices/libraries/PythonServer/revoscalepy/computecontext/RxInSqlServer.py", line 605, in rx_sql_satellite_call
    rx_native_call("SqlSatelliteCall", params)
  File "/opt/mssql/mlservices/libraries/PythonServer/revoscalepy/RxSerializable.py", line 375, in rx_native_call
    ret = px_call(functionname, params)
RuntimeError: revoscalepy function failed.
Total execution time: 00:01:00.387

Обходное решение

Выполните следующую команду:

sudo cp /opt/mssql/lib/libc++abi.so.1 /opt/mssql-extensibility/lib/

Область применения: SQL Server 2019 (15.x) в Linux

Универсальная ошибка при запуске sp_execute_external_script в Ubuntu 20.04 с SQL Server 2022 CU6 в Linux

Установка SQL Server 2022 CU6 для Linux в Ubuntu 20.04 может привести к следующей ошибке при запуске sp_execute_external_script скриптов R и Python:

Msg 39012, Level 16, State 14, Line 0
Unable to communicate with the runtime for 'R' script for request id: 94257840-1704-45E8-83D2-2F74AEB46CF7. Please check the requirements of 'R' runtime.

STDERR message(s) from external script: 
/usr/lib/R/library/RevoScaleR/rxLibs/x64/libExaCore.so.2(_Z21CriticalSignalHandleri+0x29)[0x7f2568289d89]
/usr/lib/x86_64-linux-gnu/libc.so.6(+0x43090)[0x7f2568d66090]

Обходное решение

Выполните следующую команду, чтобы установить зависимость libssl-devпакета, которая позволяет SQL Server разрешать предоставленные системой общие библиотеки libssl и libcrypto.

sudo apt-get update
sudo apt-get install libssl-dev

Ошибка modprobe создания правила брандмауэра при запуске mssql-launchpadd в Linux

При просмотре журналов использования sudo journalctl -a -u mssql-launchpaddможет появиться ошибка создания правила брандмауэраmssql-launchpadd, аналогичная приведенным ниже выходным данным.

-- Logs begin at Sun 2021-03-28 12:03:30 PDT, end at Wed 2022-10-12 13:20:17 PDT. --
Mar 22 16:57:51 sqlVm systemd[1]: Started Microsoft SQL Server Extensibility Launchpad Daemon.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: Extensibility Log Header: <timestamp> <process> <sandboxId> <sessionId> <message>
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: No extensibility section in /var/opt/mssql/mssql.conf file. Using default settings.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: DataDirectories =  /bin:/etc:/lib:/lib32:/lib64:/sbin:/usr/bin:/usr/include:/usr/lib:/usr/lib32:/usr/lib64:/usr/libexec/gcc:/usr/sbin:/usr/share:/var/lib:/opt/microsoft:/opt/mssql-extensibility:/opt/mssql/mlservices:/opt/mssql/lib/zulu-jre-11:/opt/mssql-tools
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: [RG] SQL Extensibility Cgroup initialization is done.
Mar 22 16:57:51 sqlVm launchpadd[195658]: 2022/03/22 16:57:51 [launchpadd] INFO: Found 1 IP address(es) from the bridge.
Mar 22 16:57:51 sqlVm launchpadd[195676]: modprobe: ERROR: could not insert 'ip6_tables': Operation not permitted
Mar 22 16:57:51 sqlVm launchpadd[195673]: ip6tables v1.8.4 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)
Mar 22 16:57:51 sqlVm launchpadd[195673]: Perhaps ip6tables or your kernel needs to be upgraded.
Mar 22 16:57:51 sqlVm launchpadd[195678]: modprobe: ERROR: could not insert 'ip6_tables': Operation not permitted
Mar 22 16:57:51 sqlVm launchpadd[195677]: ip6tables v1.8.4 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)
Mar 22 16:57:51 sqlVm launchpadd[195677]: Perhaps ip6tables or your kernel needs to be upgraded.
Mar 22 16:57:51 sqlVm launchpadd[195670]: 2022/03/22 16:57:51 [setnetbr] ERROR: Failed to set firewall rules: exit status 3

Обходное решение

Выполните следующие команды, чтобы настроить modprobeи перезапустить службу панели запуска SQL Server:

sudo modprobe ip6_tables
sudo systemctl restart mssql-launchpadd

Область применения: SQL Server 2019 (15.x) и более поздних версий в Linux

Не удается установить tensorflow пакет с помощью sqlmlutils

Пакет sqlmlutils используется для установки пакетов Python в SQL Server 2019 (15.x). Необходимо загрузить, установить и обновить Распространяемый компонент Microsoft Visual C++ 2015-2019 (x64). tensorflow Однако пакет нельзя установить с помощью sqlmlutils. Пакет tensorflow зависит от более новой версии numpy , установленной в SQL Server. numpy Однако это предустановленный системный пакет, который sqlmlutils не может обновляться при попытке установкиtensorflow.

Обходное решение

Используя командную строку в режиме администратора, выполните следующую команду, заменив "MSSQLSERVER" именем своего экземпляра SQL:

"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES\python.exe" -m pip install --upgrade tensorflow

Если вы получаете ошибку TLS/SSL, см . 7. Не удается установить пакеты Python с помощью pip ранее в этой статье.

Область применения: SQL Server 2019 (15.x) в Windows

Revolution R Enterprise и Microsoft R Open

В этом разделе перечислены проблемы, связанные со средствами подключения, разработки и оценки производительности R, предоставляемыми Revolution Analytics. Эти средства были предоставлены в более ранних предварительных версиях SQL Server.

Как правило, рекомендуется удалить эти предыдущие версии и установить последнюю версию SQL Server или Microsoft R Server.

Революция R Enterprise не поддерживается

Установка Revolution R Enterprise параллельно с любой версией служб R (в базе данных) не поддерживается.

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

Некоторые предварительно выпущенные версии служб R (в базе данных) включали среду разработки R для Windows, созданную Революцией Analytics. Это средство больше не предоставляется и не поддерживается.

Для обеспечения совместимости со службами R (в базе данных) рекомендуется установить клиент Microsoft R. Инструменты R для Visual Studio и Visual Studio Code также поддерживают решения Microsoft R.

Проблемы совместимости с драйвером SQLite ODBC и RevoScaleR

Версия 0.92 драйвера SQLite ODBC несовместима с RevoScaleR. Версии 0.88–0.91 и 0.93 и более поздние совместимы.

Следующие шаги