2016-12-29 7 views
2

Windows 7で完全に動作させることができましたが、Linuxサーバーに移動する必要があります。私はサーバ上でプロセスを複製する前に、Ubuntu 16.04.1 LTS 64ビットをVMで実行しています。UbuntuのRを使用してODBC上でMicrosoft SQL Serverに接続

私の問題は、私のFreeTDSまたはDSNセットアップのどこかにあると確信しています。
時間を無駄にするのをやめ、Pythonを使うだけでいいですか?または、ODBCとunixODBCで同じ問題が発生しますか?

全Rスクリプト:

library(RODBC) 

#saving from a .csv to dataframe df 
df <- read.csv("./Documents/test.csv") 

#creating connection to db 
conn <- odbcDriverConnect('myDSN') 

#writing 
sqlSave(conn, df, tablename = 'dbo.test0', append = F, rownames = F, verbose = TRUE, safer = true, fast = F) 

Rコンソール

> conn <- odbcDriverConnect('myDSN') 

エラーメッセージを返す:

Warning messages: 
1: In odbcDriverConnect("myDSN") : 
    [RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified 
2: In odbcDriverConnect("myDSN") : ODBC connection failed 

は、ここに私のODBCとFreeTDSの設定です:

/etc/odbc.ini

[myDSN] 
APP = unixodbc 
Description  = master on DBNAME 
Driver   = TDSdriver 
Server   = SERVNAME 
Database  = DBNAME 
Port   = 1433 
Username = UNAME 
Password = PW 
#Trace   = No 
#TraceFile  = /var/log/freetds/freetds--odbc.log 

/etc/odbcinst.ini

[FreeTDS] 
Description = v0.91 with protocol v7.2 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 


[myDSN0] 
APP = unixodbc 
Description  = user on DBNAME 
Driver   = TDSdriver 
Server   = SERVNAME 
Database  = DBNAME 
Port   = 1433 
Username = UNAME 
Password = PW 
#Trace   = No 
#TraceFile  = /var/log/freetds/freetds--odbc.log 

[global] 
     # TDS protocol version 
; tds version = 4.2 

    # Whether to write a TDSDUMP file for diagnostic purposes 
    # (setting this to /tmp is insecure on a multi-user system) 
; dump file = /tmp/freetds.log 
; debug flags = 0xffff 

    # Command and connection timeouts 
; timeout = 10 
; connect timeout = 10 

     # If you get out-of-memory errors, it may mean that your client 
     # is trying to allocate a huge buffer for a TEXT field. 
     # Try setting 'text size' to a more reasonable limit 
     text size = 64512 

[DSN0] 
     host = IPADDRESS 
     port = 1433 
     tds version = 7.2 
     client charset = UTF-8 
+0

私はこれがR固有ではないと思います。私はLinuxからSQL Serverに接続して以来、しばらくしてきましたが、Pythonでも苦労していることを覚えておいてください。 – duffn

+0

SQL Serverの[MicrosoftのODBC Linux](https://msdn.microsoft.com/en-us/library/hh568451(v = sql.110).aspx)ドライバを使用しないのはなぜですか?また、あなたのiniファイルは、 'myDSN'、' myDSN0'と 'DSN0'の異なる名前の* lot *を使用することに注意してください。 –

答えて

1

I /freetds/freetds.conf RODBC - > FreeTDS - > SQを持っているLサーバーはLinux Mintで作業しています。私がそれを構成したので、しばらくして、しかし、ここでいくつかの(未テスト)提案されています:

いくつかの良い、インストールノートはにあります。 http://www.saltycrane.com/blog/2011/09/notes-sqlalchemy-w-pyodbc-freetds-ubuntu/

そしてもちろんRTFMの: http://www.freetds.org/userguide/

缶コマンドラインからisql mydsnまたはtsql -S mydsnを使用して問題を絞り込みますか?これはあなたの問題がFreeTDSの設定にあることを確かめるでしょう。

は、それはあなたのODBCINST.INIが私からいくつかの差分を持っているように見えます:

[TDSDriver] 
Description = TDS driver 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so 

マイfreetds.confがtds version = 8.0以外は同じと私のサーバーのエントリの名前である、それは、ODBCのエントリだものと同じです。 ini。

これと文書はうまくいけばいいですね。

+0

[プロバイダ提供のODBCドライバ](https:// msdn.microsoft.com/en-us/library/hh568451(v=sql.110).aspx)が利用できます。 –

+0

誰かがLinux用のMS ODBCに対してFreeTDSをテストしましたか?私はどちらが速いかを見ることに興味があります。 – blongworth

関連する問題