SQL Management Studio (versions antérieures à 2016)
Malheureusement, certaines mises en garde rendent l'utilisation de l'intention d'application dans SQL Management Studio quelque peu pénible:
Pour vous connecter manuellement avec l'intention ReadOnly, après avoir ouvert la boîte de dialogue Se connecter au serveur à partir de l'Explorateur d'objets, les utilisateurs doivent se rappeler de:
- Cliquez sur Options >> .
- Accédez à l' onglet Paramètres de connexion supplémentaires .
- Entrez le paramètre supplémentaire comme ApplicationIntent = ReadOnly;
- (Remarque: les utilisateurs ne doivent pas cliquer sur le bouton Options << après avoir entré les paramètres de connexion supplémentaires, sinon les paramètres seront perdus.)
- Cliquez sur Connecter .
- Lancez toujours les fenêtres de requête en cliquant avec le bouton droit sur la base de données souhaitée dans la vue Explorateur d'objets et en choisissant Nouvelle requête pour éviter de rencontrer la mise en garde n ° 3 ci-dessous.
Les mises en garde qui s'appliquent sont les suivantes:
- Bien que vous puissiez faire en sorte que SQL Management Studio se connecte avec l'intention de lecture seule, il ne stocke pas les paramètres de connexion supplémentaires lorsqu'une connexion est ajoutée aux serveurs enregistrés.
- Le comportement lors de la modification manuelle des serveurs enregistrés localement dans le fichier RegSrvr.xml pour ajouter l'intention d'application est extrêmement incohérent et sera écrasé chaque fois qu'une modification est effectuée via l'interface graphique rendant cette solution de contournement peu fiable.
- La base de données Always On doit être sélectionnée avant l'ouverture de la fenêtre de requête; sinon, la connexion est routée vers le serveur principal. Si vous essayez de sélectionner la base de données à l'aide du menu déroulant de la fenêtre de requête après que la fenêtre de requête a déjà été ouverte sur une base de données non toujours active, vous obtiendrez une boîte de dialogue d'erreur. Si vous essayez de changer la base de données en une base de données Always On avec une instruction USE après que la fenêtre de requête a déjà été ouverte vers une base de données non Always On, les résultats ressemblent à ceci lorsque vous essayez d'exécuter la requête SQL:
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 (versions 2016 ou ultérieures)
SQL Server Management Studio 2016 ou supérieur peut se connecter avec l'intention d'application en lecture seule (en utilisant les mêmes 6 étapes que les versions précédentes) et il stocke les paramètres de connexion supplémentaires. Il y a encore quelques mises en garde:
- La vue Explorateur d'objets n'énumère aucune des tables ou autres objets dans les bases de données AlwaysOn. Tenter de les développer entraîne un message d'accès refusé.
- Vous ne pouvez pas avoir une connexion en lecture seule et non en lecture seule au même écouteur ouverte en même temps.
- Intellisense pour les noms d'objets dans la base de données ne fonctionne pas. (Curieusement, les objets sont énumérés très bien dans le Concepteur de requêtes que vous pouvez lancer à l'aide de Design Query dans l'éditeur ... à partir du menu contextuel.)
- La mise en garde 3 des mises en garde des versions précédentes s'applique toujours.
Produits tiers
LinqPad stocke la chaîne de connexion entière, y compris l'intention de l'application et la base de données lorsque vous enregistrez une connexion et peut donc être une option viable pour effectuer des requêtes en lecture seule sur les bases de données Always On.
Avez-vous essayé le script PowerShell, mais utilisez une autre orthographe (avec un espace) pour l'intention de l'application? Ou ai-je mélangé les méthodes de connexion?
Se connecter à SQL Server à l'aide de l'application Intention en lecture seule
la source
Est-il possible que vous créiez un fichier de configuration et que vous créiez ensuite automatiquement les serveurs enregistrés nécessaires dans SSMS? Tout comme mentionné dans mon article MSSQLTips:
Automatiser l'enregistrement et la maintenance des serveurs dans SQL Server Management Studio (SSMS)
la source
Cela a été corrigé dans SQL 2016 SSMS lors de l'utilisation avec des serveurs enregistrés. J'ai pu enregistrer une connexion ReadOnly Intent dans le cadre du groupe de serveurs locaux et ouvrir la connexion enregistrée pour une utilisation future. Merci pour votre aide.
la source
Je ne peux pas commenter mais j'ajoute à la réponse de DBAUser.
Je ne pouvais pas voir une option pour ajouter l'intention d'application dans l'interface graphique lors de la configuration de la connexion dans la zone des serveurs enregistrés.
Je devais soit me connecter en utilisant l'explorateur d'objets (en utilisant
Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly
), puis enregistrer le serveur une fois que j'étais connecté.Ou ajoutez
Initial Catalog=<Database>;ApplicationIntent=ReadOnly
à la chaîne de connexion dans le fichier .regsrvr.la source