「unixODBC」の編集履歴(バックアップ)一覧はこちら

unixODBC」(2017/05/27 (土) 16:44:37) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*unixODBCの設定 **DB2(UDB) [[CentOS release 4.8 (Final)]] **SQL Server 以前からSQLServerをLinuxサーバーからアクセスしたいとは思っていましたが、なかなかうまくいかない。~ まずはFreeTDSをインストール。インストールできたのだが、設定がうまくいかない。~ >./tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" Error 20009 (severity 9): Unable to connect: Adaptive Server is unavailable or does not exist OS error 111, "接続を拒否されました" There was a problem connecting to the server http://www.freetds.org/userguide/confirminstall.htm を見るとなにやら設定を確かめる方法が記載してある。さっそく確かめよう。~ >./tsql -LH 192.168.2.51 ServerName myServerName InstanceName SQLEXPRESS IsClustered No Version 10.50.4000.0 tcp 52225 おお。なんとポートが違う1433じゃない。では設定を変えよう。~ なお、設定ファイルは以下のコマンドで確認できる。~ >./tsql -C Compile-time settings (established with the "configure" script) Version: freetds v0.91.100 freetds.conf directory: /usr/local/freetdsetc MS db-lib source compatibility: no Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 5.0 iODBC: no unixodbc: yes SSPI "trusted" logins: no Kerberos: no 設定は以下~ >cat freetds.conf [main] host = 192.168.2.51 instance = SQLEXPRESS port = 52225 tds version = 7.3 ## ##SQL Server2005は7.2 2008は7.3 2012は7.4 client charset = UTF-8 ##Client(Linux)側の文字コードセット では、もう一度実行してみる。~ >/tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" Error 20017 (severity 9): Unexpected EOF from the server OS error 115, "現在処理中の操作です" Error 20002 (severity 9): Adaptive Server connection failed There was a problem connecting to the server まだ、エラーですねぇ。~ そう言えば、SQL Serverは2008R2だったなぁ。2008は7.3で2012が7.4か、R2はどこだろう?~ 仕方がない、tds versionを小刻みに変えてみよう。まずは8.0~ >./tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" 1> ビンゴ!! 8.0でOKです。~ やっとつながった。 ではPHPから読んでみよう。~ 手動で確認するなら、tsqlで対話型でも悪くはない。しかし、シェスクリプトの中で使って~ 自動化したい。そうすると、コマンドライン版のPHPで行うのがいいでしょう。~ PHPからFreeTDSにつなぐ。DB2でも使ったunixODBC経由がすでにあるDB2読み込み用PHPを使えるので便利だろう。~ まずは、unixODBCに設定を追加しよう。 /usr/local/etc/odbcinst.iniにFreeTDSの設定を追加 [FreeTDS] Description = FreeTDS Driver Driver = /usr/local/freetds/lib/libtdsodbc.so Setup = /usr/local/freetds/lib/libtdsodbc.so FileUsage = 1 CPTimeout = 5 CPReuse = 5 /usr/local/etc/odbc.ini [SQLServer] Driver = FreeTDS Protocol=TCPIP Servername = main Port = 52225 System = 192.168.2.51 UserID = uid Password = pass Database = mydb >/usr/local/bin/isql -v SQLServer uid pass +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> やっとつながった。
*unixODBCの設定 **DB2(UDB) [[CentOS release 4.8 (Final)]] **SQL Server 以前からSQLServerをLinuxサーバーからアクセスしたいとは思っていましたが、なかなかうまくいかない。~ まずはFreeTDSをインストール。インストールできたのだが、設定がうまくいかない。~ >./tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" Error 20009 (severity 9): Unable to connect: Adaptive Server is unavailable or does not exist OS error 111, "接続を拒否されました" There was a problem connecting to the server http://www.freetds.org/userguide/confirminstall.htm を見るとなにやら設定を確かめる方法が記載してある。さっそく確かめよう。~ >./tsql -LH 192.168.2.51 ServerName myServerName InstanceName SQLEXPRESS IsClustered No Version 10.50.4000.0 tcp 52225 おお。なんとポートが違う1433じゃない。では設定を変えよう。~ なお、設定ファイルは以下のコマンドで確認できる。~ >./tsql -C Compile-time settings (established with the "configure" script) Version: freetds v0.91.100 freetds.conf directory: /usr/local/freetdsetc MS db-lib source compatibility: no Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 5.0 iODBC: no unixodbc: yes SSPI "trusted" logins: no Kerberos: no 設定は以下~ >cat freetds.conf [main] host = 192.168.2.51 instance = SQLEXPRESS port = 52225 tds version = 7.3 ## ##SQL Server2005は7.2 2008は7.3 2012は7.4 client charset = UTF-8 ##Client(Linux)側の文字コードセット では、もう一度実行してみる。~ >/tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" Error 20017 (severity 9): Unexpected EOF from the server OS error 115, "現在処理中の操作です" Error 20002 (severity 9): Adaptive Server connection failed There was a problem connecting to the server まだ、エラーですねぇ。~ そう言えば、SQL Serverは2008R2だったなぁ。2008は7.3で2012が7.4か、R2はどこだろう?~ 仕方がない、tds versionを小刻みに変えてみよう。まずは8.0~ >./tsql -S main -U uid Password: locale is "ja_JP.eucJP" locale charset is "EUC-JP" using default charset "UTF-8" 1> ビンゴ!! 8.0でOKです。~ やっとつながった。 ではPHPから読んでみよう。~ 手動で確認するなら、tsqlで対話型でも悪くはない。しかし、シェスクリプトの中で使って~ 自動化したい。そうすると、コマンドライン版のPHPで行うのがいいでしょう。~ PHPからFreeTDSにつなぐ。DB2でも使ったunixODBC経由がすでにあるDB2読み込み用PHPを使えるので便利だろう。~ まずは、unixODBCに設定を追加しよう。 /usr/local/etc/odbcinst.iniにFreeTDSの設定を追加 [FreeTDS] Description = FreeTDS Driver Driver = /usr/local/freetds/lib/libtdsodbc.so Setup = /usr/local/freetds/lib/libtdsodbc.so FileUsage = 1 CPTimeout = 5 CPReuse = 5 /usr/local/etc/odbc.ini [SQLServer] Driver = FreeTDS Protocol=TCPIP Servername = main Port = 52225 System = 192.168.2.51 UserID = uid Password = pass Database = mydb >/usr/local/bin/isql -v SQLServer uid pass +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> やっとつながった。 次へ [[phpからFreeTDSにつなぐ]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー