- Форум пользователей MySQL
- #1 15.09.2011 11:07:48
- Скрипт не хочет работать в SQL Server 2008
- Не работает SQL-запрос
- Комментарии ( 38 ):
- Устранение неполадок со службой панели запуска, выполняющей скрипты Python и R в Службах машинного обучения SQL Server
- Определение того, выполняется панель запуска
- Проверка учетной записи службы панели запуска
- Группе пользователей для панели запуска не удается войти в систему локально
- Разрешения для запуска внешних скриптов
- Распространенные ошибки панели запуска
- «Не удается запустить среду выполнения для скрипта R»
- «Вход в систему не произведен: выбранный режим входа для данного пользователя не предусмотрен»
- «Не удалось связаться со службой панели запуска»
- «Неустранимая ошибка: сбой при создании tmpFile»
- «Недостаточно квот для обработки этой команды»
- «Не удается найти пакет»
- Образец результатов
- Завершение работы панели запуска из-за несовпадающих библиотек DLL
- Не удается запустить панель запуска, если требуется нотация 8dot3
Форум пользователей MySQL
Задавайте вопросы, мы ответим
Страниц: 1
#1 15.09.2011 11:07:48
Скрипт не хочет работать в SQL Server 2008
Здравствуйте!
Раньше стоял SQL Server 2000 и этот скрипт работал на SQL Server 2008 шибка выетает.
Очень жду помощи, так как отчеты 15 числа нужно делать помощью его.
Жду ответа.
Вот код скрипт, а в низу текст ошибки
select
o.id as ‘ID’,’@’,
o.initials as ‘FIO’,’@’,
p.birthdate as ‘DR’,’@’,
s.name as ‘г«Ёж*’,’@’,
b.bldn_no as ‘*®¬Ґа ¤®¬*’,’@’,
f.flat_no as ‘*®¬Ґа Єў*авЁал’,’@’,
‘08.2003’ as ‘otch’,’@’,
o.really_live as ‘SEM’,’@’,
f.total_sq as ‘PL’,’@’,
c.norma as ‘PLS’
from occupations o, flats f, consmodes_list c, buildings b, xstreets s, people p
where o.flat_id=f.id and
c.occ_id=* o.id and
c.service_id=’Ї«®й’and
o.flat_id=f.id and
b.id=f.bldn_id and
s.id=b.street_id and
.Net SqlClient Data Provider: сообщение 4147, уровень 15, состояние 1, строка 22
The query uses non-ANSI outer join operators («*=» or «=*»). To run this query without modification, please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.
Источник
Не работает SQL-запрос
В этой статье речь пойдёт об одной из самых распространённых причин, почему не работает SQL-запрос. Мы сейчас не берём в расчёт «случайные ошибки». Здесь идёт речь о передаче данных их через форму и последующее их использование в SQL-запросах, которые иногда почему-то не работают.
Предположим, что Вы делаете комментирование у себя на сайте. И Вы хотите, чтобы пользователь имел право вводить любые символы, даже кавычки, обратные слеши и прочее. Предложим примерный вид Вашего запроса на вставку новой записи в таблицу комментариев:
INSERT INTO `mysite_comments` (`name`, `comment`) VALUES (‘$name’, ‘$comment’)
Теперь давайте подставим в этот SQL-запрос реальные данные, допустим, name будет Михаил, а comment будет Тестирование.
INSERT INTO `mysite_comments` (`name`, `comment`) VALUES (‘Михаил’, ‘Тестирование’)
Как Вы думаете, сработает такой запрос? Безусловно, он будет прекрасно работать. Но что если кто-нибудь введёт name Михаил, а comment Мой ‘ комментарий:
INSERT INTO `mysite_comments` (`name`, `comment`) VALUES (‘Михаил’, ‘Мой ‘ комментарий’)
Как Вы понимаете, данный SQL-запрос не будет выполнен. И вот теперь расскажу об решении этой проблемы.
Необходимо любые переменные, которые используются в SQL-запросах, пропускать через функции addslashes(). Данные функция занимается экранированием следующих спецсимволов: одинарная кавычка, обратная кавычка, двойная кавычка и обратный слеш.
Таким образом, если мы сделаем так:
$name = addslashes($name);
$comment = addslashes($comment);
То наш SQL-запрос станет таким:
INSERT INTO `mysite_comments` (`name`, `comment`) VALUES (‘Михаил’, ‘Мой \’ комментарий’)
И вот этот SQL-запрос уже выполнится без проблем.
И ещё один момент, о котором часто забывается. Любые входные данные надо обязательно пропускать через функцию htmlspecialchars(), за исключением отдельных случаев. Данная функция избавит Вас от заливки в базу HTML-кода.
Чтобы понять важность функции htmlspecialchars() давайте разберём простой пример, связанный с теми же комментариями. Если пользователь будет иметь право передавать HTML-код (а он это права всегда имеет), который впоследствии не будет никак обработан, то при выводе комментария на страницу этот код будет выполнен. Самый простой пример — это сделать редирект на JavaScript на сайт злоумышленника. Таким образом, любой, кто зайдёт на страницу с этим комментарием, будет мгновенно отправлен на другой сайт.
Подведём небольшой итог. Всегда используйте функцию htmlspecialchars() для всех входящих данных, за исключением самых редких случаев. И всегда используйте функцию addslashes() для каждой переменной, участвующей в SQL-запросах.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 38 ):
Михаил, помогите пожалуйста. Пишу вот такую функцию. Затем идёт html форма и после пишу код Здесь $_POST[‘send’] это кнопка submit отправки. НО ничего не вставляется в базу! Почему?
Проверьте что будет если сам запрос ввести напрямую в phpmyadmin. Возможно действительно поля не добавляются, из-за какой-нибудь ошибки.
«И всегда используйте функцию addslashes() для каждой переменной, участвующей в SQL-запросах.» а mysql_real_escape_string когда использловать?
Вместо addslashes() можно использовать mysql_real_escape_string(), причём это функция более безопасная, если кодировка не UTF-8.
Она по-моему экранирует только двойные и одинарные кавычки
Ещё обратный слэш. Этого достаточно, чтобы захватить все спецсимволы.
Доброго времени суток,в меня такой вопрос,а что нужно писать в файле где сохраняються нустройки к базе данных редакторо tinyMCE.Дайте мне код
В меня токай еще вопрос.а Вы не знаете где можно скачать редактор который сможет конвертировать музыку или видео по качеству и по расшерению екрана?
Есть ffmpeg: http://myrusakov.ru/php-ffmpeg.html Для аудио надо поискать что-то аналогичное.
Так а как же делать? Имеем: addslashes() и htmlspecialchars() Надо пропускать вводимые пользователем данные через обе эти функции или через одну из них? Если через обе, то имеет ли значение в какой последовательности? Можно чуточку поподробнее об этом? &&& еще и про stripslashes() начитал тут вдобавок 🙂
Надо через обе, сначала через htmlspecialchars(), потом через addslashes().
то есть надо просто таким образом обрабатывать данные? $text_comment = $_POST[«text_comment»]; $text_comment = htmlspecialchars($text_comment); $text_comment = addslashes($text_comment); и дальше уже вставлять $text_comment в SQL запрос. и все?
Михаил, при вводе, например: «GHJDTHRF» в поле для комментариев и отправке на сайт, выводит потом \»GHJDTHRF\» в самиз комментах. А вото так не нужно. Скажи, пожалуйста, как подрихтовать? 🙂
Если выводить из базы, то такого никогда не будет. Выводите из базы, а не берите откуда-то ещё.
хм. да в том то и дело, что из базы как раз и вывожу! 🙂 вот так в базе хранится: \»GHJDTHRF\»
Значит, нарушаете порядок вызова функций. Не может добавляться слэш к & через addslashes(). А у Вас он почему-то находится. И ещё добавьте в .htaccess magic_quotes_qpc off magic_quotes_runtime off magic_quotes_sybase off Возможно, дело в этом.
добавил и все сломалось совсем 🙂 ошибку 500 выдает! .htaccess стал таким: AddDefaultCharset UTF-8 magic_quotes_qpc off magic_quotes_runtime off magic_quotes_sybase off после каждой строчки не надо добавлять ник4аких разделительных знаков?
Просто вот так напишите и всё: php_value magic_quotes_gpc 0
А нужно пропускать через эти функции, например, название фотографии, которую пользователь размещает на сайт. может злоумышленник всунуть каку таким образом? .jpeg
Михаил, хочу вывести статью в отдельном файле с подставление нужных значений. Есть форма из которой заносятся данные в базу данных под id. Потом выводит нужную часть информации в шаблоне и ссылку на статью, но в статье в ссылку id не подставляется и выводит пустой шаблон. Вот код: function getArticle ($id) < global $mysqli; connectDB(); $result_set = $mysqli->query («SELECT * FROM `action` WHERE `id`= ‘id'»); closeDB(); return $result_set->fetch_assoc (); > function ResultSetToArray ($result_set) < $array = array (); while (($row = $result_set->fetch_assoc ()) != false); $array[] = $row; return $array; > а это в файле для вывода статьи : Буду очень благодарен!!
честно говоря я уже пытаюсь найти ошибку уже очень долго. и прошу Вас, скажите есть здесь ошибка или нет.
Я не вижу сразу, но я никак не могу найти ошибку, как бы этого не хотел, надо абсолютно весь код смотреть во всех файлах. Ошибка может быть, где угодно.
я могу Вам на почту отправить файлы с кодом, если Вы не против.
Notice: Undefined index: id in Z:\home\site.localhost\www\id.php on line 4 выводит вот такую ошибку. а вот код где ошибка:
Делайте проверку на существование $_GET[«id»] через isset, а уже потом обращайтесь к этому массиву.
уже пробовал. ошибки нет, но все равно информация не выводится
Она не выводится, потому что $_GET[«id»] — не существует в массиве. Возможно, из-за того, что URL с ошибкой.
Михаил, после isset: if(isset($_GET[‘id’])) < $action = getArticle($_GET['id']); >начало выводить ошибки: Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 6 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 7 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 8 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 9 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 10 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 11 Notice: Undefined variable: action in Z:\home\site.localhost\www\id.php on line 12
Смысл этого замечания (а не ошибки) в том, что Вы используете непроинициализированные переменные.
а кактм образом мне их проиницизировать?
Не знаю, в данную ли рубрику я пишу, но проблема у меня в следующем. Есть мониторинг обменных валют. В последние дни при попытке обновить экспортный файл курсов выдает ошибку: WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘get, IF (e.start 0, 1.0000, IF (e.startx <> 0, e.sta’ at line 4] INSERT INTO `wp_emetal_calc` SELECT e.*, IF (e.start 0, e.startx / e.start, IF (e.startx <> 0, 1.0000, e.startx)) get, IF (e.start 0, 1.0000, IF (e.startx <> 0, e.start / e.startx, e.start)) give FROM `wp_emetal` e WHERE emetalx <> emetaly AND start <> 0 AND startx <> 0 Писал на хостинг. Вот переписка: Здравствуйте, нужна Ваша помощь, возникла непонятная проблема, мой сайт http://superobmen.org/ который находится на этом аккаунте, ещё сегодня работал всё было нормально, сейчас сам сайт в принципе работает, но что-то странное произошло с базой данных, сайт является мониторингом и регулярно выводит определённые данные на главной странице, сейчас страница пустая, ни каких данных не выдает, что произошло не могу понять, внутри в админке пишет такую ошибку: database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘get, IF (e.start 0, 1.0000, IF (e.startx <> 0, e.sta’ at line 4] помогите плиз, пробую восстановить из бекапа, тоже выдает ошибку. Вы, 02.12.2014 18:43 Здравствуйте, можно посмотреть полностью код запроса? Антон Алексеевич, 02.12.2014 18:48 если вы имеете ввиду саму ошибку, которую выдает скрипт после запуска для обновления, тогда вот: WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘get, IF (e.start 0, 1.0000, IF (e.startx <> 0, e.sta’ at line 4] INSERT INTO `wp_emetal_calc` SELECT e.*, IF (e.start 0, e.startx / e.start, IF (e.startx <> 0, 1.0000, e.startx)) get, IF (e.start 0, 1.0000, IF (e.startx <> 0, e.start / e.startx, e.start)) give FROM `wp_emetal` e WHERE emetalx <> emetaly AND start <> 0 AND startx <> 0 Вы, 02.12.2014 19:31 Здравствуйте, уточните какие шаги необходимо выполнить, чтобы воспроизвести ошибку? Предоставьте необходимые доступы. Денис Викторович, 02.12.2014 19:51 вот с помощью данной ссылки: http://superobmen.org/wp-content/plugins/exchangers-monitor/tbot.php?tb=superobmen.org запускается скрипт и в результате выдает ошибку которой не должно быть. Вы, 02.12.2014 20:27 Приветствую. Прошу прощения за долгий ответ. Проблема, собственно, заключается в некорректном синтаксисе запроса к БД, как и указано в ошибке. Полагаю, для начала, Вам необходимо уточнить, по какой причине появляется данная ошибка у разработчика данного скрипта. Максим Викторович, 03.12.2014 01:51 Подскажите, а у вас вчера ни чего не происходило с MySQL, может быть версия менялась, обновлялась или ещё что либо? Вы, 03.12.2014 14:00 Нет. Скорее всего это не будет являться причиной ошибки в синтаксисе запроса к базе. Роман Игоревич, 03.12.2014 15:10 Может Вы поможете? Или подсказать что делать?
Вам уже отвечали Мы не правим чужой код. Обратитесь к разработчику вашего плагина. В чём ошибка,вам уже сказали:некорректный синтаксис mysql Что за бред у вас в синтаксисе разобрать вообще проблемно. Куча левой ненужной ерунды. Мой вам совет,выбросить этот плагин
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Источник
Устранение неполадок со службой панели запуска, выполняющей скрипты 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 разрешение Локальный вход в систему.
Разрешения для запуска внешних скриптов
Даже если панель запуска настроена правильно, она возвращает ошибку, когда у пользователя нет разрешения на выполнение скриптов R или Python.
Если вы установили SQL Server в качестве администратора базы данных или являетесь владельцем базы данных, вы получаете это разрешение автоматически. Однако другие пользователи обычно обладают более ограниченными разрешениями. При попытке запустить скрипт R они получат ошибку панели запуска.
Чтобы устранить эту проблему, в SQL Server Management Studio администратор безопасности может изменить имя входа SQL или учетную запись пользователя Windows, запустив следующий скрипт:
Дополнительные сведения см. в разделе 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 для этого экземпляра и выберите пункт Свойства.
Откройте вкладку Службы и убедитесь, что служба запущена. Если это не так, установите Автоматический Режим запуска и нажмите кнопку Применить.
Перезапуск службы обычно устраняет проблему и позволяет запускать скрипты машинного обучения. Если перезапуск не устраняет проблему, запишите путь и аргументы в свойстве Путь к двоичным файлам и сделайте следующее:
а. Просмотрите файл 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 (или любое другое средство по работе с запросами к базе данных), подключитесь к экземпляру, а затем запустите следующую хранимую процедуру:
Образец результатов
Сообщения 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 должны установить один из следующих компонентов:
- Пакет обновления 1 (SP1) и накопительный пакет обновления 2 (CU1) для SQL Server 2016: Накопительный пакет обновления 1 для 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.
Источник