Spiegeln - Die Netzwerkadresse des Servers kann nicht erreicht werden

12

Ich habe SQL Server 2008 R2 installiert. Es enthält drei Instanzen.

  1. Standard (MSSQLServer)
  2. Erste Instanz
  3. Zweite Instanz

Alle diese sind Anmelden als Netzwerkdienst.

Die Standardinstanz ist der Prinzipalserver. Die erste Instanz ist der Spiegelserver. Die zweite Instanz ist der Zeugenserver

Zunächst habe ich die vollständige Sicherung und Transaktionsprotokollsicherung meiner Prinzipaldatenbank durchgeführt. Stellen Sie es auf der ersten Instanz wieder her, indem Sie denselben Datenbanknamen und den Wiederherstellungsstatus No-Recovery beibehalten

Schließlich habe ich die Spiegelung gestartet und es werden zwei Fehlermeldungen angezeigt.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

testen
quelle

Antworten:

12

Probieren Sie einige grundlegende Konnektivitätstests aus.

  1. Stellen Sie sicher, dass 5022, 5023 und 5024 zuhören.
  2. Stellen Sie sicher, dass der von Ihnen verwendete Servername korrekt ist.

Von der Kommandozeile:

netstat -an

Bildbeschreibung hier eingeben

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.

Bildbeschreibung hier eingeben

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 /allSie von der Befehlszeile aus, und notieren Sie sich, welcher Hostname zurückgegeben wird.

Craig Efrein
quelle