J'ai installé SQL Server 2008 R2. Il contient trois instances.
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.
Essayez quelques tests de connectivité de base.
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.
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é.