これは本当に私を困らせ始めています。Ubuntu 12.04 を実行しており、MS SQL サーバー 2012 を実行しているボックスに接続しようとしています。まず、セットアップに関する情報をいくつか提供します。
私のfreetds.conf:
[EXNAME]
host = IP
port = 1433
tds version = 7.0
client charset = UTF-8
freetds.conf をセットアップした後、最初に tsql との接続をテストし、予想される (そして歓迎される) プロンプトを生成しました。
...
using default charset "UTF-8"
1>
したがって、私の FreeTDS セットアップは正常に機能しているようです。次に、odbc.ini と obdcinst.ini をセットアップします。
odbc.ini:
[EXNAME]
Driver = FreeTDS
ServerName = EXNAME
UID = Me
PWD = Pass
odbcinst.ini:
[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
UsageCount = 1
このセットアップに続いて、osql を実行して確認します。予想されるすべての応答を出力し、ドライバーと正しい段落を ondcb.ini で見つけることができます。たとえば、次のようになります。
[EXNAME] found in /etc/odbc.ini
found this section:
[EXNAME]
Driver = FreeTDS
ServerName = EXNAME
UID = Me
PWD = Pass
looking for driver for DSN [EXNAME] in /etc/odbc.ini
found driver line: " Driver = FreeTDS"
以下まで続きます。
DSN [EXNAME] has servername "" (from /etc/odbc.ini)
osql は odbc.ini でサーバー名を検出していないようです。
このチェックの後、isql 経由で接続できますが、SQL コマンドを実行できません。次のエラーが表示されます。
SQL> SELECT name FROM master..sysdatabases;
[37000][unixODBC][FreeTDS][SQL Server]Could not find stored procedure 'SELECT'.
[ISQL]ERROR: Could not SQLExecute
私が試したこと:
A.) freetds.conf と両方の .ini ファイルで考えられるほぼすべての構成と命名規則。変更を投稿する 上記と同じテストを実行し、同じ結果に到達します
B.) isql の外でエラーを再現する。ROBC でまったく同じエラーが発生しました。もちろん、これは予想されますが、そうしない理由を考えました
C.) MS SQL Server 以外の SQL バリアント。誰かが私に誤解を与えた場合に備えて、そこでいくつかの MySQL コマンドも試しました。これはSQLの問題かもしれませんが、私にはわかりません。
D.) osql が吐き出すものと同様のエラー (結果は私が推測する) を見つけるのに最も近いものはhereです。前回の投稿で示唆されたように、少なくとも osql の応答に関連する限り、問題はawk
. 提案さawk
れているように、変数を作成してサーバー名を解析してテストします。
$ SERVER_LINE='ServerName = SERVER'
$ echo ${SERVER_LINE} | awk -F '=[[:space:]]*' '{print $2}'
これは結果になるはずですSERVER
が、代わりに「」が表示されます。
持っているのはそれだけだ。要約すると、OSQL は odbc.ini でサーバー名を見つけることができないようです。これにより、ISQL または ROBC からコマンドを実行できなくなる可能性があります。これらの問題はバラバラだと思い始めていますが、どんな助けでも大歓迎です。
編集:2014年7月31日 これはすべて機能しています。私が強調したことに加えて、いくつかの他の問題が起こっていました。結局、Mac と Linux の両方のボックスで同様の接続をセットアップする必要がありました。両方の手順は次のとおりです。 http://www.joecjr.com/2014/07/27/install-and-use-freetds-unixodbc-and-rodbc-or-pyodbc/