Поведение отказоустойчивого партнера для Sql ConnectionString с ConnectionTimeout - PullRequest
0 голосов
/ 28 июля 2011

Я использую .Net 4.0 и SqlConnection / SqlCommand для подключения к SQL Server 2008 R2 с настройкой зеркального отображения.ConnectionString указывает партнера по отказоустойчивости

Кто-нибудь может объяснить, как параметр ConnectionTimeout влияет на возможность переключения клиента на зеркало?Т.е. всегда ли он ожидает ConnectionTimeout, прежде чем перейти на сервер отработки отказа?Или отказоустойчивость становится первичной, что означает, что клиент немедленно переключится на подключение к отказоустойчивости без учета ConnectionTimeout?

Я прочитал статьи MSDN Зеркальное отображение базы данных в SQL Server и Создание начальногоСоединение с сеансом зеркального отображения базы данных , и они говорили о клиенте, автоматически подключающемся к зеркалу, когда основной сервер не работает, но будет ли указывать высокий ConnectionTimeout влиять на время, которое потребуется клиенту для подключения к отказоустойчивому серверу?

Я должен установить ConnectionTimeout для всех моих строк подключения как минимум 150 из-за известной ошибки в ADO.NET .И мы обеспокоены тем, что большой тайм-аут повлияет на способность приложений своевременно обрабатывать отработки отказа

Ответы [ 2 ]

2 голосов
/ 12 апреля 2012

Будьте осторожны, ваш тайм-аут должен быть достаточно большим, чтобы обработать тайм-аут tcp - другими словами, если ваше sql-соединение не будет ждать достаточно долго, оно не будет ждать, пока tcp-соединение не истечет, timeout, timeout, retry, прежде чем принять решениечто сервер мертв.Мы должны установить наш минимум на 60 секунд.

Я писал об этом подробнее здесь, https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o

1 голос
/ 29 июля 2011

Если основной сервер базы данных недоступен, ADO.Net немедленно попытается связаться с партнером по отказоустойчивости.Если основной сервер доступен, но запрашиваемая база данных находится в зеркальном состоянии, вызывающая сторона ADO.Net будет перенаправлена ​​на основной сервер (который может совпадать или не совпадать с партнером по отработке отказа строки подключения).Любая другая ситуация, которая подразумевает доступность первичной базы данных и сервера, будет ожидать тайм-аут или ошибки.

...