2016-04-15 16 views
1

ich verwende R 3.2.4 und El Kapitän, ich Azure SQL mit dem RODBC Paket in R verbinden wollte, habe ich folgendes zu installierenzu Azure SQL verbinden

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

Und auch

brew install freetds --with-unixodbc 

die Ausgabe des obigen Befehls:

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

Aber immer, wenn ich versuche, die folgenden verbinden mit:

library("RODBC") 

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

bekomme ich folgende Fehler:

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

Ich habe den Verdacht, dass die ODBC-Verbindungszeichenfolge empfindlich auf Leerraum ist. Entferne den ganzen Leerraum um dein '=' und entferne auch die Zeilenumbrüche. Unter https://www.connectionstrings.com/sql-azure/ finden Sie einige Beispiele. – Andrie

+0

Entschuldigung, das hat nicht funktioniert –

Antwort

2

So nach viel Versuch und Irrtum, hier ist das, was ich habe:

1) Ditch RODBC und verwenden RSQLServer

install.packages("RSQLServer") 

Erstellen Sie eine Konfigurationsdatei (verwenden Sie sublime) namens "sql.yaml" mit dem folgenden Inhalt:

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) speichern YAML-Datei in der folgenden Position (die folgend in R laufen: Sys.getenv ("HOME")) zB: wenn Benutzername dave seinen "/ Users/dave"

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)