AWSのEC2インスタンスに、sqlcmdの実行環境をつくる

会社運営

先日は、AWSのEC2インスタンスに

Oracleクライアント(SQLPlus実行環境)を作る話をブログに書きました。

ついでに、SQLServer版も書いておきます。

EC2インスタンスとしてWindows環境を用意するなら

ManagementStudio入れちゃえばいいと思うのですが、

(実運用上で人が使うクライアントとしては、ManagementStudioが圧倒的に楽)

接続と確認SQLだけ実行できればいいので

もっとお手軽にやりたいなってときもあると思います。

そんなときは、Linux環境で作っちゃうのもありだと思います。

マニュアルに従って

こんな感じで作れます。

環境は、EC2のRedHatLinux8です。

マニュアルに従って、リポジトリ情報を入れてyumでインストール。

[ec2-user@ip-10-0-1-13 ~]$ sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   192  100   192    0     0    282      0 --:--:-- --:--:-- --:--:--   281
[ec2-user@ip-10-0-1-13 ~]$ sudo yum install -y mssql-tools unixODBC-devel
packages-microsoft-com-prod                     4.1 MB/s | 7.3 MB     00:01
Last metadata expiration check: 0:00:18 ago on Sun 09 May 2021 01:53:05 PM UTC.
Dependencies resolved.
================================================================================
 Package             Arch    Version         Repository                    Size
================================================================================
Installing:
 mssql-tools         x86_64  17.7.1.1-1      packages-microsoft-com-prod  288 k
 unixODBC-devel      x86_64  2.3.7-1.rh      packages-microsoft-com-prod   42 k
Installing dependencies:

<略>

ec2-userでも実行できるが、

一応ユーザ作成。名前とグループは、単なる気分。

[ec2-user@ip-10-0-1-13 ~]$ sudo groupadd -g 98765 sqls-admin
[ec2-user@ip-10-0-1-13 ~]$ sudo useradd -u 98765 -g sqls-admin sqls
[ec2-user@ip-10-0-1-13 ~]$ sudo passwd sqls
<略>

ユーザ変更し、環境変数設定してsqlcmd起動。

[ec2-user@ip-10-0-1-13 ~]$ sudo su - sqls
[sqls@ip-10-0-1-13 ~]$ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashh_profile
[sqls@ip-10-0-1-13 ~]$ echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashhrc
[sqls@ip-10-0-1-13 ~]$ source ~/.bashrc
[sqls@ip-10-0-1-13 ~]$ sqlcmd -S <作成したRDSのエンドポイント> -U admin -P '<自分がRDS作成時に決めたパスワード>'
1> 

おまじない的に列の長さを指定するコマンドを入れて

データベース一覧を確認。

1> :setvar SQLCMDMAXVARTYPEWIDTH 30
2> :setvar SQLCMDMAXFIXEDTYPEWIDTH 30
3> SELECT name, database_id, create_date  
4> FROM sys.databases ;
5> GO
name                           database_id create_date            
------------------------------ ----------- -----------------------
master                                   1 2003-04-08 09:13:36.390
tempdb                                   2 2021-05-09 13:43:24.787
model                                    3 2003-04-08 09:13:36.390
msdb                                     4 2019-09-24 14:21:42.270
rdsadmin                                 5 2021-05-09 13:43:11.980

(5 rows affected)
1> 

RDSでデータベースをつくったので、データベースに「rdsadmin」が存在します。

関連記事

過去アーカイブ