SQL Management Studio (Versionen vor 2016)
Leider gibt es einige Einschränkungen, die die Verwendung von Application Intent in SQL Management Studio etwas schmerzhaft machen:
Um eine manuelle Verbindung mit ReadOnly-Absicht herzustellen , müssen Benutzer nach dem Aufrufen des Dialogfelds "Mit Server verbinden " im Objekt-Explorer Folgendes beachten:
- Klicken Sie auf Optionen >> .
- Wechseln Sie zur Registerkarte Zusätzliche Verbindungsparameter .
- Geben Sie den zusätzlichen Parameter als ApplicationIntent = ReadOnly ein.
- (Hinweis: Benutzer dürfen nach Eingabe der zusätzlichen Verbindungsparameter nicht auf die Schaltfläche Optionen << klicken, da sonst die Parameter verloren gehen.)
- Klicken Sie auf Verbinden .
- Starten Sie Abfragefenster immer, indem Sie in der Objekt-Explorer- Ansicht mit der rechten Maustaste auf die gewünschte Datenbank klicken und Neue Abfrage auswählen , um zu vermeiden, dass Sie auf die Einschränkung Nr. 3 unten stoßen.
Folgende Einschränkungen gelten:
- Obwohl Sie SQL Management Studio dazu bringen können, eine Verbindung mit Read Only Intent herzustellen, werden die zusätzlichen Verbindungsparameter nicht gespeichert, wenn eine Verbindung zu registrierten Servern hinzugefügt wird.
- Das Verhalten beim manuellen Bearbeiten der lokal registrierten Server in der Datei RegSrvr.xml zum Hinzufügen der Anwendungsabsicht ist äußerst inkonsistent und wird jedes Mal überschrieben, wenn eine Änderung über die GUI vorgenommen wird, wodurch diese Problemumgehung unzuverlässig wird.
- Die Always On-Datenbank muss ausgewählt sein, bevor das Abfragefenster geöffnet wird. Andernfalls wird die Verbindung zum Primärserver weitergeleitet. Wenn Sie versuchen, die Datenbank mithilfe der Dropdown-Liste des Abfragefensters auszuwählen, nachdem das Abfragefenster bereits für eine Datenbank geöffnet wurde, die nicht immer aktiv ist, wird ein Fehlerdialogfeld angezeigt. Wenn Sie versuchen, die Datenbank mit einer USE-Anweisung in eine Always On-Datenbank zu ändern, nachdem das Abfragefenster bereits für eine Nicht-Always On-Datenbank geöffnet wurde, sehen die Ergebnisse folgendermaßen aus, wenn Sie versuchen, die SQL-Abfrage auszuführen:
Msg 979, Level 14, State 1, Line 1
The target database ('AlwaysOnDatabase') is in an availability group
and currently does not allow read only connections. For more
information about application intent, see SQL Server Books Online.
SQL Management Studio (Versionen 2016 oder höher)
SQL Server Management Studio 2016 oder höher kann eine Verbindung mit schreibgeschützter Anwendungsabsicht herstellen (mit denselben 6 Schritten wie in früheren Versionen) und speichert die zusätzlichen Verbindungsparameter. Es gibt noch einige Einschränkungen:
- In der Objekt-Explorer-Ansicht werden keine Tabellen oder anderen Objekte in den AlwaysOn-Datenbanken aufgelistet. Der Versuch, sie zu erweitern, führt zu einer Nachricht, dass der Zugriff verweigert wurde.
- Sie können nicht gleichzeitig eine schreibgeschützte und eine nicht schreibgeschützte Verbindung zum selben Listener herstellen.
- Intellisense für Objektnamen in der Datenbank funktioniert nicht. (Seltsamerweise werden Objekte im Abfrage-Designer einwandfrei aufgelistet, die Sie mit der Entwurfsabfrage im Editor ... über das Kontextmenü starten können .)
- Vorbehalt 3 aus den Vorbehalten der Vorgängerversionen gilt weiterhin.
Produkte von Drittanbietern
LinqPad speichert die gesamte Verbindungszeichenfolge einschließlich Application Intent und der Datenbank, wenn Sie eine Verbindung speichern, und ist daher möglicherweise eine praktikable Option für schreibgeschützte Abfragen für Always On-Datenbanken.
Haben Sie das PowerShell-Skript ausprobiert, aber eine andere Schreibweise (mit einem Leerzeichen) für die Anwendungsabsicht verwendet? Oder habe ich die Verbindungsmethoden durcheinander gebracht?
Stellen Sie eine schreibgeschützte Verbindung zu SQL Server her
quelle
Ist es möglich, dass Sie eine Konfigurationsdatei erstellen und dann automatisch die erforderlichen registrierten Server in SSMS erstellen? Genau wie in meinem MSSQLTips-Artikel erwähnt:
Automatisieren der Registrierung und Wartung von Servern in SQL Server Management Studio (SSMS)
quelle
Dies wurde in SQL 2016 SSMS bei Verwendung mit registrierten Servern behoben. Ich konnte eine ReadOnly Intent-Verbindung als Teil der lokalen Servergruppe registrieren und die gespeicherte Verbindung für die zukünftige Verwendung öffnen. Danke für die Hilfe dabei.
quelle
Ich kann keinen Kommentar abgeben, füge aber die Antwort von DBAUser hinzu.
Beim Einrichten der Verbindung im Bereich der registrierten Server konnte keine Option zum Hinzufügen von Application Intent in der GUI angezeigt werden.
Ich musste entweder eine Verbindung mit dem Objekt-Explorer (mit
Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly
) herstellen und dann den Server registrieren, sobald ich verbunden war.Oder fügen Sie
Initial Catalog=<Database>;ApplicationIntent=ReadOnly
der Verbindungszeichenfolge in der .regsrvr-Datei hinzu.quelle