Зеркалирование - сетевой адрес сервера недоступен

12

У меня установлен SQL Server 2008 R2. Он содержит три экземпляра.

  1. По умолчанию (MSSQLServer)
  2. Первый случай
  3. Второй экземпляр

Все это вход в систему как сетевой сервис.

Экземпляр по умолчанию - Основной сервер. Первый экземпляр - Зеркальный. Второй экземпляр - Сервер-свидетель.

Первоначально я взял полное резервное копирование и резервное копирование журнала транзакций моей основной базы данных. Восстановил его в первой инстанции, сохранив то же имя базы данных, а состояние восстановления - без восстановления

Наконец, я запустил зеркалирование и получаю два сообщения об ошибках, показанных ниже.

введите описание изображения здесь

введите описание изображения здесь

тестирование
источник

Ответы:

12

Попробуйте некоторые основные тесты подключения.

  1. Убедитесь, что 5022, 5023 и 5024 слушают.
  2. Убедитесь, что вы используете правильное имя сервера.

Из командной строки:

netstat -an

введите описание изображения здесь

На моем сервере видно, что 5022 слушает.

Затем убедитесь, что вы можете подключиться к этим портам через Telnet

telnet fully-qualified-server-name 5022

Как упоминается в разделе « Примечание » графического интерфейса «Свойства зеркала», чуть ниже поля-свидетеля, имена серверов должны быть полностью квалифицированными адресами TCP.

введите описание изображения здесь

Вы должны просто увидеть черный экран. В этом примере я выбрал имя, которое может вызвать сбой соединения. Если вы видите «Не удалось открыть соединение», то сервер (ы), определенные как зеркало, участник и свидетель, недоступны или вы не используете правильное имя.

Клиент telnet может быть добавлен в разделе Возможности в Windows 2008.

В Windows 2008, когда вы щелкнете правой кнопкой мыши по Компьютеру, вы увидите полное имя компьютера. Вы должны быть в состоянии пропинговать это также из командной строки. пример: ping myservername

Обновить

Пожалуйста, выполните следующие запросы для каждого экземпляра SQL Server и поместите результаты в свой вопрос. Многие из этих советов по устранению неполадок приходят по адресу : http://msdn.microsoft.com/en-us/library/ms189127.aspx

Показать конечные точки tcp

SELECT type_desc, port FROM sys.tcp_endpoints;

Отображение статуса зеркалирования конечных точек

SELECT state_desc FROM sys.database_mirroring_endpoints;

Проверьте правильность роли

SELECT role FROM sys.database_mirroring_endpoints;

Разрешения на отображение для конечных точек

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

Для входа в учетную запись службы из другого экземпляра сервера требуется разрешение CONNECT. Убедитесь, что у входа с другого сервера есть разрешение CONNECT. Чтобы определить, кто имеет разрешение CONNECT для конечной точки, на каждом экземпляре сервера используйте следующую инструкцию Transact-SQL.

Пример вывода:

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 - это учетная запись, которой назначено (CO) разрешение на подключение, Grantee - это учетная запись, которая имеет разрешение на подключение.

Из командной строки запустите ipconfig /allи обратите внимание, что возвращает имя хоста.

Крейг Эфрейн
источник