Не удалось войти в систему для ''. при использовании DSN с подключением Rstudio к MS SQL 2016 - PullRequest
0 голосов
/ 08 ноября 2018

При возникновении странной ошибки при попытке перенести сведения о соединении SQL из кода R в DSN и использовании DSN в качестве строки соединения.

Используя пакет ODBC, я могу создать соединение через RStudio, используя:

con <- DBI::dbConnect(odbc::odbc(),
                  Driver = "SQL Server Native Client 11.0",
                  Server = "XXX",
                  Database = "YYY",
                  uid = "username",
                  pwd = "password",
                  port = 1443)

Этот код выше работает правильно и разрешает соединение SQL. При перемещении этого в DSN (попытался и DSN пользователя и системы), генерируется ошибка. Испытывались как пользовательские, так и системные DSN, и когда тестируются соединения из приложения ODBC в Windows (Win 10), тест проходит успешно.

При использовании кода, приведенного ниже в R, соединение не устанавливается.

con <- DBI::dbConnect(odbc::odbc(), "ZZZ")

Ошибка: nanodbc / nanodbc.cpp: 950: 28000: [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Ошибка входа пользователя ''

Это может указывать на то, что имя пользователя неизвестно, но моя информация состоит в том, что все параметры соединения хранятся в записи DSN. Моя первоначальная установка была сгенерирована из: https://support.rstudio.com/hc/en-us/articles/214510788-Setting-up-R-to-connect-to-SQL-Server-

После дальнейшего обсуждения в нижней части страницы отображается только обсуждение версии кода соединения. https://db.rstudio.com/databases/microsoft-sql-server/

Эта ссылка обсуждает компонент DSN, а также обеспечивает доступность драйвера. https://db.rstudio.com/getting-started/connect-to-database Это подтверждает структуру кода при попытке использовать DSN.

Я также подтвердил этот фрагмент кода с помощью: https://www.r -bloggers.com / наладка-ан-ODBC-соединение-с-MS-SQL-сервер на окнах /

Я попытался использовать драйвер SQL Server в сравнении с версией Native Client и получил ту же ошибку, кроме идентификатора драйвера ODBC SQL Server вместо Native Client 11.0. Кажется, это указывает на то, что вызов dbconnect как минимум идентифицирует запись DSN.

Используя приведенный ниже код, я подтвердил, что драйвер для SQL Server и собственного клиента 11.0 был доступен.

sort(unique(odbcListDrivers()[[1]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...