Ich habe SQL Mirroring-Setup auf zwei SQL 2012 Standard Edition-Servern mit einem Zeugenserver. Die Spiegelung funktioniert hervorragend auf der SQL-Seite der Dinge, ich kann Failover zu jedem einzelnen gut gehen. Das Problem ist, dass meine .Net-Anwendungen nicht auf den Failover-Partner zugreifen, wenn ich manuell auf den Spiegelserver failover, sie versuchen, immer noch auf den primären Server zugreifen und schließlich Timeout. Ich kann die Verbindungsversuche auf dem primären Server im SQL-Fehlerprotokoll sehen; Der Fehler lautet "Fehler bei der explizit angegebenen Datenbank", was sinnvoll ist, da es sich jetzt um den Spiegel- und den Wiederherstellungsstatus handelt..Net-Anwendung, die keinen Failover-Partner in Verbindungszeichenfolge verwendet
Hier ist meine Verbindungszeichenfolge:
connectionString="Server=x.x.x.x,[port];Failover Partner=x.x.x.x,[port];Database=[dbname];Network=dbmssocn;Integrated Security=SSPI;Connection Timeout=60;MultipleActiveResultSets=true"
ich folgende Dinge ausprobiert habe:
- meine Verbindung Timeout
- Set Pooling = False
- Mapped IP-Adressen in der Erhöhung Windows-Hosts-Datei
Wenn ich den App-Pool direkt nach dem Failover wiederverwende, funktioniert alles super und ich kann sogar einen Failover zurück zur primären Instanz durchführen, und alles ist gut. Wenn ich den App-Pool nach einem Failover manuell wiederverwenden muss, wird der gesamte Zweck von Hochverfügbarkeit/automatischem Failover jedoch nicht erreicht.
Was fehlt mir hier?
EDIT: Ich brauche im Grunde Szenario zu lösen 5 und 6 auf dieser Seite: https://blogs.msdn.microsoft.com/spike/2010/12/08/clarification-on-the-failover-partner-in-the-connectionstring-in-database-mirror-setup/