「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につなぐ]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: