Essayez quelques tests de connectivité de base.
- Vérifiez que 5022, 5023 et 5024 écoutent.
- Vérifiez que le nom de serveur que vous utilisez est correct.
Depuis la ligne de commande:
netstat -an
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.
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.
Dans 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 mettre 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 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, utilisez sur chaque instance de serveur 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
À partir de la ligne de commande, exécutez ipconfig /all
et notez le nom d'hôte renvoyé.