2016-04-15 3 views
1

Я использую R 3.2.4 и Эль-Капитан, я хотел подключиться к Azure SQL с использованием пакета RODBC в R, я сделал следующее, чтобы установить егоИспользование RODBC в R для подключения к Azure SQL

brew install unixodbc 
install.packages("RODBC",type="source") 

А также

brew install freetds --with-unixodbc 

выход выше команды:

Warning: unixodbc-2.3.4 already installed 
Warning: freetds-0.95.80 already installed 

Но всякий раз, когда я пытаюсь подключиться, используя следующее:

library("RODBC") 

con = odbcDriverConnect(
    'driver = {SQL Server}; 
    Server = xxxxxx; 
    Database = xxxxx; 
    User Id= xxxxx; 
    Password= xxxxx;') 

Я получаю следующую ошибку:

[RODBC] ERROR: state IM007, code 59478176, message [iODBC][Driver Manager]No data source or driver specified, dialog prohibited 
+0

У меня есть подозрение, что строка соединения ODBC чувствительна к пробелу. Удалите все пустое пространство вокруг вашего '=', а также удалите разрывы строк. Для некоторых примеров см. Https://www.connectionstrings.com/sql-azure/. – Andrie

+0

Жаль, что это не сработало –

ответ

2

Таким образом, после многих проб и ошибок, вот что у меня есть:

1) Ditch RODBC и использовать RSQLServer

install.packages("RSQLServer") 

Создайте файл конфигурации (используйте возвышенный), называемый 'sql.yaml', со следующим содержимым:

SQL_PROD: 
    server: 11.1.111.11 
    type: &type sqlserver 
    port: &port 1433 
    domain: &domain companyname 
    user: &user winusername 
    password: &pass winpassword 
    useNTLMv2: &ntlm true 
SQL_DEV: 
    server: 11.1.111.15 
    type: *type 
    port: *port 
    domain: *domain 
    user: *user 
    password: *pass 
    useNTLMv2: *ntlm 
AW: 
    server: <yourservername> 
    type: sqlserver 
    user: <username> 
    password: <password> 
    port: 1433 

2) Сохранить YAML файл в следующем месте (запустить следующее R: Sys.getenv ("HOME")), например: если имя пользователя является его Дэйва "/ Users/Дэйва"

3)

############# 
#  DBI # 
############# 

# Note we do not attach the RSQLServer package. 
library(DBI) 
# Connect to AW server in ~/sql.yaml 
aw <- dbConnect(RSQLServer::SQLServer(), "AW", database = 'db') 

# RSQLServer only returns tables with type TABLE and VIEW. 
dbListTables(aw)