Я настроил зеркальное отражение базы данных и затем использовал это 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 сделает работу для меня. Таким образом, что я должен сделать теперь?
К счастью, я решил эту проблему. Все, что мне нужно сделать, это вызвать метод ClearPool:
SqlConnection.ClearPool(conn);
Этот метод очистит пул соединений. Тогда проблема ушла. Я так доволен этим.
Спасибо вам всем за вашу поддержку. : D
Я не эксперт в вопросах .net, но вам нужен собственный клиент SQL (SQLNCLI) для обработки аварийного переключения. «ado.net» может быть SQLOLEDB
По крайней мере, до Windows Server 2003 он не установлен по умолчанию. Это либо автономный инструмент, либо часть клиентских инструментов SQL, поэтому я подозреваю, что вы используете SQLOLEDB
После завершения работы главного сервера вы проверили, действительно ли аварийное переключение стало главным? Если на сервере Sql не было автоматического переключения при отказе, то зеркало все равно остается зеркалом.