Mirroring - nie można uzyskać adresu sieciowego serwera

12

Mam zainstalowany program SQL Server 2008 R2. Zawiera trzy instancje.

  1. Domyślnie (MSSQLServer)
  2. Pierwsza instancja
  3. Druga instancja

Wszystkie te są zalogowane jako usługa sieciowa.

Instancja domyślna to serwer główny. Pierwsza instancja to kopia lustrzana. Druga instancja to serwer świadka

Początkowo wykonałem pełną kopię zapasową i kopię zapasową dziennika transakcji z mojej głównej bazy danych. Przywrócono go do pierwszej instancji, zachowując tę ​​samą nazwę bazy danych i stan odzyskiwania bez odzyskiwania

W końcu rozpocząłem Mirroring i otrzymuję dwa komunikaty o błędach pokazane poniżej.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

testowanie
źródło

Odpowiedzi:

12

Wypróbuj podstawowe testy łączności.

  1. Sprawdź, czy 5022, 5023 i 5024 nasłuchują.
  2. Sprawdź, czy używana nazwa serwera jest poprawna.

Z wiersza poleceń:

netstat -an

wprowadź opis zdjęcia tutaj

Na moim serwerze widać, że 5022 nasłuchuje.

Następnie upewnij się, że możesz połączyć się z tymi portami przez telnet

telnet fully-qualified-server-name 5022

Jak wspomniano w sekcji Notatka w interfejsie GUI właściwości kopii lustrzanej, tuż poniżej pola obserwatora, nazwy serwerów muszą być w pełni kwalifikowanymi adresami tcp.

wprowadź opis zdjęcia tutaj

Powinieneś po prostu zobaczyć czarny ekran. W tym przykładzie wybrałem nazwę, która spowodowałaby awarię połączenia. Jeśli zobaczysz komunikat „Nie można otworzyć połączenia”, oznacza to, że serwery zdefiniowane jako dublowanie, zleceniodawca i świadek są niedostępne lub nie używasz właściwej nazwy.

Klient Telnet można dodać w sekcji Funkcje w systemie Windows 2008.

W systemie Windows 2008 po kliknięciu prawym przyciskiem myszy Komputer można zobaczyć pełną nazwę komputera. Powinieneś mieć możliwość pingowania go również z wiersza poleceń. np .: ping myservername

Aktualizacja

Uruchom następujące zapytania dla każdej instancji SQL Server i umieść wyniki w swoim pytaniu. Wiele z tych wskazówek dotyczących rozwiązywania problemów pochodzi z: http://msdn.microsoft.com/en-us/library/ms189127.aspx

Pokaż punkty końcowe TCP

SELECT type_desc, port FROM sys.tcp_endpoints;

Wyświetl stan lustrzanych punktów końcowych

SELECT state_desc FROM sys.database_mirroring_endpoints;

Sprawdź, czy ROLA jest poprawna

SELECT role FROM sys.database_mirroring_endpoints;

Wyświetl uprawnienia do punktów końcowych

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

Logowanie do konta usługi z drugiej instancji serwera wymaga pozwolenia CONNECT. Upewnij się, że logowanie z innego serwera ma uprawnienia CONNECT. Aby ustalić, kto ma uprawnienie CONNECT dla punktu końcowego, w każdej instancji serwera użyj następującej instrukcji Transact-SQL.

Przykładowe dane wyjściowe:

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 to konto, które ma przypisane uprawnienie do połączenia (CO), Grantee to konto, które ma uprawnienie do połączenia

W wierszu polecenia uruchom ipconfig /alli zanotuj, co zwraca nazwa hosta.

Craig Efrein
źródło