Funktionskompatibilitet med SQL Server FCI och DNN

Gäller för:SQL Server på en virtuell Azure-dator

Dricks

Det finns många metoder för att distribuera en tillgänglighetsgrupp. Förenkla distributionen och eliminera behovet av en Azure Load Balancer eller ett distribuerat nätverksnamn (DNN) för din AlwaysOn-tillgänglighetsgrupp genom att skapa dina virtuella SQL Server-datorer i flera undernät i samma virtuella Azure-nätverk. Om du redan har skapat tillgänglighetsgruppen i ett enda undernät kan du migrera den till en miljö med flera undernät.

Det finns vissa SQL Server-funktioner som förlitar sig på ett hårdkodat virtuellt nätverksnamn (VNN). När du använder DNN-resursen (distribuerat nätverksnamn) med din redundansklusterinstans och SQL Server på virtuella Azure-datorer finns det därför några ytterligare överväganden.

I den här artikeln får du lära dig hur du konfigurerar nätverksaliaset när du använder DNN-resursen, samt vilka SQL Server-funktioner som kräver ytterligare överväganden.

Skapa nätverksalias (FCI)

Vissa komponenter på serversidan förlitar sig på ett hårdkodat VNN-värde och kräver ett nätverksalias som mappar det virtuella nätverket till DNN DNS-namnet för att fungera korrekt. Följ stegen i Skapa ett serveralias för att skapa ett alias som mappar det virtuella nätverket till DNN DNS-namnet.

För en standardinstans kan du mappa det virtuella nätverket till DNN DNS-namnet direkt, så att VNN = DNN DNS-namn. Om VNN-namnet till exempel är FCI1, är MSSQLSERVERinstansnamnet , och DNN är (klienter som tidigare var FCI1DNN anslutna till FCI, och nu ansluter de till FCI1DNN) mappar sedan VNN FCI1 till DNN FCI1DNN.

För en namngiven instans bör nätverksaliasmappningen göras för den fullständiga instansen, så att VNN\Instance = DNN\Instance. Om VNN-namnet till exempel är FCI1, är instAinstansnamnet , och DNN är (klienter som tidigare var FCI1DNN anslutna till FCI1\instA, och nu ansluter de till FCI1DNN\instaA) mappar sedan VNN FCI1\instaA till DNN FCI1DNN\instaA.

Klientdrivrutiner

För drivrutinerna ODBC, OLEDB, ADO.NET, JDBC, PHP och Node.js måste användarna uttryckligen ange DNN DNS-namnet som servernamn i anslutningssträng. För att säkerställa snabb anslutning vid redundans lägger du till MultiSubnetFailover=True i anslutningssträng om SQL-klienten stöder det.

Verktyg

Användare av SQL Server Management Studio, sqlcmd, Azure Data Studio och SQL Server Data Tools måste uttryckligen ange DNN DNS-namnet som servernamn i anslutningssträng.

Tillgänglighetsgrupper och FCI

Du kan konfigurera en AlwaysOn-tillgänglighetsgrupp med hjälp av en redundansklusterinstans som en av replikerna. I den här konfigurationen måste speglingsslutpunktens URL för FCI-repliken använda FCI DNN. På samma sätt måste den skrivskyddade routningen till FCI-repliken använda FCI DNN om FCI används som skrivskyddad replik.

Formatet för speglingsslutpunkten är: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Om ditt DNN DNS-namn till exempel är dnnlsnr, och 5022 är porten för FCI:ns speglingsslutpunkt, ser kodfragmentet Transact-SQL (T-SQL) ut så här:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

På samma sätt är formatet för den skrivskyddade routnings-URL:en: TCP://<DNN DNS name>:<SQL Server instance port>.

Om ditt DNN DNS-namn till exempel är dnnlsnr, och 1444 är porten som används av det skrivskyddade SQL Server FCI-målet, ser T-SQL-kodfragmentet för att skapa den skrivskyddade routnings-URL:en ut så här:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Du kan utelämna porten i URL:en om den är standardporten 1433. För en namngiven instans konfigurerar du en statisk port för den namngivna instansen och anger den i url:en för skrivskyddad routning.

Replikering

Replikeringen har tre komponenter: Utgivare, Distributör, Prenumerant. Någon av dessa komponenter kan vara en redundansklusterinstans. Eftersom FCI VNN används mycket i replikeringskonfigurationen, både explicit och implicit, kan ett nätverksalias som mappar VNN till DNN vara nödvändigt för att replikeringen ska fungera.

