Frage

richte ich eine Datenbank-Spiegelung und verwendet dann diese connectionstring um eine Verbindung herzustellen:

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

Nachdem sie einige Daten in der Datenbank hinzufügen, ich Abschaltung der Hauptserver, so dass der Spiegelserver wird der Prinzipalserver. Ich öffne die Verbindung wieder, ein diesen Fehler:

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

Ich dachte, dass mit Failover Partner in der Verbindungszeichenfolge angegeben, ADO.NET die Arbeit für mich tun würde. Also, was soll ich jetzt tun?

War es hilfreich?

Lösung

Zum Glück fixierte ich dieses Problem. Alles, was ich tun müssen, Clear Methode ruft:

SqlConnection.ClearPool(conn);

Diese Methode wird die Verbindung Pool löschen. Dann ist das Problem verschwunden. Ich bin so glücklich mit ihm.

Danke, sie alle, für Ihre Unterstützung. : D

Andere Tipps

Ich bin kein Experte über .net Sachen, aber Sie müssen die SQL Native Client (SQLNCLI) Failover zu handhaben. "Ado.net" kann SQLOLEDB sein

Bis zu Windows Server 2003 zumindest ist es nicht standardmäßig installiert. Es ist entweder eigenständig oder Teil von SQL-Client-Tools, so dass ich vermute, Sie verwenden SQLOLEDB

Nachdem Sie den Hauptheruntergefahren, habe überprüfen Sie, dass die Failover wurde tatsächlich der Haupt? Wenn es nicht ein automatisches Failover auf dem SQL Server hat, dann sind Sie der Spiegel ist immer noch ein Spiegel.

Wir fanden, dass dies passieren würde, wenn Sie eine ausreichend große Timeout gesetzt haben abgepfiffen.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top