FreeTDSドライバーとunixODBCを使用して、LAMPベースのアプリとリモートMsSQLデータベース間のPDO接続を管理することにしました。残念ながら、ドライバーはfreetds.confファイルを読み取らず、サーバーのCLIを介して直接設定された環境変数も、putenv()関数によってphpファイルで指定された環境変数も読み取らないようです。
今いくつかのデータ:
- サーバーにpingを実行すると、パケットが失われることはありません。
- 1433ポートでサーバーにTelnet接続すると、接続が確立されます
コマンドを使用するとき
TDSVER=7.0 tsql -H >IP< -p 1433 -U username
パスワードの入力を求められ、接続が確立されます。
コマンドの前にTDSVERがない場合、接続は次のようなメッセージで失敗します。
Error 20017 (severity 9): Unexpected EOF from the server OS error 115, "Operation now in progress" Error 20002 (severity 9): Adaptive Server connection failed There was a problem connecting to the server
tsql -Cコマンドは、次のような出力をエコーします。
Compile-time settings (established with the "configure" script) Version: freetds v0.91 freetds.conf directory: /usr/local/etc MS db-lib source compatibility: yes Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 5.0 iODBC: no unixodbc: yes SSPI "trusted" logins: no Kerberos: no
上記の場所にあるfreetds.confには、次のエントリがあります。
[MSSQL] host = >IP< port = 1433 tds version = 7.0
ISQLも失敗します:
isql -v MSSQL [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source [01000][unixODBC][FreeTDS][SQL Server]Adaptive Server connection failed [ISQL]ERROR: Could not SQLConnect
私のodbc.ini:
[MSSQL] Description = MS SQL Server Driver = FreeTDS TDS_Version = 7.0 Server = >IP< UID = username PWD = password ReadOnly = No Port = 1433
解決策は本当に簡単だと思いますが、私はそれを見つけるにはあまりにも愚かです...