Question

Je mis en place une base de données en miroir, puis utilisé ce connectionstring pour s'y connecter:

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

Après avoir ajouté des données dans la base de données, je arrêter le serveur principal, de sorte que le serveur miroir devient le serveur principal. J'ouvre à nouveau la connexion, une obtenir cette erreur:

    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.)

Je pensais que avec Failover Partner spécifié dans la chaîne de connexion, ADO.NET ferait le travail pour moi. Alors, que dois-je faire maintenant?

Était-ce utile?

La solution

Heureusement, je fixe ce problème. Tout ce que je dois faire APPELLE méthode ClearPool:

SqlConnection.ClearPool(conn);

Cette méthode effacera le pool de connexion. Ensuite, le problème a disparu. Je suis tellement content.

Je vous remercie, vous tous, pour votre soutien. : D

Autres conseils

Je ne suis pas un expert au sujet des choses .net, mais vous avez besoin du client natif SQL (SQLNCLI) pour gérer le basculement. "Ado.net" peut être SQLOLEDB

Jusqu'à Windows Server 2003 au moins il est pas installé par défaut. Il est autonome ou une partie des outils clients SQL, donc je suppose que vous utilisez SQLOLEDB

Après avoir arrêté le principal, avez-vous vérifié que le basculement est devenu en fait le principal? Si elle n'a pas eu le basculement automatique sur le serveur SQL, vous le miroir est toujours un miroir.

Nous avons constaté que cela se passerait-il si vous avez assez na pas grand ensemble de délai d'attente.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top