решил разделить свой код на разные сценарии и запустить их через «основной» сценарий, используя исходный код.
Одним из сценариев является среда «Settings.R», содержащая сведения о подключении к базе данных и некоторые другие параметры.
Когда я пытаюсь загрузить скрипт с помощью источника («Settings.R»), он находит среду, и я могу получить доступ к переменным в консоли. Но когда я пытаюсь установить соединение с базой данных, это не удается.
Однако, если я запускаю сценарий Settings.R вручную, а затем пытаюсь установить соединение в другом сценарии, он работает.
# Settings script:
settings <- as.environment(list())
settings$dbConnection <- 'Driver={SQL Server};Server=SERVER INFO;Database=DATABASE;Uid=USERNAME;Pwd=PASSWORD';
# The calling script
source('Settings.R')
dbConnection <- odbcDriverConnect(settings$dbConnection)
# DO STUFF
close(dbConnection);
Возможно, это связано с тем, что среда настроек недоступна глобально.
Я попытался изменить "локальную" переменную на ИСТИНА / ЛОЖЬ, но это не помогло.
local: TRUE, FALSE или окружение, определяющее, где будут оцениваться проанализированные выражения. FALSE (по умолчанию) соответствует рабочей области пользователя (глобальной среде), а TRUE - среде, из которой вызывается источник.
Я получаю следующее сообщение об ошибке (немного шведского текста)
Предупреждающие сообщения: 1: В odbcDriverConnect (настройки $ dbConnection):
[RODBC] ОШИБКА: состояние 08001, код 17, сообщение [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] Не удалось добавить SQL Server или нет. 2: В odbcDriverConnect (настройки $ dbConnection):
[RODBC] ОШИБКА: состояние 01000, код 53, сообщение [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionOpen (Connect ()). 3: В odbcDriverConnect (настройки $ dbConnection): сбой подключения ODBC>
Любые идеи?
source('Settings.R')
в свойRprofile.site
. Это будет первое, что откроет R и будет в окружении. - person Pierre Lapointe   schedule 19.06.2017source()
будет оценивать все вещи в глобальной среде, и он должен быть таким же, как и запись всего кода в одном файле. Проблема все еще существует, если вы очистите среду, перезапустите сеанс R и установите рабочий каталог в качестве исходного файла? Что за сообщение об ошибке? - person Consistency   schedule 20.06.2017parent.env(settings) <environment: R_EmptyEnv>
Может быть проблема? Файл настроек был автоматически сгенерирован для меня, поэтому я подумал, что это будет правильно. - person Khenrix   schedule 20.06.2017