Interoperabilità delle funzionalità con istanza del cluster di failover di SQL Server e DNN

Si applica a:SQL Server su VM Azure

Suggerimento

Esistono molti metodi per distribuire un gruppo di disponibilità. Semplificare la distribuzione ed eliminare la necessità di un servizio di Azure Load Balancer o di un nome di rete distribuito (DNN) per il gruppo di disponibilità AlwaysOn creando le macchine virtuali (VM) di SQL Server in più subnet all'interno della stessa rete virtuale di Azure. Se il gruppo di disponibilità è già stato creato in una singola subnet, è possibile eseguirne la migrazione a un ambiente con più subnet.

Esistono alcune funzionalità di SQL Server che si basano su un nome di rete virtuale hardcoded (VNN). Di conseguenza, quando si usa la risorsa DNN (Distributed Network Name) con l'istanza del cluster di failover e SQL Server in macchine virtuali di Azure, è necessario tenere presenti alcune considerazioni aggiuntive.

Questo articolo illustra come configurare l'alias di rete quando si usa la risorsa DNN e quali funzionalità di SQL Server richiedono considerazioni aggiuntive.

Creare un alias di rete (FCI)

Alcuni componenti lato server si basano su un valore VNN hardcoded e richiedono un alias di rete che esegua il mapping della VNN al nome DNS DNN per funzionare correttamente. Seguire la procedura descritta in Creare un alias del server per creare un alias che esegue il mapping della VNN al nome DNS della DNN.

Per un'istanza predefinita, è possibile eseguire il mapping diretto della VNN al nome DNS DNN, in modo che VNN = nome DNS DNN. Ad esempio, se il nome della VNN è FCI1, il nome dell'istanza è MSSQLSERVER e la DNN è FCI1DNN (i client precedentemente connessi a FCI e ora connessi a FCI1DNN), quindi eseguono il mapping della VNN FCI1 alla DNN FCI1DNN.

Per un'istanza denominata, è necessario eseguire il mapping degli alias di rete per l'istanza completa, in modo che VNN\Instance = DNN\Instance. Ad esempio, se il nome della VNN è FCI1, il nome dell'istanza è instA e la DNN è FCI1DNN (i client precedentemente connessi a FCI1\instA e ora connessi a FCI1DNN\instaA), quindi eseguono il mapping della VNN FCI1\instaA alla DNN FCI1DNN\instaA.

Driver client

Per i driver ODBC, OLEDB, ADO.NET, JDBC, PHP e Node.js, gli utenti devono specificare in modo esplicito il nome DNS DNN come nome del server nella stringa di connessione. Per garantire una connettività rapida al failover, aggiungere MultiSubnetFailover=True alla stringa di connessione se il client SQL lo supporta.

Strumenti

Gli utenti di SQL Server Management Studio, sqlcmd, Azure Data Studio e SQL Server Data Tools devono specificare in modo esplicito il nome DNS DNN come nome del server nel stringa di connessione.

Gruppi di disponibilità e istanza del cluster di failover (FCI)

È possibile configurare un gruppo di disponibilità Always On usando un'istanza del cluster di failover come una delle repliche. In questa configurazione, l'URL dell'endpoint del mirroring per la replica FCI deve usare la rete DNN dell'istanza del cluster di failover. Analogamente, se l'istanza del cluster di failover viene usata come replica di sola lettura, il routing di sola lettura alla replica dell'istanza del cluster di failover deve usare il listener DNN FCI.

L'endpoint del mirroring è nel formato: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Ad esempio, se il nome DNS della DNN è dnnlsnre 5022 è la porta dell'endpoint del mirroring dell'istanza del cluster di failover, il frammento di codice Transact-SQL (T-SQL) per creare l'URL dell'endpoint è simile al seguente:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Allo stesso modo, il formato per l'URL di routing di sola lettura è: TCP://<DNN DNS name>:<SQL Server instance port>.

Ad esempio, se il nome DNS del listener DNN è dnnlsnr, e 1444 è la porta usata dall'istanza del cluster di failover di SQL Server di sola lettura, il frammento di codice T-SQL per creare l'URL del routing di sola lettura è simile al seguente:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

È possibile omettere la porta nell'URL se si tratta della porta 1433 predefinita. Per un'istanza denominata, configurare una porta statica per l'istanza denominata e specificarla nell'URL del routing di sola lettura.

Replica

La replica include tre componenti: server di pubblicazione, server di distribuzione, Sottoscrittore. Qualsiasi di questi componenti può essere un'istanza del cluster di failover. Poiché la VNN dell'istanza del cluster di failover viene ampiamente usata nella configurazione della replica, sia in modo esplicito che implicito, potrebbe essere necessario un alias di rete che esegua il mapping della VNN alla DNN per il funzionamento della replica.

