데이터베이스 사용자 및 객체를 SQL Server 읽기 전용 복제본과 동기화 - Amazon Relational Database Service

데이터베이스 사용자 및 객체를 SQL Server 읽기 전용 복제본과 동기화

읽기 전용 복제본을 생성할 때 프라이머리 DB 인스턴스에 있는 모든 로그인, 사용자 지정 서버 역할, SQL 에이전트 작업 또는 기타 서버 수준 객체가 새로 생성된 읽기 전용 복제본에 있어야 합니다. 하지만 읽기 전용 복제본을 생성한 후에 프라이머리 DB 인스턴스에 생성된 서버 수준 객체는 자동으로 복제되지 않으므로 읽기 전용 복제본에서 수동으로 생성해야 합니다.

데이터베이스 사용자는 프라이머리 DB 인스턴스에서 읽기 전용 복제본으로 자동 복제됩니다. 읽기 전용 복제본 데이터베이스는 읽기 전용 모드이므로 데이터베이스 사용자의 보안 식별자(SID)를 데이터베이스에서 업데이트할 수 없습니다. 따라서 읽기 전용 복제본에서 SQL 로그인을 생성할 때는 해당 로그인의 SID가 프라이머리 DB 인스턴스의 해당 SQL 로그인 SID와 일치하는지 확인해야 합니다. SQL 로그인의 SID를 동기화하지 않으면 읽기 전용 복제본의 데이터베이스에 액세스할 수 없습니다. Windows Active Directory(AD) 인증 로그인은 SQL Server가 Active Directory에서 SID를 가져오기 때문에 이 문제가 발생하지 않습니다.

프라이머리 DB 인스턴스에서 읽기 전용 복제본으로 SQL 로그인 동기화
  1. 프라이머리 DB 인스턴스에 연결합니다.

  2. 프라이머리 DB 인스턴스에 새 SQL 로그인을 생성합니다.

    USE [master] GO CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD';
    참고

    보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

  3. 데이터베이스에 SQL 로그인을 위한 새 데이터베이스 사용자를 생성합니다.

    USE [REPLACE WITH YOUR DB NAME] GO CREATE USER TestLogin1 FOR LOGIN TestLogin1; GO
  4. 프라이머리 DB 인스턴스에서 새로 생성한 SQL 로그인의 SID를 확인합니다.

    SELECT name, sid FROM sys.server_principals WHERE name = TestLogin1;
  5. 읽기 전용 복제본에 연결합니다. 새 SQL 로그인을 생성합니다.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #4];
또는 읽기 전용 복제본 데이터베이스에 액세스할 수 있는 경우 다음과 같이 분리된 사용자를 수정할 수 있습니다.
  1. 읽기 전용 복제본에 연결합니다.

  2. 데이터베이스에서 분리된 사용자를 식별합니다.

    USE [REPLACE WITH YOUR DB NAME] GO EXEC sp_change_users_login 'Report'; GO
  3. 분리된 데이터베이스 사용자를 위한 새 SQL 로그인을 생성합니다.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #2];

    예시

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=[0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P];
    참고

    보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.