Freigeben über


Interoperabilität von Features mit SQL Server FCI und DNN

Gilt für:SQL Server auf Azure-VMs

Tipp

Es gibt viele Methoden zum Bereitstellen einer Verfügbarkeitsgruppe. Vereinfachen Sie Ihre Bereitstellung, indem Sie Ihre SQL Server-VMs in mehreren Subnetzen innerhalb desselben virtuellen Azure-Netzwerks erstellen. So benötigen Sie weder eine Azure Load Balancer-Instanz noch einen verteilten Netzwerknamen (DNN) für Ihre Always On-Verfügbarkeitsgruppe. Wenn Sie Ihre Verfügbarkeitsgruppe bereits in einem einzelnen Subnetz erstellt haben, können Sie sie in eine Umgebung mit mehreren Subnetzen migrieren.

Es gibt bestimmte SQL Server-Features, für die ein hartcodierter virtueller Netzwerkname (VNN) erforderlich ist. Wenn Sie beispielsweise die DNN-Ressource (Distributed Network Name) mit Ihrer Failoverclusterinstanz und SQL Server auf Azure-VMs verwenden, gibt es einige Überlegungen.

In diesem Artikel erfahren Sie, wie Sie den Netzwerkalias bei Verwendung der DNN-Ressource konfigurieren und welche SQL Server-Features weitere Überlegungen erfordern.

Erstellen eines Netzwerkalias (FCI)

Bei einigen serverseitigen Komponenten sind ein hartcodierter VNN-Wert und ein Netzwerkalias, der den VNN dem DNN-DNS-Namen zuordnet, erforderlich, damit sie ordnungsgemäß funktionieren.

Führen Sie die Schritte unter Erstellen oder Löschen eines Serveralias für die Verwendung durch einen Client aus, um einen Alias zu erstellen, der den VNN dem DNN-DNS-Namen zuordnet.

Für eine Standardinstanz können Sie den VNN direkt dem DNN-DNS-Namen zuordnen, sodass VNN = DNN-DNS-Name.

  • Wenn der VNN beispielsweise FCI1 ist, der Instanzname MSSQLSERVER und der DNN FCI1DNN (Clients haben zuvor eine Verbindung mit FCI hergestellt und stellen nun eine Verbindung mit FCI1DNN her), ordnen Sie den VNN FCI1 dem DNN FCI1DNN zu.

Bei benannten Instanzen sollte die Zuordnung des Netzwerkalias für die gesamte Instanz erfolgen, sodass VNN\Instance = DNN\Instance.

  • Wenn der VNN beispielsweise FCI1 ist, der Instanzname instA und der DNN FCI1DNN (Clients haben zuvor eine Verbindung mit FCI1\instA hergestellt und stellen nun eine Verbindung mit FCI1DNN\instaA her), ordnen Sie den VNN FCI1\instaA dem DNN FCI1DNN\instaA zu.

Clienttreiber

Bei ODBC-, OLEDB-, ADO.NET-, JDBC-, PHP- und Node.js-Treibern müssen Benutzer den DNN-DNS-Namen explizit als Servernamen in der Verbindungszeichenfolge angeben. Fügen Sie MultiSubnetFailover=True zur Verbindungszeichenfolge hinzu, wenn der SQL-Client dies unterstützt, um bei einem Failover eine schnelle Konnektivität sicherzustellen.

Tools

Benutzer von SQL Server Management Studio, sqlcmd, der MSSQL-Erweiterung für Visual Studio Code und SQL Server Data Tools müssen den DNN-DNS-Namen explizit als Servernamen in der Verbindungszeichenfolge angeben.

Verfügbarkeitsgruppen und FCI

