Red Hat Linux 6 サーバーで R 2.15.2 を実行しています。私の目標は、RODBC を介して別のマシン上の MS SQL Server データベースに接続することです。私は調査を行い、Microsoft サポート Web サイトから Linux バージョンの MS SQL ODBC ドライバーをダウンロードしてインストールしました。ソースから unixODBC バージョン 2.3.0 をビルドする必要がありました。これは Windows ドライバーで必要であり、RHL リポジトリにはまだ含まれていないためです (リポジトリ バージョンは 2.2.14 です)。
isql
とにかく、少し作業した後、最終的にドライバーをインストールして適切に構成し、コマンドを介して SQL Server データベースに正常に接続できます。
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
odbc.ini
とodbcinst.ini
ファイルが適切に設定されていることがわかります。
ただし、R 内から ODBC 接続にアクセスしようとすると、次のようになります。
> test <- odbcDriverConnect('DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass')
Warning messages:
1: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data
source name not found, and no default driver specified
2: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
ODBC connection failed
odbcDataSources
Rでのコマンドの結果は次のとおりです。
> odbcDataSources()
named character(0)
私はいくつかの調査を行ってきましたが、解決策 (間違っている可能性があります) は、ODBC 環境変数を適切に構成して、RODBC がodbc.ini
. 私の調査に基づいて、関連する可能性のある次の環境変数を見つけました:$ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
これらを何に設定するかについて合理的な考えがありますが、それらを永続的に設定する方法がわかりません。適切なファイル。
誰かが私のためにこれに光を当てることができますか? isql
Linuxで環境変数がどのように機能するか、特に接続に問題RODBC
がないのに、ドライバー/データソースさえ見つからない理由を正しく理解しているかどうかはわかりません。
注: unixODBC のリポジトリ バージョンをインストールした場合、RODBC はinstall.packages('RODBC')
R のコマンドを使用して問題なくインストールされます。しかし、ソースから unixODBC 2.3.0 をインストールした後、RODBC のインストールは依存関係の問題のために失敗し、ここに掲載されているガイドを使用して、ソースから RODBC をインストールします。最初に ODBC を適切に構成できなかった可能性があります。それが原因で、現在問題が発生していますか?