Проблема с настройкой свидетеля в схеме зеркального отображения SQL Server с ошибкой

У меня есть три сервера Windows (data1, data2 и datawitness), которые не являются частью какого-либо домена и не используют AD. Я пытаюсь настроить зеркалирование в соответствии с инструкциями на странице http://alan328.com/SQL2005_Database_Mirroring_Tutorial.aspx. У меня был успех вплоть до последнего набора инструкций, в которых я говорю data1 использовать datawitness в качестве сервера-свидетеля. Этот шаг завершается ошибкой со следующим сообщением:

изменить базу данных MyDatabase set witness = 'TCP: //datawitness.somedomain.com: 7024'

Не удалось отправить команду ALTER DATABASE на удаленный экземпляр сервера 'TCP: //datawitness.somedomain.com: 7024'. Конфигурация зеркального отображения базы данных не изменилась. Убедитесь, что сервер подключен, и повторите попытку.

Я тестировал оба порта 7024 и 1433, используя telnet, и оба сервера действительно могут соединяться друг с другом. Я также могу добавить подключение к следящему серверу из диспетчера SQL Server на основном сервере. Я использовал Configuration Manager на обоих серверах, чтобы включить именованные каналы и убедиться, что IP-трафик включен и по умолчанию используется порт 1433.

Что еще это может быть? Нужны ли мне дополнительные открытые порты, чтобы это работало? (Правила брандмауэра очень строгие, но я знаю, что трафик на ранее упомянутых портах явно разрешен)

Оговорки, о которых стоит упомянуть:

  • Каждый сервер находится в другом сегменте сети.

  • Серверы не используют AD и не являются частью домена

  • Для этих серверов не настроен DNS-сервер, поэтому я использую файл HOSTS для сопоставления доменных имен с IP-адресами (проверяется с помощью telnet, ping и т. Д.).

  • Правила брандмауэра очень строгие, и у меня нет прямого доступа для их настройки, хотя при необходимости я могу внести изменения.

  • Data1 и Data2 используют SQL Server 2008, Datawitness использует SQL Express 2005. Все они используют экземпляр по умолчанию (т.е. ни один из них не является именованным экземпляром)


person Chris Bloom    schedule 27.03.2009    source источник


Ответы (2)


После просмотра блогов, статей базы знаний и сообщений на форумах, переустановки, перенастройки, перезагрузки, профилирования и т. Д. И т. Д. Я наконец нашел ключ к разгадке - запись в журнале событий на сервере-свидетеле сообщила об этой ошибке:

Database mirroring connection error 2 'DNS lookup failed with error: '11001(No such host is known.)'.' for 'TCP://ABC-WEB01:7024'.

Я использовал файл hosts для сопоставления фиктивных доменных имен для всех трех серверов в виде datax.mydomain.com. Однако теперь очевидно, что свидетель пытался ответить, используя имя основного сервера, для которого у меня не было записи hosts. Простое добавление еще одной записи для ABC-WEB01, указывающей на основной веб-сервер, помогло. Ошибок нет, зеркальное отображение наконец завершено.

Надеюсь, это сэкономит кому-то еще миллиард часов.

person Chris Bloom    schedule 27.03.2009
comment
Выходи за меня замуж ... Кажется, это помогло нам, хотя на данный момент Database Mirroring Monitor говорит, что зеркало и свидетель отключены друг от друга, но я начну разбираться в этом сейчас. - person F.B. ten Kate; 25.08.2011

Я хотел бы добавить еще один дополнительный ответ на этот конкретный вопрос, как показывает мой комментарий к ответу Криса, мое зеркало показывалось как отключенное (для свидетеля). По-видимому, вам нужно перезагрузить (или в моем случае я просто перезапустил service) следящий сервер.

Как только я это сделал, зеркало показало, что соединение со свидетелем установлено как подключенное!

См .: http://www.bigresource.com/Tracker/Track-ms_sql-cBsxsUSH/

person F.B. ten Kate    schedule 25.08.2011