Continuare a usare il nome della VNN come nome dell'istanza del cluster di failover all'interno della replica, ma creare un alias di rete nelle seguenti situazioni remote prima di configurare la replica:

Componente di replica (FCI con DNN) Componente remoto Mappa alias di rete Server con mappa di rete
Publisher Database di distribuzione VNN del server di pubblicazione al server di pubblicazione DNN Database di distribuzione
Database di distribuzione Sottoscrittore VNN del server di distribuzione alla DNN del server di distribuzione Sottoscrittore
Database di distribuzione Publisher VNN del server di distribuzione alla DNN del server di distribuzione Publisher
Sottoscrittore Database di distribuzione VNN del Sottoscrittore alla DNN del Sottoscrittore Database di distribuzione

Si supponga, ad esempio, di avere un server di pubblicazione configurato come istanza del cluster di failover tramite DNN in una topologia di replica e che il server di distribuzione sia remoto. In questo caso, creare un alias di rete nel server di distribuzione per eseguire il mapping della VNN del server di pubblicazione alla DNN del server di pubblicazione:

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

Usare il nome completo dell'istanza per un'istanza denominata, come nella seguente immagine esemplificativa:

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

Mirroring del database

È possibile configurare il mirroring del database con un'istanza del cluster di failover come partner di mirroring del database. Configurarlo usando Transact-SQL (T-SQL) anziché l'interfaccia utente grafica di SQL Server Management Studio. L'uso di T-SQL garantisce che l'endpoint del mirroring del database venga creato usando la rete neurale del database anziché la rete virtuale.

Ad esempio, se il nome DNS della rete neurale del database è dnnlsnr, e l'endpoint del mirroring del database è 7022, il frammento di codice T-SQL seguente configura il partner di mirroring del database:

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

Per l'accesso client, la proprietà Partner di failover può gestire il failover del mirroring del database, ma non il failover dell'istanza del cluster di failover.

MSDTC

L'istanza del cluster di failover può utilizzare transazioni distribuite coordinate tramite Microsoft Distributed Transaction Coordinator (MSDTC). MSDTC cluster e MSDTC locale sono supportati con DNN FCI. In Azure è necessario un servizio di bilanciamento del carico di Azure per una distribuzione MSDTC in cluster.

Suggerimento

La DNN definita nell'istanza del cluster di failover non sostituisce il requisito di Azure Load Balancer per MSDTC cluster.

FileStream

Anche se FileStream è supportato per un database in un'istanza del cluster di failover, l'accesso a FileStream o FileTable tramite le API file system con DNN non è supportato.

Server collegati

L'uso di un server collegato con una DNN del cluster di failover è supportato. Usare direttamente la DNN per configurare un server collegato oppure usare un alias di rete per eseguire il mapping della VNN alla DNN.

Ad esempio, per creare un server collegato con nome dnnlsnr DNS DNN per l'istanza insta1denominata , usare il seguente comando Transact-SQL (T-SQL):

USE [master]   
GO   

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

In alternativa, è possibile creare il server collegato usando il nome della rete virtuale (VNN), ma sarà quindi necessario definire un alias di rete per eseguire il mapping della VNN alla DNN.

Ad esempio, per il nome dell'istanza insta1, nome della VNN vnnname e nome della DNN dnnlsnr, usare il seguente comando Transact-SQL (T-SQL) per creare un server collegato usando la VNN:

USE [master]
GO   

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

Creare quindi un alias di rete per eseguire il mapping vnnname\insta1 a dnnlsnr\insta1.

Domande frequenti

  • Quale versione di SQL Server offre il supporto DNN?

    SQL Server 2019 CU2 e versioni successive.

  • Qual è il tempo di failover previsto quando viene usata la DNN?

    Per la DNN, il tempo di failover sarà solo il tempo di failover dell'istanza del cluster di failover, senza aggiungere tempo, ad esempio il tempo del probe quando si usa Azure Load Balancer.

  • Esiste un requisito di versione per i client SQL per supportare il listener DNN con OLEDB e ODBC?

    È consigliabile MultiSubnetFailover=True stringa di connessione supporto per DNN. Disponibile solo a partire da SQL Server 2012 (11.x).

  • Sono necessarie modifiche alla configurazione di SQL Server per l'uso di DNN?

    SQL Server non richiede alcuna modifica di configurazione per l'uso di DNN, ma alcune funzionalità di SQL Server potrebbero richiedere una maggiore considerazione.

  • Il listener DNN supporta cluster con subnet multipli?

    Sì. Il cluster associa il DNN in DNS agli indirizzi IP fisici di tutti i nodi del cluster indipendentemente dalla subnet. Il client SQL prova tutti gli indirizzi IP del nome DNS indipendentemente dalla subnet.

Passaggi successivi

Per ulteriori informazioni, vedere: