最近Azureにはまっています。AzureはMSDNのサブスクリプションを持っていると無料で使える枠があるので非常に便利です。ちょっと試したいときとかサクッとサーバ作って試せますから。
Azureでは公式にはデータベースのサービスはSQLServerになっているようです。MySQL等もサードパーティのサービスで使えるみたいですが、やはりAzureをせっかく使うのならばSQLServerを使ってみることにします。
SQLサーバには特に不満はないのですが、Linuxからの使い勝手が悪かったりします。今回はunixodbcとfreetdsを使ってコマンドラインから接続を試みます
環境
- OS:Ubuntu14.4
手順
unixodbc,freetds,tdsodbcのインストール
sudo apt-get install freetds-common sudo apt-get install freetds-bin sudo apt-get install unixodbc sudo apt-get install tdsodbc
/etc/odbcinst.ini
[SQLServer] Servername = SqlServer Driver = FreeTDS database = master
/etc/odbc.ini
odbcinst.iniのDriverとodbc.iniの[FreeTDS]の部分は名前を合わせます
[FreeTDS] Description = TDS driver (Sybase/MS SQL) Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so FileUsage = 1 CPTimeout = 5 CPReuse = 5
/etc/freetds/freetds.conf
odbcinst.iniのServernameと[SqlServer]の部分の名前を合わせます
hostにはazureのSQLサーバの接続先ホスト名を記入します
[SqlServer] host = xxxxxxxxx.database.windows.net port = 1433 tds version = 8.0
環境変数
$ cat .bash_profile export ODBCINI=/etc/odbc.ini export ODBCSYSINI=/etc export FREETDSCONF=/etc/freetds/freetds.conf
接続
sqlserverusernameとsqlserverpasswordはSQLサーバのユーザ名とパスワードをいれます
ここがポイントなのですが -U の後のユーザ名に@xxxxxxxxxとSQLサーバの接続先ホストのホスト名を入れてやる必要があります
$ tsql -S SqlServer -U sqlserverusername@xxxxxxxxx -P sqlserverpassword -D master
以下のサイトを参考にしました
とても参考になり助かりました!
/etc/odbcinst.iniと/etc/odbcinst.iniの記述は逆のようですね。