¿Cómo puedo crear un usuario que automáticamente se replique en la bd secundaria con Always On?
Hola Victor, tengo la bd creada con AlwaysOn, creé un usuario en la bd primary pero, no en la secundary. Al hacer failover no se puede hacer conexión con el user, ya que no se encuentra creado. ¿Cómo puedo crear un usuario que automáticamente se replique en la bd secundaria, o cuál es el procedimiento para estos casos?
SQL Always On sincroniza la parte de la base de datos individual del grupo de disponibilidad. No sincroniza inicios de sesión, trabajos de agentes, paquetes SSIS, servidores vinculados ni configuraciones de servidores.
El problema son los Security Identifier (SID) de los logins. Lo mejor es trabajar con autenticación de windows ya que crea un usuario desde el Active Directory. Utiliza los SID del directorio activo para las autenticaciones lo que significa que si ha creado un inicio de sesión de Windows en varias instancias de SQL, estos inicios de sesión tienen el mismo SID.
En la autenticación SQL, al crear un login se genera un SID para este inicio de sesión, en otro servidor aunque cree con el mismo nombre y contraseña un login tendra un SID diferente, por lo que debe sincronizar manualmente los SID entre diferentes instancias del grupo de disponibilidad Always On.
Puede crear un login en la réplica secundaria con el mismo hash de contraseña y SID ejecutando el siguiente script en el servidor principal y luego ejecutandolos en los servidor replica, debe filtrar por el login en especifico que desea transferir.
SELECT N‘CREATE LOGIN [‘+sp.[name]+‘] WITH PASSWORD=0x’+
CONVERT(nvarchar(max), l.password_hash, 2)+N‘ HASHED, ‘+
N‘SID=0x’+CONVERT(nvarchar(max), sp.[sid], 2)+N‘;’
FROM master.sys.server_principals AS sp
INNER JOIN master.sys.sql_logins AS l ON sp.[sid]=l.[sid]