2 つの Amazon Relational Database (Amazon RDS) for Microsoft SQL Server インスタンス間で、SQL Server のログイン情報とパスワードを移行するもしくは、ログイン情報をオンプレミス環境から、あるいはオンプレミス環境へと移行したいと考えています。
解決方法
注: プライマリユーザーのログイン情報を複製する手順については、「RDS for SQL Server ユーザーログイン許可を複製またはクローンを作成するにはどうすればよいですか?」を参照してください。
SQL Server ログイン情報を RDS for SQL Server インスタンス間で移行する
ログイン情報とパスワードを新しいターゲット RDS インスタンスに移行するには、次の手順を実行します。
- ソースインスタンスのスナップショットを作成します。
- ターゲットインスタンスでこのスナップショットを復元するに当たって、別の名前を付けます。
- 不要なログイン情報とデータベースは削除してください。
ログイン情報を既存のターゲット RDS インスタンスに移行するには、次のセクションの手順を実行します。
ログイン情報を RDS for SQL Server からオンプレミス環境に移行する
注: 以下の解決手順では、パスワードを手動で入力する必要があります。ログイン情報に対する暗号化されたパスワードを RDS から直接取得することはできません。
オプション 1
- 任意のユーザーデータベースにストアドプロシージャ sp_help_revlogins を作成します。このストアドプロシージャスクリプトについては、「Transfer logins and passwords between instances of SQL Server」 (Microsoft のウェブサイト) の「Method 2」を参照してください。
- ソースインスタンスのログイン情報をスクリプト化した本ストアドプロシージャを実行します。
注: プライマリデータベースに本ストアドプロシージャを作成すると、次のエラーが出力されます。
"Msg 262, Level 14, State 18, Procedure sp_hexadecimal, Line 1 [Batch Start Line 5]CREATE PROCEDURE permission denied in database 'master'"
このエラーを回避するには、本プロシージャをユーザーデータベースに作成します。ターゲットインスタンスにログイン情報を作成したら、パスワードの不一致を避けるためにパスワードをリセットしてください。
オプション 2
手動によるログイン情報の作成や、Microsoft SQL Server Management Studio (SSMS) によるログイン情報のスクリプト化を行うには、次の手順を実行します。
- SSMS で置き換え先セキュリティパッケージを開き、展開します。
- ログイン情報を選択し、F7 キーを押します。または、[表示] メニューから [オブジェクトエクスプローラーの詳細] を選択します。
- Ctrl キーを押したまま、移行するログイン情報を選択します。
- 必要なログイン情報を選択したら、画面を選択 (右クリック) します。次に、[スクリプトログインとして] を選択します。すると、新しいクエリウィンドウが開きます。
- このログイン情報作成スクリプトをコピーします。次に、パスワードをリセットして、移行先インスタンスで本スクリプトを実行します。このストアドプロシージャスクリプトについては、「SQL Server のインスタンス間でログインとパスワードを転送する」(Microsoft のウェブサイト) の「方法1」を参照してください。
ログイン情報とパスワードをオンプレミス環境から RDS for SQL Server に移行する
ソースサーバー (オンプレミス) で、次の手順を実行してください。
- オンプレミスサーバーにあるすべてのログイン情報を作成するスクリプトを生成します。このストアドプロシージャスクリプトについては、「SQL Server のインスタンス間でログインとパスワードを転送する」(Microsoft のウェブサイト) の「方法 2」を参照してください。
- このストアドプロシージャを作成したら、新しい T-SQL ウィンドウを開きます。次に、本ストアドプロシージャを実行するため、下記のコマンドを使用します。
注: 当該のスクリプトを実行する前に、キーボードで Ctrl+T を押すことで、結果がテキスト形式になるようにします。
EXEC [sp_help_revlogin]
このクエリ出力は、パスワードと元の SID を持つログイン情報を移行先サーバーに作成するスクリプトとなります。
移行先サーバーで、次の手順を実行してください。
- プライマリユーザーアカウントを使用して RDS for SQL Server インスタンスに接続します。
- 「ソースサーバー (オンプレミス)」セクションのステップ 2 で生成されたスクリプト (sp_help_revlogin の出力) を実行します。
注: RDS のログイン情報へのアクセス許可をシステム管理者に付与することはできません。そのため、システム管理者特権があるログイン情報を RDS に移行しても、RDS のログイン情報へのアクセス許可が自動的に付与されるわけではありません。これらのログイン情報に対して必要なアクセスの許可を明示的に付与しなければなりません。
RDS ユーザーが利用できるアクセス許可の一覧については、「プライマリユーザーアカウントの権限」を参照してください。
プライマリアカウントのアクセス許可のトラブルシューティング
**プライマリユーザーの名前を検索 **
- RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- 名前を使用したいプライマリユーザーが属する RDS DB インスタンスを選択します。
- [設定] タブを開きます。プライマリユーザー名は [可用性] セクションに表示されます。
プライマリユーザーのパスワードをリセットするか、プライマリユーザーの許可を復元
プライマリユーザーのパスワードのリセットについては、「Amazon RDS DB インスタンスのマスターユーザーパスワードをリセットするにはどうすればよいですか?」を参照してください。