SQLServerのバックアップファイルをRDSへインポートすることになりました。以前よりは簡単になったといわれておりますが、だいぶはまったのでメモに残しておこうと思います。
#ドキュメント
今回の作業にあたり、こちらのドキュメントを参考にしました。
SQL Server データベースのインポートとエクスポート(AWS ユーザーガイド)
RDS for SQL Server へのインポート
#「権限がない」と怒られる
ところが、この通りに実行したはずが以下のエラーが出てしまいます。
Msg 50000, Level 16, State 0, Procedure rds_restore_database, Line 37
Database backup/restore option is not enabled yet or is in the process of being enabled. Please try again later.
「あとでもう一度実行してみてください」とありますが、翌日に実行しても同じだったのでどうやらうまくいっていないようでした。
#ドキュメント(英語)
メッセージで調べたところ、こちらのページが出てきました。それを参考に修正すると正常にインポートが完了しました。
#何がだめだったのか?
まあいろいろあったのですが...
###DBインスタンスのオプショングループが正しくない
初歩的すぎてなかなか気がつきませんでした。オプショングループを作成後、該当DBインスタンスの設定で有効にする必要があります。「追加設定」→「データベースの選択肢」→「オプショングループ」を作成したものに変更してください。
###IAMロールが正しくない
こちらにも詳しくまとめられておりました。IAMロールに「AWSBackupServiceRolePolicyForRestores」を追加します。
RDS for Microsoft SQL Serverに.bakをリストアするとエラーになる
オプショングループで「エンジン」「メジャーエンジンのバージョン」を設定しますが、使用しているデータベースと一致する必要があります。そのために「関連付けられた DB インスタンスとスナップショット」に表示されませんでした。
#成功!
これらを修正することで無事データのエクスポートが完了しました。めでたしめでたし。