Probieren Sie einige grundlegende Konnektivitätstests aus.
- Stellen Sie sicher, dass 5022, 5023 und 5024 zuhören.
- Stellen Sie sicher, dass der von Ihnen verwendete Servername korrekt ist.
Von der Kommandozeile:
netstat -an
Auf meinem Server können Sie sehen, dass 5022 lauscht.
Stellen Sie als Nächstes sicher, dass Sie eine Verbindung zu diesen Ports über Telnet herstellen können
telnet fully-qualified-server-name 5022
Wie im Abschnitt " Hinweis " der GUI "Spiegelungseigenschaften" direkt unter dem Feld "Zeuge" erwähnt, müssen die Servernamen vollqualifizierte TCP-Adressen sein.
Sie sollten nur einen schwarzen Bildschirm sehen. In diesem Beispiel habe ich einen Namen gewählt, der einen Verbindungsfehler verursachen würde. Wenn "Verbindung konnte nicht hergestellt werden" angezeigt wird, sind die als Spiegelserver, Prinzipal und Zeuge definierten Server nicht erreichbar oder Sie verwenden nicht den richtigen Namen.
Der Telnet-Client kann unter Features in Windows 2008 hinzugefügt werden.
Wenn Sie in Windows 2008 mit der rechten Maustaste auf Computer klicken, wird der vollständige Computername angezeigt. Sie sollten es auch über die Befehlszeile anpingen können. Beispiel: ping myservername
Aktualisieren
Führen Sie die folgenden Abfragen für jede SQL Server-Instanz aus und stellen Sie die Ergebnisse in Ihre Frage. Viele dieser Tipps zur Fehlerbehebung stammen von: http://msdn.microsoft.com/en-us/library/ms189127.aspx
TCP-Endpunkte anzeigen
SELECT type_desc, port FROM sys.tcp_endpoints;
Zeigt den Status der Spiegelungsendpunkte an
SELECT state_desc FROM sys.database_mirroring_endpoints;
Überprüfen Sie, ob die ROLLE korrekt ist
SELECT role FROM sys.database_mirroring_endpoints;
Berechtigungen für Endpunkte anzeigen
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
Die Anmeldung für das Dienstkonto von der anderen Serverinstanz erfordert die CONNECT-Berechtigung. Stellen Sie sicher, dass die Anmeldung vom anderen Server über die CONNECT-Berechtigung verfügt. Verwenden Sie auf jeder Serverinstanz die folgende Transact-SQL-Anweisung, um zu ermitteln, wer über die CONNECT-Berechtigung für einen Endpunkt verfügt.
Beispielausgabe:
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
Grantor ist das Konto, dem die Verbindungsberechtigung (CO) zugewiesen wurde. Grantee ist das Konto, das über die Verbindungsberechtigung verfügt
Führen ipconfig /all
Sie von der Befehlszeile aus, und notieren Sie sich, welcher Hostname zurückgegeben wird.