web-dev-qa-db-fra.com

Mise en miroir - L'adresse réseau du serveur ne peut pas être atteinte

J'ai installé SQL Server 2008 R2. Il contient trois instances.

  1. Par défaut (MSSQLServer)
  2. Première instance
  3. Deuxième instance

Tous ces éléments sont Ouvrir une session en tant que service réseau.

L'instance par défaut est le serveur principal La première instance est le miroir La deuxième instance est le serveur témoin

J'ai d'abord pris la sauvegarde complète et la sauvegarde du journal des transactions de ma base de données principale. Restauré en première instance en conservant le même nom de base de données et le même état de récupération est sans récupération

Enfin, j'ai commencé la mise en miroir et je reçois deux messages d'erreur illustrés ci-dessous.

enter image description here

enter image description here

13
testing

Essayez quelques tests de connectivité de base.

  1. Vérifiez que 5022, 5023 et 5024 écoutent.
  2. Vérifiez que le nom de serveur que vous utilisez est correct.

Depuis la ligne de commande:

netstat -an

enter image description here

Sur mon serveur, vous pouvez voir que 5022 écoute.

Assurez-vous ensuite que vous pouvez vous connecter à ces ports via telnet

telnet fully-qualified-server-name 5022

Comme il le mentionne dans la section Remarque de l'interface graphique des propriétés de mise en miroir, juste en dessous du champ témoin, les noms de serveur doivent être des adresses TCP complètes.

enter image description here

Vous devriez juste voir un écran noir. Dans cet exemple, j'ai choisi un nom qui entraînerait un échec de connexion. Si vous voyez "Impossible d'ouvrir la connexion", les serveurs définis comme miroir, principal et témoin ne sont pas accessibles ou vous n'utilisez pas le bon nom.

Le client telnet peut être ajouté sous Fonctionnalités dans Windows 2008.

Sous Windows 2008, lorsque vous cliquez avec le bouton droit sur Ordinateur, vous pouvez voir le nom complet de l'ordinateur. Vous devriez également pouvoir le cingler à partir de la ligne de commande. ex: ping myservername

Mise à jour

Veuillez exécuter les requêtes suivantes sur chaque instance de SQL Server et mettez les résultats dans votre question. Beaucoup de ces conseils de dépannage proviennent de: http://msdn.Microsoft.com/en-us/library/ms189127.aspx

Afficher les points de terminaison TCP

SELECT type_desc, port FROM sys.tcp_endpoints;

Afficher l'état des points de terminaison en miroir

SELECT state_desc FROM sys.database_mirroring_endpoints;

Vérifiez que le RÔLE est correct

SELECT role FROM sys.database_mirroring_endpoints;

Afficher les autorisations sur les points de terminaison

SELECT EP.name, SP.STATE, 
   CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
      AS GRANTOR, 
   SP.TYPE AS PERMISSION,
   CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
      AS GRANTEE 
   FROM sys.server_permissions SP , sys.endpoints EP
   WHERE SP.major_id = EP.endpoint_id
   ORDER BY Permission,grantor, grantee; 
GO

La connexion pour le compte de service à partir de l'autre instance de serveur nécessite l'autorisation CONNECT. Assurez-vous que la connexion de l'autre serveur dispose de l'autorisation CONNECT. Pour déterminer qui a l'autorisation CONNECT pour un point de terminaison, sur chaque instance de serveur, utilisez l'instruction Transact-SQL suivante.

Exemple de sortie:

name    STATE   GRANTOR PERMISSION  GRANTEE
TSQL Local Machine  G   sqladmin    CO      public
TSQL Named Pipes    G   sqladmin    CO      public
TSQL Default TCP    G   sqladmin    CO      public
TSQL Default VIA    G   sqladmin    CO      public
Mirroring   G   SERVERNAME\Grantor  CO      SERVERNAME\Grantee

Le concédant est le compte qui a attribué l'autorisation de connexion (CO), le bénéficiaire est le compte qui a l'autorisation de connexion

Depuis la ligne de commande, exécutez ipconfig /all et notez le nom d'hôte renvoyé.

12
Craig Efrein