Nous avons un groupe de disponibilité Always On avec un primaire et un secondaire en lecture. Nous avons un utilisateur pour l'équipe de mise en œuvre qui utilise la base de données pour vérifier l'exactitude des données qu'ils ont l'intention de mettre dans la base de données.
Les utilisateurs ont uniquement le droit de lire à partir de la base de données, mais lorsqu'ils se connectent (via SSMS) via l'AG Listener, ils se connectent toujours au nœud actif.
J'ai essayé de leur faire accéder directement à l'instance en lecture seule, mais ils sont bloqués à leur manière et après un jour ou deux, ils sont tous de retour sur le nœud actif.
Existe-t-il un moyen pour SQL Server de dire que cet utilisateur sera toujours intentionnellement en lecture seule et de le rediriger là-bas?
REMARQUE: J'ai essayé de définir 'ApplicationIntent = ReadOnly' dans les paramètres de connexion supplémentaires, mais cela ne semble pas rediriger vers le nœud secondaire, et ce n'est pas la solution idéale car ils oublieront inévitablement de le configurer pour de nouveaux démarreurs.
SQL Server 2012 Enterprise, groupe de disponibilité 1 principal, 1 secondaire lisible avec validation synchrone.
Je ne souhaite pas qu'un utilisateur se connecte à un serveur lié ou via un autre serveur. Les utilisateurs se connectent directement à la base de données via SSMS (aucune autre application) et j'aimerais que l'écouteur AG (ou quelque chose dans le coin) puisse diriger cet utilisateur vers un nœud secondaire s'il en existe un (car il n'y a qu'un accès en lecture) cela ne sert à rien d'accéder au primaire) sans que l'utilisateur n'ait rien à faire, car ils se déplacent sur les machines et oublient d'ajouter l'intention de l'application. Je trouve également que l'ajout de paramètres de connexion supplémentaires ne vous dirige pas toujours vers le nœud secondaire.
Réponses:
Je n'ai pas de réponse à votre question entière (bien que j'ai donné une réponse à une question similaire aujourd'hui https://dba.stackexchange.com/a/137844/36812 ) mais vous avez mentionné que l'utilisation d'ApplicationIntent = ReadOnly ne fonctionne pas correctement.
Avez-vous configuré des URL de routage en lecture seule? Parce que ce n'est pas fait hors de la boîte et si vous ne le faites pas, ces paramètres et cet indicateur ne fonctionneront pas. Je pense que si vous réussissez, vous pourrez commencer à réévaluer vos besoins.
Instructions sur MSDN https://msdn.microsoft.com/en-us/library/hh710054.aspx et plus faciles à faire dans PowerShell.
la source
Ste, ce que vous voulez, c'est une solution pointer-cliquer ou un paramètre quelque part. Malheureusement, aucun de ceux-ci n'existe actuellement sous une forme "standard". Ce serait vraiment bien si Microsoft incluait cela dans les paramètres de connexion pour un serveur enregistré afin qu'il puisse être enregistré, mais hélas ils ne le font pas.
Cela vous laisse avec l'une des deux options:
J'ai parcouru un téléchargement Microsoft pour SNAC - SQL Native Access Client, à la recherche de quelque chose qui pourrait répondre à vos exigences. Cela vous permettrait d'écrire un petit morceau de code pour donner aux utilisateurs un bouton pour accéder directement au secondaire en lecture seule. https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/
L'autre possibilité est de forcer les utilisateurs à remplir la boîte de dialogue des paramètres de connexion lors de la connexion via SSMS. Pour forcer ce comportement, vous devrez modifier les connexions sur les serveurs principal et secondaire, en refusant la connexion au serveur principal et en autorisant la connexion aux ordinateurs secondaires. Vous pouvez utiliser un travail de l'Agent SQL pour vérifier l'état du serveur et définir les connexions en conséquence.
Certes, je n'ai pas essayé de faire ce dernier, mais en théorie, cela devrait fonctionner.
la source
Il semble que ce soit désormais une fonctionnalité de SQL Server 2019.
De la redirection de connexion en lecture / écriture du réplica secondaire vers le réplica principal (groupes de disponibilité Always On) dans la documentation officielle:
la source