Как подключиться к зеркальному SQL Server после отработки отказа? - PullRequest
7 голосов
/ 04 февраля 2010

Я настроил зеркальное отображение базы данных, а затем использовал connectionstring для подключения к нему:

    Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
    Integrated Security=True;

После добавления некоторых данных в базу данных я отключаю основной сервер, чтобы зеркальный сервер стал основным сервером. Я снова открываю соединение, получаю эту ошибку:

    System.Data.SqlClient.SqlException: A transport-level error has 
occurred when sending the request to the server. (provider: Shared Memory 
Provider, error: 0 - No process is on the other end of the pipe.)

Я думал, что если в строке подключения указан Failover Partner, ADO.NET сделает всю работу за меня. Так что мне теперь делать?

Этот вопрос актуален. Большое спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 04 февраля 2010

К счастью, я исправил эту проблему. Все, что мне нужно сделать, это вызвать метод ClearPool:

SqlConnection.ClearPool(conn);

Этот метод очистит пул соединений. Тогда проблема ушла. Я так счастлив с этим.

Спасибо всем вам за поддержку. : D

2 голосов
/ 04 февраля 2010

Я не специалист по .net, но вам нужен собственный клиент SQL (SQLNCLI) для обработки отработки отказа. "ado.net" может быть SQLOLEDB

До Windows Server 2003 по крайней мере он не установлен по умолчанию. Он либо автономен, либо является частью инструментов клиента SQL, поэтому я подозреваю, что вы используете SQLOLEDB

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

Мы обнаружили, что это произойдет, если у вас не будет достаточно большого тайм-аута.

https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o

0 голосов
/ 04 февраля 2010

После того, как вы отключили основной сервер, вы убедились, что резервное копирование фактически стало основным? Если на сервере Sql не было автоматического перехода на другой ресурс при сбое, то зеркало все равно является зеркалом.

...