Domanda

Avevo un database Oracle e ho utilizzato la connessione RODBC per connettermi a Oracle come di seguito:

library(RODBC)
new_sql<-c("select * from table")
tryCatch({
            ch=odbcConnect("odbc_con",pwd = "!passwd!")
            res<-sqlQuery(ch,new_sql)
            },error = function(e) {
            print(odbcGetErrMsg(ch))          
        })

Il database è stato migrato su mssql e ho creato una nuova connessione odbc al server mssql, chiamata new_odbc_con utilizzando DATA SOURCES (ODBC), utilizzando gli strumenti di amministratore.

Quando ho aggiornato il codice a questo:

tryCatch({
            ch=odbcConnect("odbc_con",pwd = "!password!")
            res<-sqlQuery(ch,new_sql)
            },error = function(e) {
            print(odbcGetErrMsg(ch))          
        })

Non riesco a connettermi al server SQL ed eseguire SQL.Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Nel caso in cui si ripresenti, questo è ciò che ho fatto per risolvere questo problema.

  1. Ho creato un sistema odbc connessione utilizzando gli strumenti di amministrazione (origini dati (ODBC))
  2. Ho aggiornato questa riga a ch=odbcConnect("odbc_con",pwd = "!password!") Ach=odbcConnect("odbc_con",uid="userid",pwd = "!password!")

ha funzionato a meraviglia.

Altri suggerimenti

Fornisce anche la soluzione Linux RedHat, quella necessità di modificare 3 di questi file di configurazione qui sotto prima di chiamare il DSN in R

$ sudo nano /etc/odbc.ini 
[salesdb]
Driver=FreeTDS
Trace=No
Server=xxx
Port=1433
Database=xxxx
TDS_Version=8.0


$ sudo nano /etc/freetds.conf
# A typical Microsoft server
[salesdb]
    host = xxxx
    port = 1433
    tds version = 8.0
    client charset = UTF-8

$ sudo nano /etc/odbcinst.ini
# Driver from the FreeTDS package
# Setup from the unixODBC package
[FreeTDS]
Description     = FreeTDS
Driver          = /usr/lib64/libtdsodbc.so # this is the linux path, you can call odbcinst -q -d to see where the other drivers were installed in the system
.

Infine, è possibile utilizzare TSQL o ISQL per testare la sessione è installato correttamente o questo comando qui sotto,

$ odbcinst -q -s
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top