Linux活用レシピ > AWS活用 > LinuxからMSSQL

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データベースを選択します。

    1> USE master
    2> GO
    

    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に、シェルスクリプトを用いて接続する方法を紹介します。

  1. シェルスクリプトの中にSQLクエリを直接書く方法

  2. 以下の通り、先ほどのSQL Serverに対するSQLクエリーをシェルスクリプトに埋め込めば、そのスクリプトを実行することで、標準出力に結果が表示されます。

    # vi /tmp/sql.sh
    
    以下の通り、編集し保存します。
    #!/bin/bash
    
    /usr/local/bin/tsql -S SqlServer -U sa -P saのパスワード <<EOF
    USE master
    GO
    SELECT *
    FROM sys.Tables
    GO
    EOF
    
    実行件を付けて完成。
    # chmod 755 /tmp/sql.sh
    

  3. シェルスクリプトとクエリーを別のファイルに書く方法

  4. 先ほどと実行結果は同じになりますが、シェルスクリプトとSQL Serverに対するSQLクエリーを別々のファイルに記載する方法です。こちらもスクリプトファイル側を実行することで、標準出力に結果が表示されます。

    # vi /tmp/sql.sh
    
    シェルスクリプトファイル側を以下の通り、編集し保存します。
    #!/bin/bash
    
    /usr/local/bin/tsql -S SqlServer -U sa -P saのパスワード \
    < /tmp/sqlquery.data
    実行件を付けます。
    # chmod 755 /tmp/sql.sh
    
    さらにクエリーファイル側を以下の通り作成します。
    USE master
    GO
    SELECT *
    FROM sys.Tables
    GO
    EOF

    以上で、LinuxからWindowsのSQL Serverに接続できる環境が出来ました。

    WindowsのSQL Serverの稼動状況をLinuxの監視ツールで管理する場合など、様々なLinuxとWindowsの連携シーンでこのレシピを活用ください。