Fortsätt att använda VNN-namnet som FCI-namn i replikeringen, men skapa ett nätverksalias i följande fjärrsituationer innan du konfigurerar replikering:

Replikeringskomponent (FCI med DNN) Fjärrkomponent Mappning av nätverksalias Server med nätverkskarta
Publisher Distributör Utgivar-VNN till Publisher DNN Distributör
Distributör Prenumerant Distributör VNN till distributör DNN Prenumerant
Distributör Publisher Distributör VNN till distributör DNN Publisher
Prenumerant Distributör Prenumerant-VNN till prenumerant-DNN Distributör

Anta till exempel att du har en utgivare som har konfigurerats som en FCI med DNN i en replikeringstopologi och att distributören är fjärransluten. I det här fallet skapar du ett nätverksalias på distributörsservern för att mappa utgivar-VNN till Publisher DNN:

Configure the DNN DNS name as the network alias using SQL Server Configuration Manager.

Använd det fullständiga instansnamnet för en namngiven instans, som i följande bildexempel:

Use the full instance name when configuring a network alias for a named instance.

Databasspegling

Du kan konfigurera databasspegling med en FCI som databasspeglingspartner. Konfigurera det med hjälp av Transact-SQL (T-SQL) i stället för SQL Server Management Studio GUI. Om du använder T-SQL ser du till att databasspeglingsslutpunkten skapas med hjälp av DNN i stället för det virtuella nätverket.

Om ditt DNN DNS-namn till exempel är dnnlsnroch databasens speglingsslutpunkt är 7022 konfigurerar följande T-SQL-kodfragment databasspeglingspartnern:

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

För klientåtkomst kan egenskapen Redundanspartner hantera databasspeglingsredundans, men inte FCI-redundans.

MSDTC

FCI kan delta i distribuerade transaktioner som samordnas av Microsoft Distributed Transaction Coordinator (MSDTC). Klustrad MSDTC och lokal MSDTC stöds med FCI DNN. I Azure krävs en Azure Load Balancer för en klustrad MSDTC-distribution.

Dricks

DNN som definieras i FCI ersätter inte Azure Load Balancer-kravet för klustrad MSDTC.

Filestream

Även om FileStream stöds för en databas i en FCI stöds inte åtkomst till FileStream eller FileTable med hjälp av Filsystem-API:er med DNN.

Länkade servrar

Det finns stöd för att använda en länkad server med ett FCI DNN. Använd antingen DNN direkt för att konfigurera en länkad server eller använd ett nätverksalias för att mappa det virtuella nätverket till DNN.

Om du till exempel vill skapa en länkad server med DNN DNS-namn dnnlsnr för den namngivna instansen insta1använder du följande Transact-SQL-kommando (T-SQL):

USE [master]   
GO   

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

Du kan också skapa den länkade servern med hjälp av det virtuella nätverksnamnet (VNN) i stället, men sedan måste du definiera ett nätverksalias för att mappa VNN till DNN.

Till exempel använder du följande Transact-SQL-kommando (T-SQL) för insta1vnnnameatt skapa en länkad server med hjälp av VNN dnnlsnrför att skapa en länkad server med hjälp av VNN:

USE [master]
GO   

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

Skapa sedan ett nätverksalias som ska mappas vnnname\insta1 till dnnlsnr\insta1.

Vanliga frågor och svar

  • Vilken SQL Server-version ger DNN-stöd?

    SQL Server 2019 CU2 och senare.

  • Vilken är den förväntade redundanstiden när DNN används?

    För DNN är redundanstiden bara FCI-redundanstiden, utan att någon tid läggs till (till exempel avsökningstid när du använder Azure Load Balancer).

  • Finns det något versionskrav för ATT SQL-klienter ska ha stöd för DNN med OLEDB och ODBC?

    Vi rekommenderar MultiSubnetFailover=True anslutningssträng stöd för DNN. Den är tillgänglig från och med SQL Server 2012 (11.x).

  • Krävs det några konfigurationsändringar för SQL Server för att jag ska kunna använda DNN?

    SQL Server kräver ingen konfigurationsändring för att använda DNN, men vissa SQL Server-funktioner kan kräva mer övervägande.

  • Stöder DNN kluster med flera undernät?

    Ja. Klustret binder DNN i DNS med de fysiska IP-adresserna för alla noder i klustret oavsett undernät. SQL-klienten försöker alla IP-adresser för DNS-namnet oavsett undernät.

Nästa steg

Mer information finns i: