RDS for SQL Server に SQL Server Management Studio(SSMS)でデータを挿入する
コーヒーが好きな emi です。最近はカフェインを控えています。
RDS for SQL Server を使った検証を行いたく、Windows Server 2022 の EC2 インスタンスに SQL Server Management Studio(SSMS)をインストールして RDS for SQL Server にデータを挿入するまでを試しました。
構成イメージ
以下のような構成で検証します。事前に VPC やサブネットは作成しておいてください。
今回は EC2 と RDS で AZ が別になってしまったのですが、同じ AZ に配置した方が通信料を抑えられます。
1. セキュリティグループの作成
EC2 用セキュリティグループ
- bastion-ec2-sg
インバウンドルールなし
方向 | タイプ | プロトコル | ポート範囲 | 送信先 | 説明 |
---|---|---|---|---|---|
アウトバウンド | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | - |
RDS for SQL Server 用セキュリティグループ
- source-db-sg
方向 | タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|---|
インバウンド | MSSQL | TCP | 1433 | sg-0aebce100248db683 / bastion-ec2-sg | from bastion-ec2-sg |
方向 | タイプ | プロトコル | ポート範囲 | 送信先 | 説明 |
---|---|---|---|---|---|
アウトバウンド | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | - |
2. RDS for SQL Server の作成
サブネットグループは事前に作成しておいてください。
以下のような設定項目でマネジメントコンソールから RDS for SQL Server を作成しました。
項目 | 設定値 |
---|---|
エンジンの種類 | Microsoft SQL Server |
エディション | SQL Server Standard Edition |
ライセンスモデル | ライセンス込み (License included) |
エンジンバージョン | SQL Server 2016 13.00.6465.1.v1 |
テンプレート | 開発/テスト |
DB インスタンス識別子 | source-db |
マスターユーザー名 | admin |
認証情報管理 | セルフマネージド(パスワードを手動入力) |
DBインスタンスクラス | db.r5.large |
ストレージタイプ | 汎用SSD (gp3) |
割り当てストレージ | 20 GiB |
プロビジョンド IOPS | 3000 |
ストレージスループット | 125 |
自動ストレージスケーリング | 無効 |
マルチAZ配置 | なし |
VPC | vpc-xxxxxx (事前に作成済みの VPC) |
サブネットグループ | test-subnet-gp(事前に作成済みのサブネットグループ) |
パブリックアクセス | なし (Private) |
VPCセキュリティグループ | source-db-sg (事前に作成済みのセキュリティグループ) |
アベイラビリティゾーン | ap-northeast-1c |
RDS Proxy | なし |
認証機関 | rds-ca-rsa2048-g1(デフォルト) |
ポート番号 | 1433 |
Microsoft 認証 | なし |
モニタリング | データベースインサイト - スタンダード |
Performance Insights | 有効(7日保持) |
AWS KMS キー | (default) aws/rds |
拡張モニタリング | 無効 |
ログのエクスポート | エラー, エージェントログ |
DB パラメータグループ | default.sqlserver-se-13.0 |
オプショングループ | default:sqlserver-se-13-00 |
タイムゾーン | Tokyo Standard Time |
照合順序 | Japanese_CI_AS |
自動バックアップ | 無効 |
暗号化 | 有効 |
AWS KMS キー | (default) aws/rds |
マイナーバージョン自動アップグレード | 無効 |
メンテナンスウィンドウ | 指定なし |
削除保護 | 無効 |
3. EC2 インスタンス作成
RDS for SQL Server に接続する Windows Server 2022 の EC2 インスタンスを作成します。
Systems Managet フリートマネージャーで接続するので、AmazonSSMManagedInstanceCore
ポリシーが付与された IAM ロールをあらかじめ作成しておいてください。
項目 | 設定値 |
---|---|
名前タグ | bastion-ec2 |
AMI (OSイメージ) | Microsoft Windows Server 2022 Base |
AMI ID | ami-02f8df8fa7411ff58 |
インスタンスタイプ | t3.medium (2 vCPU, 4 GiB メモリ) |
キーペア | (自身のキーを指定してください) |
VPC | vpc-xxxxxx (事前に作成済みの VPC) |
サブネット | subnet-047f4864552bf0b23 (事前に作成済みのパブリックサブネット) |
自動割り当てパブリックIP | 無効 |
セキュリティグループ | 既存のセキュリティグループを選択 |
セキュリティグループ名 | bastion-ec2-sg (事前に作成済みのセキュリティグループ) |
ストレージ (ルートボリューム) | 30 GiB, gp2, 汎用SSD |
追加ストレージ | なし |
IAMインスタンスプロファイル | AmazonSSMManagedInstanceCore ポリシーが付与された IAM ロールを指定 |
EC2 インスタンスが作成できたら、Systems Manager フリートマネージャーからリモートデスクトップ(RDP)接続します。SSM エージェントが起動するまで 5 分程時間がかかる場合がありますので、フリートマネージャー画面に出てこない場合は少し待ってみてください。
ユーザーはデフォルトの Administorator、EC2 作成時に設定したキーペアを指定して接続します。
RDP 接続後、私は好みで日本語パックを入れて日本語化しました。OS の日本語化のやり方は以下のブログを参照ください。
4. SQL Server Management Studio (SSMS) インストール
RDP 接続できたら、SQL Server Management Studio (SSMS) をダウンロードしてインストールします。ブラウザは Edge が入っているので、Edge を使います。
今回は検証なので、サインインなどせずに進めます。
SQL Server Management Studio (SSMS) のインストール方法は以下のページを参照します。
Edge で検索してもいいですし、URL をコピー&ペーストもできます。
ブラウザでクリップボードのアクセスを許可しておけば、 URL を Windows Server 上にペーストできます。
ブラウザでクリップボードのアクセスを許可する方法は以下ブログの Fleet ManagerからRDP接続 部分を参照ください。
さて、Edge で SSMS のインストール方法のページを開いたら、「SSMS 21 のダウンロード」をクリックしてインストーラーをダウンロードします。以前は各言語パックのダウンロードリンクがあったのですが、バージョンが上がってインストーラーが一つになったようです。
「vs_SSMS.exe」というインストーラーをダウンロードできたら、ダブルクリックで実行してインストールを進めます。
続行で進めます。
インストーラーの準備が終わると以下のような画面になります。SSMS のコア機能の他にも色々機能を含めるか選べるようです。
今回は SSMS のコア機能だけあれば良いのですが、試しに移行機能とコードツールにチェックを入れてみました。チェックを入れた機能はウィザードの右に表示されるようです。
他のタブも見てみます。個別コンポーネントタブでは含めるコンポーネントが確認できるようです。
言語パックタブです。初回実行時に OS の言語と一致するようになっているそうです。私は Windows Server 2019 の PowerShell を日本語化する | DevelopersIO を参考に日本語化していたので日本語がチェックされていました。
インストールの場所タブではインストールする場所を設定できます。今回はこのままデフォルトでいきます。
各タブを確認し終えたので、インストールします。
インストールが終わったら、「起動」をクリックして SSMS を起動します。
ちなみにスタートメニューから [Microsoft SQL Server Tools 21] - [SQL Server Management Studio 21] をクリックして起動してもよいです。
さて、起動すると最初にサインインを促されますが、今回は検証なのでサインインせずにこのまま進めます。
新しい接続画面が利用できるとのことなので、「はい」で進めてみます。
こんな接続画面になりました。ここに、作成済みの RDS for SQL Server の接続情報を入れていきます。
項目 | 設定値 |
---|---|
Server Name | <DB 識別子>.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com |
Authentication | SQL Server 認証 |
User Name | source_db_admin |
Password | ******** |
Database Name | <既定> |
Encrypt | Mandatory |
Trust Server Certificate | 有効 (✓) |
「Server Name」には、RDS コンソールで作成済みの RDS for SQL Server インスタンスの詳細を開き、「接続とセキュリティ」タブのエンドポイントをコピーして入力してください。
「接続」をクリックすると、以下のように RDS for SQL Server に接続できます。
(参考)接続エラー
「Trust Server Certificate」にチェックを入れないと、以下のようなエラーになり接続できませんでした。
タイトル:エラー
------------------------------
この接続で暗号化が有効になっているか、ターゲット SQL Server の SSL と証明書の構成を確認するか、接続ダイアログで [サーバー証明書の信頼] を有効にします」
ヘルプを表示するには次をクリックしてください: https://aka.ms/ssdt
------------------------------
追加情報:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 信頼されていない機関によって証明書チェーンが発行されました。) (Microsoft SQL Server、エラー: -2146893019)
ヘルプを表示するには次をクリックしてください: https://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2146893019&LinkId=20476
------------------------------
信頼されていない機関によって証明書チェーンが発行されました。
------------------------------
ボタン:
OK
------------------------------
5. データベースにデータを挿入する
RDS for SQL Server にデータを挿入していきます。
「新しいクエリ」をクリックすると、クエリを入力できます。
まずはデータベースを作成します。
-- データベースの作成
CREATE DATABASE test_db;
「実行」をクリックすると、データベース test_db
が作成されました。画面左のメニューからも test_db
が確認できます。
作成したデータベースに切り替えます。
-- 作成したデータベースに切り替え
USE test_db;
実行すると、以下のようにデータベースが切り替わりました。ちなみに画面左上から GUI でデータベースの切り替えもできました。
続いてテーブルを作成します。
-- テーブルの作成
CREATE TABLE [user] (
id INT,
name NVARCHAR(10),
address NVARCHAR(10)
);
以下のように dbo.user
テーブルが作成されました。
dbo
はスキーマ名です。
SQL Server の場合、テーブルは必ずどれかのスキーマに所属します。
今回は新規でスキーマを作成しなかったので、デフォルトスキーマである dbo
スキーマの配下に user
テーブルができた形です。
画面左のメニューからテーブルが確認できるのですが、クエリでもテーブルを表示してみます。
-- 現在のデータベースの全テーブルを表示
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
以下のようにグリッドで結果が表示されました。
スキーマ名とテーブル名を表示してみます。
-- スキーマ名とテーブル名を表示
SELECT
TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
以下のようにグリッドで結果が表示されました。
このままでもいいのですが、私はテキスト形式で結果が出た方がコピーできて好きなので、結果の表示形式を変えておきます。
クエリメニューから [結果の出力] - [結果をテキストで表示] をクリックします。
以下のようにテキストで結果が表示されるようになりました。
TABLE_SCHEMA TABLE_NAME
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
dbo user
(1 行処理されました)
完了時刻: 2025-09-23T21:32:59.2331601+09:00
ちょっと横長ですが…まあいいでしょう。
データを挿入していきます。
-- データの挿入
INSERT INTO [user] VALUES (1, N'Yamada', N'Tokyo');
INSERT INTO [user] VALUES (2, N'Satou', N'Chiba');
INSERT INTO [user] VALUES (3, N'Kinjo', N'Okinawa');
挿入したデータを確認します。
-- データの確認
SELECT * FROM [user];
▼実行結果
id name address
----------- ---------- ----------
1 Yamada Tokyo
2 Satou Chiba
3 Kinjo Okinawa
(3 行に影響しました)
完了時刻: 2025-09-23T21:57:15.6974707+09:00
挿入したデータを確認できました。
接続を切断する場合は Server Name で入力したエンドポイント名を右クリックし「接続解除」をクリックします。これまで入力した SQL を保存するか聞かれますが、今回は保存しませんでした。
おまけ:別の RDS に接続する
バージョン違い(15.00.4440.1.v1)の別の RDS for SQL Server も構築して接続を試しました。新しく接続を作成する場合は以下の [接続] - [データベースエンジン] をクリックします。
接続情報を入力して、
同様に接続できました。
切断して、
再度接続する際は過去の接続履歴から簡単に再接続できます。
おわりに
SSMS をちゃんと使ったことが無かったので、勉強になりました。
本記事への質問やご要望については画面下部のお問い合わせ 「DevelopersIO について」 からご連絡ください。記事に関してお問い合わせいただけます。