Назад | Перейти на главную страницу

Зеркальное отображение SQL Server не работает. Вырывая мои волосы

Я пытаюсь выполнить то, что, как я думал, будет очень простым процессом - зеркальное отображение базы данных между двумя серверами MSSQL 2008 R2 в одном домене.

Оба сервера настроены одинаково, и у меня есть база данных под названием «архив», которую я хотел бы отразить. Я сделал полную резервную копию базы данных и журналов на узле 1 (основной) и восстановил ее на узле 2 с помощью опции WITH NORECOVERY. База данных отображается на узле 2 (зеркало) с (In Recovery) указан рядом с ним в графическом интерфейсе.

Я запускаю мастер зеркалирования на основном сервере и настраиваю безопасность. Оба процесса SQL на обоих настроены для запуска с одной и той же учетной записью службы домена. DOMAIN\SQLService и DOMAIN\SQLService учетная запись существует как логин на каждом сервере. Выполняя шаги по настройке безопасности, я выбираю, что мне не нужен следящий сервер (во всяком случае, пока нет), и настраивает конечные точки. Наконец, когда он спрашивает, какую учетную запись я хочу использовать для подключения к каждой, я ввожу DOMAIN\SQLService учетная запись.

В DOMAIN\SQLService устанавливается как локальный администратор каждого узла с использованием политики домена.

Однако когда я выбираю «Начать зеркальное отображение», я получаю следующую ошибку на Принципале:

Database mirroring connection error 4 'An error occurred while receiving data: '64(failed to retrieve text for this error. Reason: 15105)'.' for 'TCP://node-b.fqdn.example.com:5022'.

и на зеркале:

Database Mirroring login attempt failed with error: 'Connection handshake failed. An OS call failed: (8009030c) 0x8009030c(failed to retrieve text for this error. Reason: 15105). State 67.'.  [CLIENT: 10.13.111.31]

10.13.111.31 - это узел B.

Прочитав всю документацию, я пробовал несколько вещей и всегда получал такой результат. Я думал, что это будет довольно простой процесс для довольно стандартной настройки, но, видимо, это сложно.

Есть идеи, что я делаю не так?

Хорошо, после долгого сна, проверки, кофе и повторной проверки, я думаю, что нашел решение.

DNS.

На DNS-сервере контроллера домена было несколько устаревших записей A, из-за которых Node-B не понимал, что именно указывает. Я исправил DNS, чтобы он отражал реальность, и нажал «вперед», и… Это сработало! Ну, на самом деле он приостановлен, потому что у меня закончилось дисковое пространство на узле B, но в остальном все выглядит хорошо.