スキップしてコンテンツを表示

Amazon RDS for SQL Server のリードレプリカで SQL ログインと Windows ログインを作成して同期する方法を教えてください。

所要時間1分
0

Amazon Relational Database Service (Amazon RDS) のリードレプリカで、プライマリインスタンスへの変更が非同期的に複製されています。インスタンスの作成時にログインが同期されません。インスタンスの作成時に、ログインを作成して同期させたいです。

解決策

プライマリインスタンスに SQL ログインを作成し、そのログインをリードレプリカと同期する

データベースエンジンインスタンスは SQL Server のログインを認証し、ログインパスワードをプライマリデータベースに保存します。SQL ログインは、単一データベース内のデータベースユーザーにマッピングすることも、複数データベース内の別々のユーザーにマッピングすることもできます。ログインとユーザーは一意のステートメント ID (SID) を生成します。リードレプリカのログインを同期する際、ログインの SID はプライマリインスタンスの SID と一致する必要があります。

プライマリインスタンスに SQL ログインを作成し、そのログインをリードレプリカと同期するには、次の手順を実行します。

  1. プライマリインスタンスで次のクエリを実行し、testlogin という名前の SQL Server 用ログインを作成します。

    USE [master]  
    GO  
    CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';
  2. プライマリインスタンスで次のクエリを実行し、プライマリインスタンスに testlogin が作成されたことを確認します。

    SELECT name FROM sys.sql_logins WHERE name = 'testlogin';
  3. プライマリインスタンスで次のクエリを実行し、testlogin にマッピングされる SID を特定します。

    SELECT name, sid  FROM sys.sql_logins WHERE name = 'testlogin';

    出力例

    name                           sid  
    -------------------------------------------------------------------------------  
    testlogin                      0xEBF23823BDEAED42823C76C8706F4B6B
  4. リードレプリカで次のクエリを実行し、プライマリインスタンスの SID にマッピングされる testlogin という名前の新しいログインを作成します。

    CREATE Login testlogin  WITH password = N'Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B;
  5. リードレプリカで次のクエリを実行し、プライマリインスタンスと同じ SID を持つ新しいログインが作成されたことを確認します。

    SELECT name, sid  FROM sys.sql_logins WHERE name = 'testlogin';

プライマリインスタンスとリードレプリカに Windows ログインを作成する

Windows 認証による SQL Server ログインは、インスタンスレベルのログインであり、オペレーティングシステム (OS) が認証を管理します。Windows ログインは、ユーザーの AWS アカウント、ローカルセキュリティグループ、またはドメインアカウントにマッピングできます。

プライマリインスタンスとリードレプリカに Windows ログインを作成するには、次の手順を実行します。

  1. プライマリインスタンスで次のクエリーを実行し、SQLAD\user1 という名前の Windows ログインを作成します。

    CREATE LOGIN [SQLAD\user1] FROM WINDOWS  
    WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]  
    GO
  2. リードレプリカで次のコマンドを実行し、SQLAD\user1 という名前のログインを作成します。

    CREATE LOGIN [SQLAD\user1] FROM WINDOWS  
    WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]  
    GO

注: Amazon RDS は、プライマリデータベースに対する高レベルのアクセス許可を付与しません。したがって、Amazon RDS でログインを生成するのに、Microsoft が提供するストアドプロシージャ sp_help_revlogin または sp_hexadecimal を使用することはできません。

コメントはありません

関連するコンテンツ