Sprache
Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der Datenbankspiegelung in SQL Server können Sie eine Kopie oder Spiegelung einer SQL Server Datenbank auf einem Standbyserver beibehalten. Die Spiegelung stellt sicher, dass jederzeit zwei getrennte Kopien der Daten vorhanden sind, was Hochverfügbarkeit und vollständige Datenredundanz gewährleistet. Nachdem Sie die Datenbankspiegelung für eine SQL Server-Datenbank konfiguriert haben, unterstützt Microsoft.Data.SqlClient sie ohne zusätzlichen Clientcode. Sie können auch einen Failoverpartnerserver in der ConnectionString Eigenschaft angeben.
Die folgende Abfolge von Ereignissen tritt auf, wenn das SqlConnection-Objekt auf eine Datenbank abzielt, die für die Spiegelung konfiguriert ist:
Die Clientanwendung verbindet sich erfolgreich mit der Prinzipaldatenbank, und der Server sendet den Namen des Partnerservers zurück, der dann auf dem Client zwischengespeichert wird.
Wenn der Server mit der Prinzipaldatenbank ausfällt oder die Verbindung unterbrochen wird, gehen Verbindung und Transaktionsstatus verloren. Die Clientanwendung versucht, wieder eine Verbindung mit der Prinzipaldatenbank herzustellen, und schlägt fehl.
Die Clientanwendung versucht dann auf transparente Weise, eine Verbindung mit der Spiegeldatenbank auf dem Partnerserver herzustellen. Bei Erfolg wird die Verbindung zur Spiegeldatenbank umgeleitet, die dann zur neuen Prinzipaldatenbank wird.
Angeben des Failoverpartners in der Verbindungszeichenfolge
Wenn Sie den Namen eines Failoverpartnerservers in der Verbindungszeichenfolge angeben, versucht der Client transparent eine Verbindung mit dem Failoverpartner herzustellen, sofern die Prinzipaldatenbank beim ersten Verbindungsversuch der Clientanwendung nicht verfügbar ist.
";Failover Partner=PartnerServerName"
Wenn Sie den Namen des Failoverpartnerservers weglassen und die Prinzipaldatenbank nicht verfügbar ist, wenn die Clientanwendung zuerst eine Verbindung herstellt, gibt der Anbieter SqlException aus.
Wenn SqlConnection erfolgreich geöffnet wird, gibt der Server den Namen des Failoverpartners zurück. Dieser Name ersetzt den Wert im Verbindungszeichenfolge.
Hinweis
In Szenarien mit Datenbankspiegelung müssen Sie den Ausgangskatalog oder Datenbanknamen explizit in der Verbindungszeichenfolge angeben. Wenn der Client Failover-Informationen zu einer Verbindung empfängt, für die nicht explizit ein Anfangskatalog oder eine Anfangsdatenbank angegeben wurde, werden die Failover-Informationen nicht zwischengespeichert und die Anwendung versucht auch nicht, bei einem Ausfall des Prinzipalservers einen Failover durchzuführen. Wenn eine Verbindungszeichenfolge einen Wert für den Failoverpartner, aber keinen Wert für den Ausgangskatalog oder die Datenbank hat, wird eine InvalidArgumentException ausgelöst.
Abrufen des Namens des aktuellen Servers
Verwenden Sie nach einem Failover die DataSource Eigenschaft, um den Namen des verbundenen Servers abzurufen. Im folgenden Codefragment wird davon ausgegangen, dass die Verbindungsvariable auf eine geöffnete Instanz der SqlConnection Klasse verweist.
Wenn ein Failoverereignis auftritt und die Verbindung zum Spiegelserver gewechselt wird, wird die DataSource Eigenschaft aktualisiert, um den Spiegelnamen widerzuspiegeln.
Dim activeServer As String = connection.DataSource
string activeServer = connection.DataSource;
Spiegelungsverhalten bei "SqlClient"
Der Client versucht stets, eine Verbindung mit dem aktuellen Prinzipalserver herzustellen. Bei Misserfolg wird der Failoverpartner versucht. Wenn die Spiegeldatenbank bereits auf die Prinzipalrolle auf dem Partnerserver umgestellt wurde, ist die Verbindung erfolgreich. Die neue Zuordnung zwischen Prinzipal und Spiegel wird an den Client gesendet und für die Lebensdauer des Aufrufs von AppDomain zwischengespeichert. Sie wird nicht im permanenten Speicher gespeichert und steht für nachfolgende Verbindungen in einem anderen AppDomain Oder Prozess nicht zur Verfügung. Es ist jedoch für nachfolgende Verbindungen innerhalb desselben AppDomainverfügbar. Beachten Sie, dass ein anderer AppDomain Prozess, der auf demselben oder einem anderen Computer ausgeführt wird, immer einen eigenen Verbindungspool hat und dass diese Verbindungen nicht zurückgesetzt werden. Wenn in diesem Fall die primäre Datenbank ausfällt, wird jeder Prozess bzw. jede AppDomain einmal mit einem Fehler ausgeführt, und der Pool wird automatisch gelöscht.
Hinweis
Die Unterstützung der Spiegelung auf dem Server wird datenbankbezogen konfiguriert. Wenn Datenbearbeitungsvorgänge auf andere, nicht im Prinzipal-/Spiegelsatz enthaltene Datenbanken angewendet werden, entweder durch Verwendung mehrteiliger Namen oder durch Änderung der aktuellen Datenbank, werden die Änderungen an diesen anderen Datenbanken bei einem Fehler nicht weitergegeben. Wenn Daten in einer nicht gespiegelten Datenbank geändert werden, wird kein Fehler ausgegeben. Der Entwickler muss die möglichen Auswirkungen solcher Vorgänge einschätzen.
Ressourcen zur Datenbankspiegelung
Die Begriffsdokumentation und Informationen zum Konfigurieren, Bereitstellen und Verwalten der Spiegelung finden Sie in den folgenden Ressourcen in der SQL Server-Dokumentation.
| Ressource | BESCHREIBUNG |
|---|---|
| Datenbankspiegelung | Beschreibt, wie Spiegelung in SQL Server eingerichtet und konfiguriert wird. |