Sie können eine Always On-Verfügbarkeitsgruppe konfigurieren, indem Sie eine Failoverclusterinstanz als eines der Replikate verwenden. Bei dieser Konfiguration muss die Spiegelungsendpunkt-URL für das FCI-Replikat den FCI-DNN verwenden. Wenn die FCI als schreibgeschütztes Replikat verwendet wird, muss für das schreibgeschützte Routing zum FCI-Replikat ebenfalls der FCI-DNN verwendet werden.

Das Format für den Spiegelungsendpunkt ist: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Wenn der DNN-DNS-Name beispielsweise dnnlsnr ist und 5022 der Port des Spiegelungsendpunkts der FCI ist, sieht der Transact-SQL-Codeausschnitt (T-SQL) zum Erstellen der Endpunkt-URL wie folgt aus:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Das Format für die URL für das schreibgeschützte Routing ist dann: TCP://<DNN DNS name>:<SQL Server instance port>.

Wenn der DNN-DNS-Name beispielsweise dnnlsnr ist und 1444 der Port ist, der von der schreibgeschützten Ziel-SQL Server-FCI verwendet wird, sieht der T-SQL-Codeausschnitt zum Erstellen der URL für das schreibgeschützte Routing wie folgt aus:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Sie können den Port in der URL weglassen, wenn er der Standardport 1433 ist. Bei einer benannten Instanz konfigurieren Sie einen statischen Port für die benannte Instanz und geben diesen in der URL für das schreibgeschützte Routing an.

Replikation

Die Replikation verfügt über drei Komponenten: Verleger, Verteiler und Abonnent. Jede dieser Komponenten kann eine Failoverclusterinstanz sein. Da der FCI-VNN häufig in der Replikationskonfiguration verwendet wird (sowohl explizit als auch implizit), ist möglicherweise ein Netzwerkalias erforderlich, der den VNN dem DNN zuordnet, damit die Replikation funktioniert.

Verwenden Sie den VNN bei der Replikation weiterhin als FCI-Namen, erstellen Sie jedoch in den folgenden Remotesituationen vor der Konfiguration der Replikation einen Netzwerkalias:

Replikationskomponente (FCI mit DNN) Remotekomponente Netzwerk-Alias-Zuordnung Server mit Netzwerkplan
Herausgeber Verteiler Verleger-VNN zu Verleger-DNN Verteiler
Verteiler Subscriber Verteiler-VNN zu Verteiler-DNN Subscriber
Verteiler Herausgeber Verteiler-VNN zu Verteiler-DNN Herausgeber
Subscriber Verteiler Abonnenten-VNN zu Abonnenten-DNN Verteiler

Angenommen, Sie verfügen beispielsweise über einen Herausgeber, der als FCI mit DNN in einer Replikationstopologie konfiguriert ist, und einen Remoteverteiler. Erstellen Sie in diesem Fall einen Netzwerkalias auf dem Verteilerserver, um den Verleger-VNN dem Verleger-DNN zuzuordnen:

Screenshot der Konfiguration des DNN-DNS-Namens als Netzwerkalias mit SQL Server Configuration Manager.

Verwenden Sie bei einer benannten Instanz den vollständigen Instanznamen, wie in der folgenden Beispielabbildung zu sehen:

Screenshot des vollständigen Instanznamens beim Konfigurieren eines Netzwerkalias für eine benannte Instanz.

Datenbankspiegelung

Sie können für die Datenbankspiegelung jeden der Datenbank-Spiegelungspartner als FCI konfigurieren. Konfigurieren Sie sie mit Transact-SQL (T-SQL) statt über die SQL Server Management Studio-GUI. Durch die Verwendung von T-SQL wird sichergestellt, dass der Datenbankspiegelungs-Endpunkt mit dem DNN statt mit dem VNN erstellt wird.

Wenn der DNN-DNS-Name beispielsweise dnnlsnr ist und der Datenbankspiegelungs-Endpunkt 7022, wird mit dem folgenden T-SQL-Codeausschnitt der Datenbank-Spiegelungspartner konfiguriert:

