Wir haben eine Always On-Verfügbarkeitsgruppe mit einer primären und einer lesbaren sekundären Gruppe. Wir haben einen Benutzer für das Implementierungsteam, der die Datenbank verwendet, um die Richtigkeit der Daten zu überprüfen, die in die Datenbank aufgenommen werden sollen.
Die Benutzer haben nur das Recht, aus der Datenbank zu lesen, aber wenn sie (über SSMS) über den AG Listener eine Verbindung herstellen, stellen sie immer eine Verbindung zum aktiven Knoten her.
Ich habe versucht, sie dazu zu bringen, direkt auf die schreibgeschützte Instanz zuzugreifen, aber sie stecken fest und nach ein oder zwei Tagen sind sie alle wieder auf dem aktiven Knoten.
Gibt es eine Möglichkeit für SQL Server zu sagen, dass dieser Benutzer immer mit Absicht schreibgeschützt sein wird, und sie dort umzuleiten?
HINWEIS: Ich habe versucht, 'ApplicationIntent = ReadOnly' in den zusätzlichen Verbindungsparametern festzulegen, dies scheint jedoch nicht zum sekundären Knoten umzuleiten und ist nicht die ideale Lösung, da sie unweigerlich vergessen, ihn für neue Starter einzurichten.
SQL Server 2012 Enterprise, Verfügbarkeitsgruppe 1 primär, 1 lesbar sekundär mit synchronem Commit.
Ich beabsichtige nicht, dass ein Benutzer eine Verbindung zu einem Verbindungsserver oder über einen anderen Server herstellt. Die Benutzer stellen über SSMS (keine andere Anwendung) eine direkte Verbindung zur Datenbank her, und ich möchte, dass der AG Listener (oder etwas in der Nähe) diesen Benutzer zu einem sekundären Knoten weiterleiten kann, sofern einer verfügbar ist (da er dort nur Lesezugriff hat Es macht keinen Sinn, auf Primary zuzugreifen, ohne dass der Benutzer etwas tun muss, da er sich auf Computern bewegt und vergisst, die Anwendungsabsicht hinzuzufügen. Ich finde auch, dass das Hinzufügen zu den zusätzlichen Verbindungsparametern Sie nicht immer zum sekundären Knoten weiterleitet.
Antworten:
Ich habe keine Antwort auf Ihre gesamte Frage (obwohl ich heute eine Antwort auf eine ähnliche Frage gegeben habe: /dba//a/137844/36812 ), aber Sie haben erwähnt, dass die Verwendung von ApplicationIntent = ReadOnly nicht funktioniert richtig.
Haben Sie schreibgeschützte Routing-URLs eingerichtet? Weil es nicht sofort ausgeführt wird und wenn Sie es nicht tun, funktionieren diese Einstellungen und dieses Flag nicht. Ich denke, wenn Sie das zum Laufen bringen, könnten Sie anfangen, Ihre Anforderungen neu zu bewerten.
Anweisungen auf MSDN https://msdn.microsoft.com/en-us/library/hh710054.aspx und am einfachsten in PowerShell.
quelle
Ste, was Sie wollen, ist eine Point-and-Click-Lösung oder eine Einstellung irgendwo. Leider gibt es derzeit keine davon in "Standard" -Form. Es wäre wirklich schön, wenn Microsoft dies in die Verbindungseinstellungen für einen registrierten Server aufnehmen würde, damit es gespeichert werden könnte, aber leider nicht.
Sie haben also zwei Möglichkeiten:
Ich bin auf einen Microsoft-Download für SNAC - SQL Native Access Client gestoßen und habe nach etwas gesucht, das Ihre Anforderungen erfüllen könnte. Auf diese Weise können Sie ein kleines Stück Code schreiben, um Benutzern eine Schaltfläche für den direkten Zugriff auf die schreibgeschützte Sekundärseite zu geben. https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/
Die andere Möglichkeit besteht darin, Benutzer zu zwingen, den Verbindungsparameterdialog auszufüllen, wenn eine Verbindung über SSMS hergestellt wird. Um dieses Verhalten zu erzwingen, müssen Sie die Anmeldungen auf dem primären und dem sekundären Server ändern, die Verbindung zum primären Server verweigern und die Verbindung zum sekundären Server zulassen. Sie können einen SQL Agent-Job verwenden, um den Serverstatus zu überprüfen und die Anmeldungen entsprechend festzulegen.
Zugegeben, ich habe nicht versucht, Letzteres zu tun, aber theoretisch sollte es funktionieren.
quelle
Es sieht so aus, als ob dies jetzt eine Funktion in SQL Server 2019 ist.
Von der Umleitung der Lese- / Schreibverbindung der sekundären zur primären Replik (Always On Availability Groups) in der offiziellen Dokumentation:
quelle