Sincronización de los usuarios y objetos de la base de datos con una réplica de lectura de SQL Server - Amazon Relational Database Service

Sincronización de los usuarios y objetos de la base de datos con una réplica de lectura de SQL Server

Se espera que todos los inicios de sesión, los roles de servidor personalizados, las tareas del agente SQL u otros objetos de nivel de servidor que existan en la instancia de base de datos principal en el momento de crear una réplica de lectura estén presentes en la réplica de lectura recién creada. Sin embargo, los objetos de nivel de servidor que se creen en la instancia de base de datos principal tras la creación de la réplica de lectura no se replicarán automáticamente y deberá crearlos manualmente en la réplica de lectura.

Los usuarios de la base de datos se replican automáticamente de la instancia de base de datos principal a la réplica de lectura. Como la base de datos de réplica de lectura está en modo de solo lectura, el identificador de seguridad (SID) del usuario de la base de datos no se puede actualizar en la base de datos. Por lo tanto, al crear inicios de sesión de SQL en la réplica de lectura, es fundamental asegurarse de que el SID de ese inicio de sesión coincida con el SID del inicio de sesión de SQL correspondiente en la instancia de base de datos principal. Si no sincroniza los SID de los inicios de sesión de SQL, no podrán acceder a la base de datos en la réplica de lectura. Los inicios de sesión autenticados de Windows Active Directory (AD) no presentan este problema porque el SQL Server obtiene el SID de Active Directory.

Sincronización de un inicio de sesión de SQL de la instancia de base de datos principal con la réplica de lectura
  1. Conéctese a la instancia de base de datos principal.

  2. Cree un nuevo inicio de sesión de SQL en la instancia de base de datos principal.

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

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

  3. Cree un nuevo usuario de base de datos para el inicio de sesión de SQL en la base de datos.

    USE [REPLACE WITH YOUR DB NAME] GO CREATE USER TestLogin1 FOR LOGIN TestLogin1; GO
  4. Compruebe el SID del inicio de sesión de SQL que se acaba de crear en la instancia de base de datos principal.

    SELECT name, sid FROM sys.server_principals WHERE name = TestLogin1;
  5. Conéctese a la réplica de lectura. Cree el nuevo inicio de sesión de SQL.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #4];
Como alternativa, si tiene acceso a la base de datos de réplica de lectura, puede corregir el usuario huérfano de la siguiente manera:
  1. Conéctese a la réplica de lectura.

  2. Identifique los usuarios huérfanos de la base de datos.

    USE [REPLACE WITH YOUR DB NAME] GO EXEC sp_change_users_login 'Report'; GO
  3. Cree un nuevo inicio de sesión de SQL para el usuario huérfano de la base de datos.

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

    Ejemplo:

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

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.