У нас есть зеркальное отображение базы данных, настроенное как «высокая безопасность без автоматического переключения на другой ресурс» для 23 баз данных. Оба партнера содержат основную и зеркальную базы данных. Я создал два сценария, которые выполняли бы аварийное переключение либо зеркального, либо основного с плавным или принудительным переключением.
Как мне проверить базы данных, чтобы убедиться, что они подключены к сети и что трафик перенаправляется? Я пытаюсь сохранить весь этот T-SQL и, надеюсь, смогу просто добавить что-нибудь к уже созданным мной сценариям, что запускает проверку.
Если вы пытаетесь сделать это на T-SQL, это означает подключение через один SQL Server. Я предполагаю, что вы запускаете набор сценариев мониторинга с другого третьего сервера, чтобы следить за двумя другими. В этом случае вы можете настроить пару связанных серверов или использовать команду OPENROWSET для запроса сервера на лету. Попробуйте один сервер, затем попробуйте другой, и если один подключается, вы в деле.
С этим есть пара проблем - во-первых, ваши сценарии мониторинга будут зависать на 30 секунд, когда основной сервер не работает. Они будут ждать, пока истечет время ожидания, и в течение этого времени вы не сможете выполнить мониторинг. Из-за этого я бы рекомендовал использовать для мониторинга что-то другое, кроме T-SQL. Существует множество многопоточных систем оповещения, которые вы можете использовать, например ServersAlive, которые будут проверять сразу несколько серверов за вас.
Вторая проблема заключается в том, что вы сказали: «трафик перенаправляется». Я хочу убедиться, что вы понимаете, как работает зеркалирование - оно не перенаправляет запросы автоматически. Мозг зеркалирования живет в строке подключения клиента, которая должна иметь в строке имена как первичного, так и вторичного сервера. От клиента зависит, переходит ли трафик на второй сервер или нет, и вы не можете контролировать каждого клиента из центральной точки. (Что ж, вы можете запросить DMV на втором сервере и убедиться, что каждый ожидаемый клиент подключается, но это делает ставку на каждого клиента, которому необходимо подключиться одновременно.)