Como se conectar a espelhada SQL Server depois de failover?
-
18-09-2019 - |
Pergunta
Eu configurar um espelhamento de banco de dados e, em seguida, usou este connectionstring
se conectar a ele:
Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
Integrated Security=True;
Depois de adicionar alguns dados no banco de dados, eu desligar o servidor principal, de modo que o servidor espelho torna-se o servidor principal. Abro a conexão novamente, um obter este erro:
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.)
Eu pensei que com o Parceiro de Failover especificado na cadeia de ligação, ADO.NET iria fazer o trabalho para mim. Então o que eu devo fazer agora?
Solução
Felizmente, eu fixo este problema. Todos necessidade I a fazer é chamar o método ClearPool:
SqlConnection.ClearPool(conn);
Este método irá limpar o pool de conexão. Então, o problema se foi. Estou muito feliz com isso.
Obrigado, todos vocês, por seu apoio. : D
Outras dicas
Eu não sou um especialista sobre coisas .net, mas você precisa o cliente nativo SQL (SQLNCLI) para failover alça. "Ado.net" pode ser SQLOLEDB
Até o Windows Server 2003, pelo menos ele não está instalado por padrão. É independente ou parte de ferramentas de cliente SQL, então eu suspeito que você está usando SQLOLEDB
Depois de desligar o principal, que você verificar se o failover realmente se tornou o principal? Se ele não tem failover automático no SQL Server, então você o espelho ainda é um espelho.
Nós descobrimos que isso iria acontecer se você não tinha um grande conjunto de tempo limite suficiente.