Я пытаюсь подключиться к базе данных Teradata в R с помощью библиотеки DBI (если это имеет значение, я работаю в Windows). Я могу успешно подключиться с помощью библиотеки RODBC, поэтому я знаю, что мои учетные данные и т. д. верны.
Я подозреваю, что проблема в следующем:
- Я неправильно указываю механизм аутентификации
- Неправильный драйвер: вместо использования ODBC, возможно, мне следует использовать JDBC?
Фон:
Во-первых, вот моя информация ODBC, если я смотрю ее администратором источника базы данных ODBC:
- Имя = имя_имя
- Драйвер = Терадата
- Имя или IP-адрес = address.here.ok
- Механизм = лдап
- Имя пользователя = мое_имя_пользователя
Использование R 3.5.1 (2018-07-02), RStudio, Windows 10.
Что работает:
library(RODBC)
con = odbcConnect(dsn = "name_name"
,uid = rstudioapi::askForPassword("Username")
,pwd = rstudioapi::askForPassword("Password")
)
Что я пробовал с DBI и терпит неудачу:
library(DBI)
con <- DBI::dbConnect(odbc::odbc()
,driver = "Teradata"
,DBCName = "name_name"
,host = "address.here.ok"
,uid = rstudioapi::askForPassword("Database user")
,pwd = rstudioapi::askForPassword("Database password"))
Ошибка: Error: nanodbc/nanodbc.cpp:950: 28000: [Teradata][ODBC Teradata Driver][Teradata Database] The UserID, Password or Account is Invalid
con <- DBI::dbConnect(odbc::odbc()
,driver = "Teradata"
,DBCName = "name_name"
,host = "address.here.ok"
,uid = rstudioapi::askForPassword("Database user")
,pwd = rstudioapi::askForPassword("Database password")
,MechanismName = "ldap")
Ошибка: Error: nanodbc/nanodbc.cpp:950: 28000: [Teradata][ODBC Teradata Driver][Teradata Database] The UserID, Password or Account is Invalid
Я видел эту ошибку в подобных ситуациях, когда механизм указан неправильно (ldap
), так что, может быть, MechanismName
неверен?
Я знаю, что могу сказать все, что захочу в строке подключения, и ошибка не возникнет, поэтому, если MechanismName
не является правильным способом указать механизм аутентификации, мне не будет возвращена ошибка. Например:
con <- DBI::dbConnect(odbc::odbc()
,driver = "Teradata"
,DBCName = "name_name"
,host = "address.here.ok"
,uid = rstudioapi::askForPassword("Database user")
,pwd = rstudioapi::askForPassword("Database password")
,MechanismName = "ldap")
,made_up_input = "I like cats"
выдает ошибку: Error: nanodbc/nanodbc.cpp:950: 28000: [Teradata][ODBC Teradata Driver][Teradata Database] The UserID, Password or Account is Invalid
Заранее спасибо.
Изменить: появилась идея использовать MechanismName
из проблемы, поднятой в Git
askForPassword
. Тем не менее, я считаю, что вы можете добиться успеха сDBI::dbConnect(odbc::odbc() ,dsn = "name_name" ,uid = rstudioapi::askForPassword("Username") ,pwd = rstudioapi::askForPassword("Password") )
. - person TallTed   schedule 24.01.2019