◆AWSを使ったLinuxからMSSQLへの接続レシピ◆
◆LinuxからMSSQLへの接続◆
Linux側の設定、Windows側の設定ができれば、LinuxからWindowsのSQL Serverに接続を行い、クエリーを発行して結果が得られるようになります。
◆接続確認 tsql◆
LinuxからSQL Serverへの接続は、「tsql」で行います。
以下は、Linuxのコンソールからtsqlコマンドを使って接続する方法です。
# /usr/local/bin/tsql \
-S <freetds.confに書いたDBのラベル(ここではSqlServer)> \
-D <Database名> \
-U <接続ユーザ名> \
-P <パスワード>
|
例えば以下のようになります。
# /usr/local/bin/tsql \
-S SqlServer \
-D master \
-U sa
-P ここにsaのパスワードを入力
|
接続できると、以下の通りコンソールが表示されます。
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to master
1> ここにクエリーを入力してゆきます
|
それでは、masterデータベースを選択します。
「sys.Tables」テーブルをselectクエリーで表示してみます。
1> SELECT *
2> FROM sys.Tables
3> GO
|
結果以下の通りに5レコード表示されれば成功です。
name object_id principal_id schema_id parent_object_id type type_desc create_date modify_date is_ms_shipped is_published is_schema_published lob_data_space_id filestream_data_space_idmax_column_id_used lock_on_bulk_load uses_ansi_nulls is_replicated has_replication_filter is_merge_published is_sync_tran_subscribed has_unchecked_assembly_data text_in_row_limit large_value_types_out_of_row is_tracked_by_cdc lock_escalation lock_escalation_desc is_filetable is_memory_optimized durability durability_desc
spt_fallback_db 117575457 NULL 1 0 U USER_TABLE Apr 8 2003 09:18:01:557AM Feb 20 2014 08:51:04:127PM 1 0 00 NULL 8 0 1 0 0 0 0 0 00 0 0 TABLE 0 0 0 SCHEMA_AND_DATA
spt_fallback_dev 133575514 NULL 1 0 U USER_TABLE Apr 8 2003 09:18:02:870AM Feb 20 2014 08:51:04:137PM 1 00 0 NULL 10 0 1 0 0 0 0 00 0 0 0 TABLE 0 0 0 SCHEMA_AND_DATA
spt_fallback_usg 149575571 NULL 1 0 U USER_TABLE Apr 8 2003 09:18:04:180AM Feb 20 2014 08:51:04:143PM 1 00 0 NULL 9 0 1 0 0 0 0 00 0 0 0 TABLE 0 0 0 SCHEMA_AND_DATA
spt_monitor 1483152329 NULL 1 0 U USER_TABLE Feb 20 2014 08:49:38:300PM Feb 20 2014 08:51:04:157PM 1 0 00 NULL 11 0 1 0 0 0 0 0 00 0 0 TABLE 0 0 0 SCHEMA_AND_DATA
MSreplication_options 1787153412 NULL 1 0 U USER_TABLE Feb 20 2014 08:50:43:983PM Feb 20 2014 08:51:04:163PM 1 00 0 NULL 6 0 0 0 0 0 0 00 0 0 0 TABLE 0 0 0 SCHEMA_AND_DATA
(5 rows affected)
|
◆接続スクリプト◆
LinuxからSQL Serverに、シェルスクリプトを用いて接続する方法を紹介します。
- シェルスクリプトの中にSQLクエリを直接書く方法
以下の通り、先ほどのSQL Serverに対するSQLクエリーをシェルスクリプトに埋め込めば、そのスクリプトを実行することで、標準出力に結果が表示されます。
以下の通り、編集し保存します。
#!/bin/bash
/usr/local/bin/tsql -S SqlServer -U sa -P saのパスワード <<EOF
USE master
GO
SELECT *
FROM sys.Tables
GO
EOF
|
実行件を付けて完成。
- シェルスクリプトとクエリーを別のファイルに書く方法
先ほどと実行結果は同じになりますが、シェルスクリプトとSQL Serverに対するSQLクエリーを別々のファイルに記載する方法です。こちらもスクリプトファイル側を実行することで、標準出力に結果が表示されます。
シェルスクリプトファイル側を以下の通り、編集し保存します。
#!/bin/bash
/usr/local/bin/tsql -S SqlServer -U sa -P saのパスワード \
< /tmp/sqlquery.data
|
実行件を付けます。
さらにクエリーファイル側を以下の通り作成します。
USE master
GO
SELECT *
FROM sys.Tables
GO
EOF
|
以上で、LinuxからWindowsのSQL Serverに接続できる環境が出来ました。
WindowsのSQL Serverの稼動状況をLinuxの監視ツールで管理する場合など、様々なLinuxとWindowsの連携シーンでこのレシピを活用ください。
|