LoginSignup
20
21

More than 5 years have passed since last update.

CentOSからSQL Server or Azure SQL Databaseに接続する

Last updated at Posted at 2015-07-09

PHP+Mysqlばっかり使ってた人が
何故かAzure SQL Daatabase(Azure版SQL Server)を使わざるを得なくなって調べた産物
ODBCとか必要なのかと悩んでいましたが特に必要ないみたいです。

CentOS5をベースにしていますが、
これで絶対にLinuxから行けます!

freetdsのインストール

まずは「freetds」をいれます。

# yum install freetds freetds-devel

実はこれだけでSQL ServerやAzure SQL Databaseに繫げることが出来ます。
(tsqlというCLI用のmysqlコマンドみたいなやつでつなげます。)

# TDSVER=8.0 tsql -H 'データベースサーバIP' -p 1433 -U 'ユーザ名' -D 'データベース名'

Azure SQL Databaseの場合は[データベースサーバIP]を[hogehoge.database.windows.net]とします。
あと、Azure SQL Databaseにつなげる際は、Azure側で接続元IPを登録しないといけません。
Azure管理コンソールからSQL Database、データベースを選び、
ダッシュボードから使用できるipアドレスに
クライアントIPアドレスアドレスを登録しておきます

-Pを付けることでパスワード入力をスルーすることが出来ます

Azure SQL Databaseの場合は -Dを付けて接続時にデータベースを決めておかないといけません。
要するにSQL Serverのuseコマンドが使えないんです。
ってことは「[データベース名].[dbo].[テーブル名]」と記述する奴もAzure SQL Databaseでは使えません。。

実行例

Azure SQL Databaseにつないだ場合

# TDSVER=8.0 tsql -S 'hogehoge.database.windows.net' -p 1433 -U 'fugefuge' -P 'hagehage' -D 'bokeboke'
locale is "ja_JP.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to bokeboke
1> select top 10 * from udauda;
2> go

設定ファイルについて

freetds.conf というファイルに設定を書いておくことも出来ます。
また、(後日書きますが)PHPからの接続の場合、
この設定ファイルが重要になったりします。

# vi /etc/freetds.conf
[dataserver]
host = データベースサーバIP
port = 1433
tds version = 8.0
charset = CP932
client charset = UTF-8
# TDSVER=8.0 tsql -S dataserver -U 'ユーザ名' -D 'データベース名'

もし、上手く行かなかった場合、
設定ファイルの場所がわかっていない可能性があるので

# export FREETDSCONF=/etc/freetds.conf

と事前に実行してあげてください。
(.bash_profileに入れとくといいですね)

以上です。

 読み込んだプラグイン:security
 インストール処理の設定をしています
 パッケージ freetds は利用できません。
 パッケージ freetds-devel は利用できません。
 エラー: 何もしません

で、入れれれへんって方はリポジトリを確認してください

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -ivh epel-release-6-8.noarch.rpm
20
21
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21