Есть ли способ обеспечить 100% бесперебойную работу SQL Server 2008 R2?
По моему опыту, время простоя для различных методов репликации составляет:
И все эти решения включают в себя отбрасывание всех подключений из источника, поэтому, если время простоя слишком велико или шлюз приложения не поддерживает повторное подключение в середине задачи, вам не повезло.
Единственный способ обойти это - абстрагироваться от уровня кластеризации (путем виртуализации и последующего включения VMWare FT. Уф. В любом случае удачи, чтобы это работало на четырехпроцессорной 32-ядерной системе).
Есть ли другой способ обеспечить 100% бесперебойную работу SQL Server?
Нет. 100% невозможно с SQL Server. Несколько девяток, да.
Что касается кластеризации: только одна отдельная установка SQL Server может «владеть» MDF в любой момент времени. Итак, у вас есть цикл отката вперед / назад, когда другой экземпляр берет на себя управление и соединения прерываются. Это определяет, как долго кластер должен отработать отказ: обычно это может быть менее 10 секунд.
У вас такая же проблема с зеркалированием: всегда есть только один владеющий / контролирующий экземпляр SQL Server
Вы можете закодировать клиент, чтобы повторить попытку при тайм-аутах / взаимоблокировках, тогда это уменьшит время переключения при отказе. Не все согласны с этим, но иногда мы сочли это полезным.
Когда у нас было аварийное переключение (коснитесь дерева, а не в течение года или около того), тогда клиенты без сохранения состояния (например, веб-службы) не заметят этого, если только один вызов не завершится неудачно в неправильное время. См. Мое предыдущее заявление.