LinuxからMicroSoft SQLサーバに接続する設定

ググるとサイトがあふれるほど出てくるけど、
ウソが書いてあることが多いので、整理しておく。

◇必要なアプリをインストールする

  1. yum -y install freetds
  2. yum -y install unixODBC

※yumでインストした方が設定がなくて楽~♪

◇odbc.ini を編集

  1. vim /etc/odbc.ini

—————————————————————(ここから
[ODBC Data Sources]
MS-SQL = FreeTDS ODBC Driver

[MS-SQL]
Driver = /usr/lib64/libtdsodbc.so.0
Servername = MSDB
Database = (SQLサーバ上の実際のDB名(スキーマ))
Port = 1433
—————————————————————(ここまで
※MS-SQL の部分はお好きに。。。
※MSDB の部分もお好きに。。。

◇freetds.conf を編集

  1. vim /etc/freetds.conf

—————————————————————(ここから
[MSDB]
host = 192.168.150.xx
port = 1433
tds version = 7.2
client charset = UTF-8
language = english
—————————————————————(ここまで
※[global] 以外のエンティティはコメントアウトする
※MSDB 部分は、odbc.ini の設定と揃える

再起動等は不要なので、上記ファイルを保存したら
いきなり下記のFreeTDS接続コマンドで実験する。

  1. tsql -S MS-SQL -U sa -P (password)

うまく接続できると、こんな感じの表示に・・・

locale is “ja_JP.UTF-8”
locale charset is “UTF-8”
using default charset “UTF-8”
1>
1>use master
2>go
1>select @@version
2>go
Microsoft SQL Server 2005(Intel X86)
May 3 2005 23:18:38
Copyright (c) 1988-2003 Microsoft Corporation
Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

(1 row affected)
1>

ダメだったら、上記の2個のファイルをよく見直すこと。
特に、実験コマンドの「MS-SQL」の部分は間違えやすいので注意!

次に、ODBC経由接続の実験をする。

  1. isql -v MS-SQL sa (password)

うまく接続できると、こんな感じの表示に・・・

+—————————————+
| Connected!   |
| |
| sql-statement    |
| help [tablename] |
| quit |
| |
+—————————————+
SQL>

ここまでうまくいったら、PHPから接続可能らしい・・・がっ!?
(ただし、ODBC経由なのでcakeとかORMからだとこれだけじゃダメらしい)

  「PHPからの接続は知~らね(´・ω・`)」(N氏 談)