¿Cómo creo y sincronizo los inicios de sesión de SQL y Windows en la réplica de lectura de Amazon RDS para SQL Server?

3 minutos de lectura
0

La réplica de lectura de Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server replica de forma asincrónica los cambios realizados en la instancia maestra. Una de las limitaciones es que los inicios de sesión no se sincronizan después de la creación de la instancia. ¿Cómo creo y sincronizo los inicios de sesión después de crear una instancia?

Resolución

Siga los siguientes pasos para crear, confirmar y sincronizar los inicios de sesión de SQL Server y Windows en la instancia maestra:

Inicios de sesión de SQL

Las instancias del motor de base de datos autentican los inicios de sesión de SQL Server y las contraseñas de inicio de sesión se almacenan en la base de datos maestra. Los inicios de sesión de SQL se pueden asignar a un usuario de base de datos en una base de datos o a diferentes usuarios de diferentes bases de datos. Los inicios de sesión y los usuarios generan un ID de instrucción (statement ID, SID) único. Esto significa que, al sincronizar los inicios de sesión en la réplica de lectura, debe asegurarse de que el SID de inicio de sesión coincida con el SID de la instancia maestra.

Crear un inicio de sesión de SQL en la instancia maestra y sincronizarlo con la réplica de lectura

1.    En la instancia maestra, cree un inicio de sesión de SQL Server denominado “testlogin” (inicio de sesión de prueba).

USE [master]
GO
CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';

2.    Confirme que se ha creado el inicio de sesión “testlogin” en la instancia maestra.

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

3.    En la instancia maestra, busque el SID asignado al inicio de sesión “testlogin”.

select name, sid  FROM sys.sql_logins WHERE name = 'testlogin'
name                                         sid
-------------------------------------------------------------------------------
testlogin                      0xEBF23823BDEAED42823C76C8706F4B6B

4.    En la réplica de lectura, cree un nuevo inicio de sesión “testlogin” asignado al SID desde la instancia maestra.

CREATE Login testlogin  WITH password = ' Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B

5.    Confirme que el nuevo inicio de sesión se haya creado con el SID correspondiente.

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

Inicios de sesión de Windows

Los inicios de sesión de SQL Server autenticados por Windows son inicios de sesión a nivel de instancia en los que el sistema operativo gestiona la autenticación. Los inicios de sesión de Windows se pueden asignar a una cuenta de usuario, un grupo de seguridad local o una cuenta de dominio.

Crear un inicio de sesión de Windows en la instancia maestra y en la réplica de lectura

Para crear un inicio de sesión de Windows en la instancia maestra y en la réplica de lectura, haga lo siguiente:

1.    En la instancia maestra, cree un inicio de sesión de Windows “[SQLAD\ user1]”.

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

2.    Al leer la réplica, cree el inicio de sesión “[SQLAD\ user1]” con el mismo comando. A diferencia de un inicio de sesión de SQL, los inicios de sesión de SQL autenticados por Windows no requieren un SID para ser asignados.

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

En Amazon RDS, no es posible utilizar los procedimientos de almacén “sp_help_revlogin” y “sp_hexadecimal” proporcionados por Microsoft para generar inicios de sesión. Esto se debe a que Amazon RDS no proporciona privilegios elevados en una base de datos maestra.