Serveur lié SQL Server 2012 Application Intention

J'ai besoin de créer un server lié par rapport à un groupe de disponibilité SQL Server 2012 et je souhaite que toutes les requests soient routées vers la réplique en lecture seule. Cependant, j'ai été incapable de déterminer comment je peux spécifier l'intention d'application ReadOnly afin de m'assurer que la request est routée vers la réplique correcte.

Quelqu'un at-il réussi à configurer un server lié de cette manière?

J'ai essayé les deux methods et les travaux ci-dessous (à partir du site Microsoft Tech)

EXEC sp_addlinkedserver @server = N'linked_svr', @srvproduct=N'SqlServer', @provider=N'SQLNCLI11', @datasrc=N'AG_Listener_Name', @provstr=N'ApplicationIntent=ReadOnly', @catalog=N'MY_DB_NAME'; 

I Vous n'avez pas de groupe de disponibilité AlwaysOn pour le tester, mais vous pouvez spécifier une string de connection lors de la configuration d'un server lié via sp_addlinkedserver.

SQL Server 2012 accepte ce qui suit et crée avec succès un server lié qui fonctionne, qu'il honore la propriété ApplicationIntent que vous devrez tester, mais il doit faire comme il est configuré pour utiliser le client natif en tant que fournisseur:

 sp_addlinkedserver @srvproduct = 'DB', --Don't use 'SQL Server' otherwise it won't let you set any properties @server = 'LINKED-SERVER-NAME', @provider = 'SQLNCLI', @provstr = 'Data Source=SERVER\INSTANCE;Initial Catalog = Database;ApplicationIntent=ReadOnly' 

Lors du test d'une connection Linked Server à la database, j'ai constaté que je continuais à bash la database primaire même en spécifiant ApplicationIntent = ReadOnly dans les parameters de connection.

Après d'autres investigations, j'ai trouvé que la cause première de ceci était que la database par défaut associée à ce login était "master". Cela peut être testé en exécutant la requête suivante:

  sp_helplogins 

Pour éviter ce problème, j'utilise maintenant les parameters de connection suivants pour vérifier que je me connecte au réplica de la database:

 ApplicationIntent=ReadOnly;Database=database-db 

En outre, lors de la connection à une database via un server lié, veillez à utiliser le format de requête suivant:

  SELECT * FROM [server].[database].[scheme].[table]