ALTER DATABASE AdventureWorks
    SET PARTNER = 'TCP://dnnlsnr:7022';

Für den Clientzugriff kann die Eigenschaft Failoverpartner das Datenbankspiegelungs-Failover verarbeiten, aber nicht das FCI-Failover.

MSDTC

Die FCI kann an vom Microsoft Distributed Transaction Coordinator (MS DTC) koordinierten verteilten Transaktionen teilnehmen. Der gruppierte MS DTC und der lokale MS DTC werden mit FCI-DNN unterstützt. In Azure ist Azure Load Balancer für die Bereitstellung eines gruppierten MS DTC erforderlich.

Tipp

Der im FCI definierte DNN ersetzt nicht die Azure Load Balancer-Anforderung für das gruppierte MSDTC.

FILESTREAM

Obwohl FILESTREAM für eine Datenbank in einer FCI unterstützt wird, wird der Zugriff auf FILESTREAM oder FileTable mithilfe von Dateisystem-APIs mit DNN nicht unterstützt.

Verbindungsserver

Die Verwendung eines Verbindungsservers mit einem FCI-DNN wird unterstützt. Verwenden Sie entweder den DNN direkt für die Konfiguration eines Verbindungsservers, oder verwenden Sie einen Netzwerkalias, um den VNN dem DNN zuzuordnen.

Verwenden Sie z. B. den folgenden Transact-SQL-Befehl (T-SQL), um einen Verbindungsserver mit dem DNN-DNS-Namen dnnlsnr für die benannte Instanz insta1 zu erstellen:

USE master;
GO

EXECUTE master.dbo.sp_addlinkedserver
    @server = N'dnnlsnr\inst1',
    @srvproduct = N'SQL Server';

Alternativ können Sie den verknüpften Server stattdessen mithilfe des virtuellen Netzwerknamens (Virtual Network Name, VNN) erstellen. Anschließend müssen Sie einen Netzwerkalias definieren, um den VNN dem DNN zuzuordnen.

Verwenden Sie z B. für den Instanznamen insta1, den VNN vnnname und den DNN dnnlsnr den folgenden Transact-SQL-Befehl (T-SQL), um einen Verbindungsserver mit dem VNN zu erstellen:

USE master;
GO

EXECUTE master.dbo.sp_addlinkedserver
    @server = N'vnnname\inst1',
    @srvproduct = N'SQL Server';

Erstellen Sie dann einen Netzwerkalias, um vnnname\insta1dnnlsnr\insta1 zuzuordnen.

Häufig gestellte Fragen

Welche SQL Server-Version bietet DNN-Unterstützung?

SQL Server 2019 CU2 und höhere Versionen.

Wie lange ist die erwartete Failoverzeit bei der Verwendung eines DNN?

Bei DNN ist die Failoverzeit nur die FCI-Failoverzeit, ohne dass Zeit hinzugefügt wird (z. B. Probezeit, wenn Sie Azure Load Balancer verwenden).

Gibt es eine Versionsanforderung für SQL-Clients für die Unterstützung eines DNN mit OLEDB und ODBC?

Für DNNs wird die Unterstützung mit der Verbindungszeichenfolge MultiSubnetFailover=True empfohlen. Diese steht ab SQL Server 2012 (11.x) zur Verfügung.

Sind in SQL Server für die Verwendung eines DNN Konfigurationsänderungen erforderlich?

Für die Verwendung eines DNN sind keine Konfigurationsänderungen in SQL Server erforderlich. Bei einigen SQL Server-Features müssen jedoch möglicherweise weitere Aspekte berücksichtigt werden.

Unterstützen DNNs Cluster mit mehreren Subnetzen?

Ja. Der Cluster verknüpft den DNN im DNS mit den physischen IP-Adressen aller Knoten im Cluster unabhängig vom Subnetz. Der SQL-Client probiert unabhängig vom Subnetz alle IP-Adressen des DNS-Namens aus.