1

私は最後の1日か2日をubuntu12でunixODBCとfreetdsのセットアップに費やしました-それ自体は楽しいプロセスではありませんが、sqshとisqlの両方を使用して動作するようになりました。node-odbcをインストールし、github readmeで提供されているコードスニペットを使用して接続をテストしていますが、常に

 S1000:1:0:[unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 WARNING: ev_unref is deprecated, use uv_unref
 [Error: Error opening database]

isqlをisql -v SERVER user pass使用して(正しい資格情報を使用して)実行し、use DATABASE接続するとすべてが機能し、クエリを正常に実行できます。jsの私の接続文字列は

 "DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

これはisqlとの接続に使用されるクレデンシャルと完全に一致しますが、ノードでは前述のエラーが発生します。なぜこれが起こっているのかについてのアイデアはありますか?odbc.iniファイルとodbcinst.iniファイルなどの場所を特定することは可能ですか?

参考までに:

/etc/odbc.ini:

[SERVER]
Driver      = FreeTDS
Trace       = No
Server      = SERVER
Port        = 1433
Database    = DATABASE
UsageCount  = 1
TDS_Version = 7.0

/etc/odbcinst.ini:

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage   = 1
CPTimeout   = 5
CPReuse     = 20
Threading   = 1

助けてくれてありがとう!

4

2 に答える 2

3

今日この問題に遭遇したので、接続文字列の一部としてポート番号を指定する必要がありました。ご参考までに。

于 2012-11-02T18:43:31.483 に答える
1

理由は完全にはわかりませんが、これに対する解決策を見つけたようです。使用される接続文字列が次の場合:

"DRIVER={FreeTDS};SERVER=SERVER;UID=user;PWD=pass;DATABASE=DATABASE"

その後、何らかの理由でまったく機能しません。SERVER を IP とマシンの実際の名前の両方として設定してみましたが、うまくいきませんでした。ただし、SERVERNAME または DSN を使用するように接続文字列を変更し (文字列には SERVER、SERVERNAME、または DNS のいずれかのみを含めることができます)、マシン名を指定すると、問題なく動作しますが、IP で動作させることはできません。私が試したこと。したがって、要約すると、私のために機能している接続文字列は次のとおりです。

"DRIVER={FreeTDS};SERVERNAME=SERVERNAME;UID=user;PWD=pass;DATABASE=DATABASE"

この問題の鍵は SQLDriverConnect にあるようです。

于 2012-07-10T14:23:14.670 に答える