Tenemos un grupo de disponibilidad Always On con un primario y un secundario habilitado para lectura. Tenemos un usuario para el equipo de implementación que usa la base de datos para verificar la exactitud de los datos que tienen la intención de poner en la base de datos.
Los usuarios solo tienen derechos para leer de la base de datos, pero cuando se conectan (a través de SSMS) a través de AG Listener siempre se conectan al nodo activo.
Intenté que accedan directamente a la instancia de solo lectura, pero están atascados en sus formas y después de un día o dos vuelven al nodo activo nuevamente.
¿Hay alguna manera para que SQL Server diga que este usuario siempre va a ser con intención de solo lectura y redirigirlo allí?
NOTA: He intentado configurar 'ApplicationIntent = ReadOnly' en los parámetros de conexión adicionales, pero esto no parece redirigir al nodo secundario, y no es la solución ideal, ya que inevitablemente olvidarán configurarlo para nuevos iniciadores.
SQL Server 2012 Enterprise, grupo de disponibilidad 1 primario, 1 secundario legible con confirmación sincrónica.
No tengo la intención de que un usuario se conecte a un servidor vinculado, ni a través de ningún otro servidor. Los usuarios se conectan directamente a la base de datos a través de SSMS (ninguna otra aplicación) y me gustaría que AG Listener (o algo por ahí) pueda dirigir a ese usuario a un nodo secundario si hay uno disponible (ya que solo tiene acceso de lectura allí no tiene sentido acceder al primario) sin que el usuario tenga que hacer nada, ya que se mueven alrededor de las máquinas y olvidarán agregar la intención de la aplicación. También encuentro que agregar eso a los parámetros de conexión adicionales no siempre lo dirige al nodo secundario.
Respuestas:
No tengo una respuesta a su pregunta completa (aunque hoy respondí a una pregunta similar https://dba.stackexchange.com/a/137844/36812 ) pero mencionó que usar ApplicationIntent = ReadOnly no funciona correctamente.
¿Ha configurado URL de enrutamiento de solo lectura? Debido a que no está listo para usar y si no lo hace, esta configuración y esa bandera no funcionarán. Creo que si funciona, entonces podría comenzar a reevaluar sus requisitos.
Instrucciones en MSDN https://msdn.microsoft.com/en-us/library/hh710054.aspx y más fácilmente en PowerShell.
fuente
Ste, lo que quieres es una solución de apuntar y hacer clic o una configuración en algún lugar. Desafortunadamente, ninguno de estos existe actualmente en forma "lista para usar". Sería realmente bueno si Microsoft incluyera esto en la configuración de conexión para un Servidor Registrado para poder guardarlo, pero lamentablemente no lo hacen.
Esto te deja con una de dos opciones:
Me encontré con una descarga de Microsoft para SNAC - SQL Native Access Client, buscando algo que pudiera cumplir con sus requisitos. Esto le permitiría escribir un pequeño código para que los usuarios tengan un botón para acceder directamente a la secundaria de solo lectura. https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/
La otra posibilidad es obligar a los usuarios a completar el diálogo de parámetros de conexión cuando se conectan a través de SSMS. Para forzar este comportamiento, deberá modificar los inicios de sesión en los servidores primario y secundario, negando la conexión a la primaria y permitiendo la conexión a las secundarias. Puede usar un trabajo de Agente SQL para verificar el estado del servidor y establecer inicios de sesión en consecuencia.
Es cierto que no he intentado hacer esto último, pero en teoría debería funcionar.
fuente
Parece que ahora es una característica en SQL Server 2019.
Desde la redirección de conexión de lectura / escritura de réplica secundaria a primaria (Grupos de disponibilidad siempre activada) en la documentación oficial:
fuente