SQL Database をさくっとコマンドでなんとかしたい場合だ。
いろいろBingると、もちろんFreeTDS+UnixODBCを使ったサンプルが山ほどある。
しかし、yumでさくっとできないとかイヤじゃん。
ということでやってみた。
1. EPELリポジトリを有効にする
あなたのCentOSは、以下のコマンドでおそらくEPEL拡張パッケージが使えるようになるはず。
# yum install epel-release
くわしくはこちらを参考に。
https://fedoraproject.org/wiki/EPEL
2. FreeTDSをインストールする
以下のコマンドでインストールするだけ。
# yum install freetds
インストールすると、tsqlというコマンドが使える。
まずは設定ファイルの場所を確認する。
# tsql -C
こいつを環境に合わせて編集する。
# vi /etc/freetds.conf
[mymssql]
host = mssql1.database.windows.net
port = 1433
tds version = 8.0
client charset = UTF-8
接続する前に、もうひとつ。
4. SQL Database 側で接続許可
管理ポータルで、接続するホストのグローバルIPを許可する。
今回、同じリージョンからやってみたけど、なぜか繋がらないのでわざわざ許可。
5. 名前解決ができないので dig で接続したい SQL Database のIPアドレスを確認
なぜ出来なかったのかわからないが、先にIPアドレスを確認して指定したら接続できた。
謎が多すぎてここで挫ける人もいるかもしれない。
6. tsqlコマンドで接続
さて、やっと接続できる。
ユーザーが「user@mssql1」、パスワードが「password」、SQL Database のIPアドレスが「12.34.56.78」、データベース名が「mydatabase」の場合、こうなる。
# tsql -S mymssql -U user@mssql1 -P password -H 12.34.56.78 -p 1433 -D mydatabase
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to mydatabase
1>
こうなったらあとはコマンドで好きなように。
ただひとつ、useコマンドが使えないのでご注意を。
わかったことは、「UnixODBCいらない」ってことか。勉強になった。
たぶんPHPだと、ここに php-mssql 入れたら繋がるんじゃないかな。
ODBC経由しかないと思ってたけど、思い込みは良くない。反省。
なお、PHPでmssql関数を使えば、FreeTDS(dblib)だけでイケるんですが、
SQL Server の場合はOKでも、SQL Databaseの場合はuseが使えなくて詰んでしまう。
(要調査)
0 件のコメント:
コメントを投稿