Подключиться к именованному экземпляру SQL Server 2016 из R

Я пытаюсь подключиться к базе данных SQL Server 2016 в RStudio. Я использую RStudio на своем ноутбуке. Я мог бы удаленно подключиться к серверу и установить там RStudio, если бы это было абсолютно необходимо, но локальная работа имеет огромные преимущества, поэтому я действительно предпочел бы это, если бы это было возможно. Соединение с сервером происходит через VPN (FortiClient), который у меня работает на ноутбуке.

На этом сервере есть два экземпляра SQL Server. Одним из них является выпуск SQL Server 2012, который является экземпляром по умолчанию и, следовательно, не имеет имени — раньше он был единственным экземпляром на этом сервере. Вторая — версия 2016 года. Этот экземпляр был настроен совсем недавно, чтобы использовать возможности интеграции R, новые для SQL Server 2016. Поскольку у сервера уже был экземпляр по умолчанию, этот экземпляр нужно было назвать, и поэтому он называется DEVR.

Когда я получаю доступ к экземплярам в SSMS и нажимаю «Свойства», имя экземпляра по умолчанию — DWH-ACC, а экземпляр 2016 года — DWH-ACC\DEVR.

Это код, который я запускаю в RStudio для проверки подключения:

server <- "[IP-ADDRESS]\\DWH-ACC\\DEVR"
databaseName <- "Database"
user <- "user"
pwd <- "password"
sqlShareDir <- "C:\\Dir"
sqlWait <- TRUE
sqlConsoleOutput <- FALSE
sampleDataQuery <- "SELECT TOP 10 FROM [dbo].[Table]"

cc <- RxInSqlServer(server = server, databaseName = databaseName, user = user, password = pwd, shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput)
rxSetComputeContext(cc)

inDataSource <- RxSqlServerData(sqlQuery = sampleDataQuery, server=server, databaseName=databaseName, user=user, password=pwd, stringsAsFactors=TRUE, rowsPerRead=500)

rxGetVarInfo(data = inDataSource)

Я пробовал несколько вариантов спецификации сервера, среди которых [IP-ADDRESS]\\DEVR и [IP-ADDRESS]/DEVR, оба тоже не работают. Это ошибка, которую я получаю, когда запускаю код:

[Microsoft][ODBC SQL Server Driver][DBNETLIB]The SQL-Server does not exist or permission has been denied.

Could not open data source.

ODBC Error in SQLDisconnect

(Сообщение, кстати, переведено с голландского - это может быть не точный текст ошибки в английской версии программы)

Когда я пытаюсь просто указать IP-адрес в качестве строки подключения к серверу, я получаю другую ошибку, которая, по-видимому, указывает на то, что он может найти экземпляр (2012, то есть неправильный), но не может обработать запрос.

[Microsoft][ODBC-stuurprogrammabeheer] Fout in functievolgorde

Я не уверен, как перевести это, но, похоже, это связано с ODBC-драйверами и говорит «ошибка в порядке функций». В любом случае, эта ошибка не связана, и мне не нужно ее решать или объяснять, она просто показывает, что R, похоже, может подключаться к экземпляру по умолчанию, но не к более новому, именованному.


person A. Stam    schedule 28.07.2016    source источник
comment
Я бы рекомендовал создать соединение ODBC в вашем локальном экземпляре. Соединение ODBC должно иметь возможность различать экземпляры SQL Server. В R/Rstudio вы можете подключиться к экземпляру SQL Server через канал ODBC. У RevoScaleR есть возможности и для этого.   -  person Timror    schedule 28.07.2016
comment
Как я могу подключиться через канал ODBC в Rstudio? Я никогда раньше не пользовался этими каналами. Есть ли какие-то более конкретные инструкции, на которые вы можете мне указать?   -  person A. Stam    schedule 28.07.2016


Ответы (2)


Включить подразумеваемую аутентификацию для учетных записей Launchpad

В частности, перейдите к учетной записи пользователя из панели управления, и вы увидите группу пользователей SQLR с 20 учетными записями.

Разрешите их на сервере и в таблице БД с доступом для записи.

Это должно видеть вас правильно. Удачи

person fintangillane    schedule 07.01.2017

Вы можете создать соединение ODBC в своем локальном экземпляре. Учебник по созданию соединений ODBC можно найти здесь. Справочную информацию о различных типах соединений SQL Server ODBC можно найти здесь. Соединение ODBC должно иметь возможность различать разные экземпляры SQL Server.

Для меня основным преимуществом использования соединений ODBC является то, что мне не нужно хранить пароли базы данных внутри/рядом с моими R-скриптами.

В R/Rstudio вы можете подключиться к экземпляру SQL Server через канал ODBC. Учебное пособие по каналам ODBC и RevoScaleR: ссылка. Другие пакеты в R также предоставляют возможности подключения к соединениям ODBC, например: RODBC, dplyr.

person Timror    schedule 29.07.2016