今回のゴール
RDSでSQL Serverを構築して、バックアップファイルからデータベースの復元までを行います。
下準備
セキュリティーグループの作成
RDSにアタッチするセキュリティーグループを作成します。
【基本的な詳細】
[セキュリティーグループ名]:sg_sql_server(任意)
[説明]:accept sqlserver(任意)
[VPC]:セキュリティーグループを作成するVPCを選択
【インバウンドルール】
[タイプ]:MSSQL
[ソース]:今回はClient VPN Endpointからの接続を許可するため、Client VPN Endpointを選択しました。

サブネットグループの作成
RDSを配置するサブネットグループを作成します。
RDSサービスより[サブネットグループ]を選択して「DBサブネットグループの作成」をクリックします。
[名前]:db-subnet(任意)
[説明]:RDS for MSSQL(任意)
[VPC]:DBサブネットグループを作成するVPC
[アベイラビリティーゾーン]:今回はプライベートサブネットが存在するアベイラビリティーを2つ選択
[サブネット]:プライベートサブネットを2つ選択

パラメータグループの作成
RDSサービス-[パラメータグループ]で「パラメータグループの作成」ボタンをクリックします。
[パラメータグループファミリー]:sqlserver-st-15.0
[グループ名]:MSSQL-se-15.0
[説明]:custom parameter group(任意)

オプショングループの作成
RDSでバックアップ・リストアを行う際は、オプショングループの設定が必要なので、作成していきます。
RDSサービス-[オプショングループ]で「オプショングループの作成」ボタンをクリックします。
[名前]:option-group-test(任意)
[名前]:(任意)
[エンジン]:sqlserver-se(任意)
[メジャーエンジンバージョン]:15.00(任意)

作成されたオプショングループを選択して、「オプションの追加」をクリックします。

[オプション名]:SQLSERVER_BACKUP_RESTOREを選択
[IAMロール]:新しいロールの作成を選択
[IAMロール名]:test-S3-backup(任意)
[S3バケット]:バックアップファイルを置くS3バケットを選択
[S3プレフィックス]:database_backup(任意)
[スケジューリング]:今すぐを選択

設定
それでは、RDSを作成します。
[データベース]より「データベース作成」をクリックします。
【エンジンのオプション】
[エンジンのタイプ]:SQL Serverを選択
[エディション]:SQL Server Standard Edition
[バージョン]:SQL Server 2019 15.00.4073.23.v1を選択

【テンプレート】
[テンプレート]:開発/テスト
【設定】
[DBインスタンス識別子]:db-test(任意)
[パスワードの自動作成]:チェックオフしてパスワードを入力

【インスタンスサイズ】
[DBインスタンスクラス]:今回はm5.largeを選択
【ストレージ】
[最大ストレージしきい値]:今回は500と入力

【接続】
[Virtual Private Cloud]:VPCを選択
[サブネットグループ]:db-subnet(先ほど作成したサブネットグループ)
[既存のVPCセキュリティーグループ]:sg_sql-server(先ほど作成してセキュリティーグループを選択して、defaultという名のセキュリティーグループが存在していたので削除)
[アベイラビリティーゾーン]:RDSを配置するAZを選択
【Microsoft SQL Server Windows認証】
今回はDirectryServiceのドメインに参加します。
[Microsoft SQL Server Windows認証を有効化]:チェックオン
[ディレクトリ]:ディレクトリを選択

【追加設定】
[DBパラメータグループ]:作成したパラメータグループを選択
[オプショングループ]:作成したオプショングループを選択

確認
バックアップファイルの準備
S3にバックアップファイルをアップします。
今回は下記のマイクロソフトのサンプルデータベースのバックアップ使用しました。
AdventureWorks sample databases
データベースのリストア
SSMS(SQL Server Management Studio)を起動して、RDSのSQL Serverに接続します。
接続後、下記コマンドを実行してバックアップファイルからリストアします。
exec msdb.dbo.rds_restore_database
@restore_db_name='TEST_AdventureWorks2019',
@s3_arn_to_restore_from='arn:aws:s3:::bucketname/database_backup/AdventureWorks2019.bak';
進捗状況は下記コマンドで確認できます。
exec msdb.dbo.rds_task_status @db_name='TEST_AdventureWorks2019'
暫くするとリストアが完了しました。
データベースのバックアップ
次に下記コマンドを実行してデータベースのバックアップをとります。
exec msdb.dbo.rds_backup_database
@source_db_name='TEST_AdventureWorks2019',
@s3_arn_to_backup_to='arn:aws:s3:::bucketname/database_backup/AdventureWorks201906.bak',
@overwrite_S3_backup_file=1;
S3にバックアップファイルが作成されている事が確認できました。