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.
Der Microsoft ODBC-Treiber für SQL Server unterstützt Always On-Verfügbarkeitsgruppen. Weitere Informationen zu Always On-Verfügbarkeitsgruppen finden Sie unter:
Referenz für die Erstellung und Konfiguration von Always On-Verfügbarkeitsgruppen
Failovercluster und Always On-Verfügbarkeitsgruppen (SQL Server)
Sie können den Verfügbarkeitsgruppenlistener einer bestimmten Verfügbarkeitsgruppe in der Verbindungszeichenfolge angeben. Wenn eine ODBC-Anwendung eine Verbindung mit einer Datenbank in einer Verfügbarkeitsgruppe herstellt, bei der ein Failover erfolgt, wird die ursprüngliche Verbindung unterbrochen. Die Anwendung muss eine neue Verbindung herstellen, um nach dem Failover weiterarbeiten zu können.
Ohne MultiSubnetFailover=Yes kann der Legacy-Multi-IP-Fallback des Treibers langsam sein, wenn die zuerst aufgelöste IP-Adresse nicht erreichbar ist. Weitere Informationen zum Windows-Fallback-Verhalten finden Sie unter Transparente Netzwerk-IP-Auflösung mit dem ODBC-Treiber.
Wenn Sie unter Verwendung von MultiSubnetFailover=Yes eine Verbindung mit einem Verfügbarkeitsgruppen-Listener herstellen, versucht der Treiber, Verbindungen mit allen aufgelösten IP-Adressen parallel herzustellen. Falls ein Verbindungsversuch erfolgreich war, bricht der Treiber alle weiteren laufenden Verbindungsversuche ab.
Note
Da eine Verbindung aufgrund eines Failovers in einer Verfügbarkeitsgruppe fehlschlagen kann, sollten Sie eine Logik für erneute Verbindungsversuche implementieren. Wiederholen Sie die fehlgeschlagene Verbindung, bis sie wiederhergestellt ist. Die Erhöhung des Verbindungstimeouts sowie die Implementierung einer Verbindungswiederholungslogik erhöhen die Chance auf die Verbindungsherstellung mit einer Verfügbarkeitsgruppe.
Mit MultiSubnetFailover verbinden
Legen Sie MultiSubnetFailover=Yes fest, wenn das Ziel eine Azure SQL-Datenbank, eine Azure SQL Managed Instance, eine SQL-Datenbank in Microsoft Fabric, ein Verfügbarkeitsgruppenlistener oder eine Failoverclusterinstanz ist.
MultiSubnetFailover ermöglicht eine schnellere Failover-Wiederherstellung, indem der Treiber versucht, TCP-Verbindungen parallel zu allen aufgelösten IP-Adressen durchzuführen und die erste erfolgreiche Verbindung zu verwenden.
Mit dieser Verbindungseigenschaft wird auch die Failoverzeit für Always On-Topologien mit einem oder mehreren Subnetzen erheblich reduziert. Während eines Multisubnetz-Failovers versucht der Client, Verbindungen parallel herzustellen. Während eines Subnetzfailovers versucht der Treiber energisch, die TCP-Verbindung wiederherzustellen.
Die Verbindungseigenschaft MultiSubnetFailover zeigt an, dass die Anwendung gegen eine Topologie bereitgestellt wird, bei der der Ziel-Hostname auf mehr als einen Endpunkt aufgelöst werden kann. Der Treiber versucht, sich mit der Datenbank auf der primären SQL Server-Instanz zu verbinden, indem er versucht, sich mit allen IP-Adressen zu verbinden.
Wenn Sie sich mit MultiSubnetFailover=Yesverbinden, versucht der Client die TCP-Verbindungsversuche schneller als die Standard-TCP-Wiederholungsintervalle des Betriebssystems.
MultiSubnetFailover=Yes ermöglicht eine schnellere Verbindungswiederherstellung nach dem Failover einer Always On-Verfügbarkeitsgruppe oder einer Always On-Failoverclusterinstanz.
MultiSubnetFailover=Yes gilt sowohl für Verfügbarkeitsgruppen und Failoverclusterinstanzen mit nur einem Subnetz als auch mit mehreren Subnetzen.
MultiSubnetFailover=Yes ist bei Zielen mit nur einer IP-Adresse sicher. Wenn DNS auf eine Adresse aufgelöst wird, entstehen keine weiteren parallelen Verbindungsversuche. MultiSubnetFailover=Yes
Recommendations
Wenn Sie sich mit einem hochverfügbaren oder Multi-Endpunkt-Ziel verbinden (Azure SQL-Datenbank, Azure SQL Managed Instance, SQL-Datenbank in Microsoft Fabric, ein Availability Group Listener oder eine Failover-Cluster-Instanz):
Geben Sie
MultiSubnetFailover=Yesan. Das ist die empfohlene Einstellung für diese Ziele, und es ist sicher, sie aktiviert zu lassen, wenn das Ziel auf eine einzige IP-Adresse aufgelöst wird, weil der Treiber dann einen einzigen Verbindungsversuch unternimmt.Geben Sie in der Verbindungszeichenfolge den Verfügbarkeitsgruppenlistener der Verfügbarkeitsgruppe als Server an.
Du kannst es nicht über ein anderes Protokoll als TCP verwenden
MultiSubnetFailover=Yes.Sie können keine Verbindung mit einer SQL Server-Instanz herstellen, die mit mehr als 64 IP-Adressen konfiguriert ist.
Sie können
MultiSubnetFailover=Yesnicht mit der Datenbankspiegelung verwenden. Der Treiber gibt einen Fehler zurück, wenn die VerbindungszeichenfolgeFailover_Partnerangibt, und auch wenn der Server meldet, dass die Datenbank gespiegelt ist. Datenbankspiegelung ist in allen unterstützten Versionen von SQL Server veraltet. Verwenden Sie stattdessen Always On-Verfügbarkeitsgruppen.Verwenden Sie SQL Server- oder Kerberos-Authentifizierung mit
MultiSubnetFailover=Yes, ohne das Verhalten der Anwendung zu beeinträchtigen.Erhöhen Sie
loginTimeout, um der Failover-Zeit Rechnung zu tragen und die Anzahl der Verbindungswiederholungsversuche der Anwendung zu reduzieren. Für Azure SQL-Datenbank serverlos mit aktivierter automatischer Pause verwenden Sie mindestens 60 Sekunden. Eine automatisch pausierte Datenbank wird beim ersten Verbindungsversuch fortgesetzt, und dieser Versuch kann mit dem Fehler 40613 fehlschlagen, während die Datenbank fortgesetzt wird, sodass die Anwendung einen neuen Versuch machen muss. Weitere Informationen finden Sie unter Automatisches Anhalten und Fortsetzen im Tarif für serverloses Computing für Azure SQL-Datenbank.Verteilte Transaktionen werden nicht unterstützt.
Wenn das schreibgeschützte Routing nicht aktiviert ist, kann in den folgenden Situationen keine Verbindung mit einem sekundären Replikatspeicherort in einer Verfügbarkeitsgruppe hergestellt werden:
Wenn der sekundäre Replikatspeicherort nicht zum Akzeptieren von Verbindungen konfiguriert ist
Wenn eine Anwendung
ApplicationIntent=ReadWriteverwendet und der sekundäre Replikatspeicherort für schreibgeschützten Zugriff konfiguriert ist
Es kann keine Verbindung hergestellt werden, wenn ein primäres Replikat so konfiguriert ist, dass schreibgeschützte Workloads abgelehnt werden, und die Verbindungszeichenfolge ApplicationIntent=ReadOnly enthält.
Angeben der Anwendungsabsicht
Sie können das Schlüsselwort ApplicationIntent in Ihrer Verbindungszeichenfolge angeben. Es können die Werte ReadWrite (Standard) und ReadOnly zugewiesen werden.
Wenn Sie ApplicationIntent=ReadOnly festlegen, fordert der Client bei der Verbindungsherstellung eine Leseworkload an. Der Server erzwingt die Intention beim Verbindungsaufbau und während einer Datenbankanweisung vom Typ USE.
Das Schlüsselwort ApplicationIntent funktioniert nicht mit schreibgeschützten Legacy-Datenbanken.
Ziele von ReadOnly
Wenn eine Verbindung ReadOnly auswählt, wird sie einer der folgenden speziellen Konfigurationen zugewiesen, die für die Datenbank ggf. vorhanden sind:
Always On: Eine Datenbank kann Leseworkloads in der Verfügbarkeitsgruppen-Zieldatenbank zulassen bzw. nicht zulassen. Diese Auswahl wird über die
ALLOW_CONNECTIONS-Klausel der Transact-SQL-AnweisungenPRIMARY_ROLEundSECONDARY_ROLEgesteuert.
Wenn keins dieser speziellen Ziele verfügbar ist, erfolgt der Lesevorgang in der regulären Datenbank.
Das Schlüsselwort ApplicationIntent ermöglicht schreibgeschütztes Routing.
Schreibgeschütztes Routing
Read-Only Routing ist eine Funktion, die die Verfügbarkeit eines schreibgeschützten Replikats einer Datenbank ermöglicht. Zum Aktivieren des schreibgeschützten Routings gelten sämtliche der folgenden Voraussetzungen:
Sie müssen eine Verbindung mit einem Always On-Verfügbarkeitsgruppenlistener herstellen.
Das Schlüsselwort der
ApplicationIntent-Verbindungszeichenfolge muss aufReadOnlyfestgelegt werden.Der Datenbankadministrator muss die Verfügbarkeitsgruppe für das schreibgeschützte Routing konfigurieren.
Mehrere Verbindungen, für die jeweils das schreibgeschützte Routing verwendet wird, werden ggf. nicht alle mit demselben schreibgeschützten Replikat hergestellt. Änderungen in der Datenbanksynchronisierung oder Änderungen in der Routingkonfiguration des Servers können zu Clientverbindungen mit anderen schreibgeschützten Replikaten führen.
Sie können sicherstellen, dass für alle schreibgeschützten Anforderungen eine Verbindung mit demselben schreibgeschützten Replikat hergestellt wird, indem Sie keinen Verfügbarkeitsgruppenlistener an das Verbindungszeichenfolgen-Schlüsselwort Server übermitteln. Geben Sie stattdessen den Namen der schreibgeschützten Instanz an.
Das schreibgeschützte Routing kann ggf. länger als das Herstellen einer Verbindung mit der primären Instanz dauern. Dies liegt daran, dass das Read-Only-Routing zuerst eine Verbindung mit dem primären Replikat herstellt und dann nach dem besten verfügbaren lesbaren sekundären Replikat sucht. Da mehrere Schritte ausgeführt werden, sollten Sie das Timeout für login auf mindestens 30 Sekunden erhöhen.
ODBC-Syntax
Zwei ODBC-Verbindungszeichenfolgen-Schlüsselwörter unterstützen Always On-Verfügbarkeitsgruppen:
ApplicationIntentMultiSubnetFailover
Weitere Informationen zu ODBC-Verbindungszeichenfolgen-Schlüsselwörtern finden Sie unter Using Connection String Keywords with SQL Server Native Client.
Die entsprechende Verbindungsattribute sind die folgenden:
SQL_COPT_SS_APPLICATION_INTENTSQL_COPT_SS_MULTISUBNET_FAILOVER
Weitere Informationen zu den ODBC-Verbindungsattributen finden Sie unter SQLSetConnectAttr.
Eine ODBC-Anwendung, für die Always On-Verfügbarkeitsgruppen verwendet werden, kann eine von zwei Funktionen nutzen, um die Verbindung herzustellen:
| Function | Description |
|---|---|
| SQLConnect-Funktion |
SQLConnect unterstützt sowohl ApplicationIntent als auch MultiSubnetFailover über einen Datenquellennamen (DSN) oder ein Verbindungsattribut. |
| SQLDriverConnect-Funktion |
SQLDriverConnect unterstützt ApplicationIntent und MultiSubnetFailover per DSN, Verbindungszeichenfolgen-Schlüsselwort oder Verbindungsattribut. |