Tenemos 2 servidores en un grupo AlwaysOn.
Si bien las cuentas de usuario dentro de cada base de datos sincronizada existen en ambos servidores, los inicios de sesión a nivel de instancia de base de datos solo existen en uno de los servidores. Es decir, DBINSTANCE-> Seguridad-> Faltan inicios de sesión en un servidor.
Por lo tanto, cuando hay una conmutación por error, obtengo fallas de inicio de sesión en el segundo servidor (que no tiene los inicios de sesión de nivel de instancia correspondientes).
¿Cómo supero este problema? ¿Se suponía que debía configurar la cuenta de usuario de una manera especial?
Respuestas:
Según tengo entendido, si no está utilizando bases de datos contenidas , deberá asegurarse de que los inicios de sesión se creen en otras instancias manualmente.
Algo así como este script de SQLSoldier , publicado originalmente como Transferencia de inicios de sesión a un espejo de base de datos , debería ser el truco.
fuente
Msg 7202, Level 11, State 2, Line 1 Could not find server 'otherserver' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Debe usar una Base de datos contenida o volver a crear los usuarios en los otros servidores con el mismo hash de contraseña y SID.
Microsoft proporciona una secuencia de comandos para hacerlo: cómo transferir inicios de sesión y contraseñas entre instancias de SQL Server
La solución de Mark era parcialmente correcta, sin embargo, su solución recomendada era para bases de datos duplicadas, en lugar de AlwaysOn, que es lo que las preguntas piden.
fuente
Estoy respondiendo a la publicación después de mucho tiempo, pero puede ayudar a alguien más con el problema similar. PowerShell se puede usar para copiar inicios de sesión desde la réplica principal a las réplicas secundarias. Los detalles se pueden encontrar aquí https://maq.guru/synchronizing-sql-server-logins-in-an-always-on-availability-group/ .
Divulgación completa: soy dueño del sitio anterior.
El script de PowerShell:
fuente
Debe usar los inicios de sesión de Dominio de Windows y crearlos en cada instancia. Como el SID se administra mediante el directorio activo, podrá acceder a todas las réplicas miembros del grupo de disponibilidad si el inicio de sesión existe en la réplica principal. Otra opción es usar un certificado.
fuente