Condividi tramite


Configurare l'instradamento Read-Only per un gruppo di disponibilità (SQL Server)

Per configurare un gruppo di disponibilità AlwaysOn per supportare il routing di sola lettura in SQL Server 2014, è possibile usare Transact-SQL o PowerShell. Il routing di sola lettura si riferisce alla possibilità di SQL Server di instradare le richieste di connessione di sola lettura a una replica secondaria leggibile AlwaysOn disponibile ovvero una replica configurata per consentire carichi di lavoro di sola lettura durante l'esecuzione nel ruolo secondario. Per supportare il routing di sola lettura, il gruppo di disponibilità deve disporre di un listener del gruppo di disponibilità. I client di sola lettura devono indirizzare le richieste di connessione a questo listener e le stringhe di connessione del client devono specificare la finalità dell'applicazione come "sola lettura". Ovvero, devono essere richieste di connessione con finalità di lettura.

Annotazioni

Per informazioni su come configurare una replica secondaria leggibile, vedere Configurare l'accesso Read-Only in una replica di disponibilità (SQL Server).

Annotazioni

La configurazione del routing di sola lettura non è supportata da SQL Server Management Studio.

Prima di iniziare

Prerequisiti

Quali proprietà di replica è necessario configurare per supportare il routing Read-Only?

  • Per ogni replica secondaria leggibile che supporta il routing di sola lettura, è necessario specificare un URL di routing di sola lettura. Questo URL diventa effettivo solo quando la replica locale è in esecuzione con il ruolo secondario. L'URL di routing di sola lettura deve essere specificata replica per replica, secondo le esigenze. Ogni URL di routing di sola lettura viene usato per il routing delle richieste di connessione con finalità di lettura a una replica secondaria leggibile specifica. In genere, a ogni replica secondaria leggibile viene assegnato un URL di routing di sola lettura.

    Per informazioni su come calcolare l'URL di routing in sola lettura per una replica di disponibilità, consulta Calcolo di read_only_routing_url per AlwaysOn.

  • Per ogni replica di disponibilità per cui si desidera supportare il routing di sola lettura quando essa è la replica primaria, è necessario specificare un elenco di routing di sola lettura. Un determinato elenco di routing di sola lettura ha effetto solo quando la replica locale è in esecuzione con il ruolo primario. Questo elenco deve essere specificato replica per replica, secondo le esigenze. In genere, ogni elenco di routing di sola lettura conterrà ogni URL di routing di sola lettura, con l'URL della replica locale alla fine dell'elenco.

    Annotazioni

    Le richieste di connessione destinate alla lettura vengono instradate al primo database secondario leggibile disponibile nell'elenco di instradamento di sola lettura della replica primaria corrente. Non esiste alcun bilanciamento del carico.

Annotazioni

Per informazioni sui listener del gruppo di disponibilità e altre informazioni sul routing di sola lettura, consultare Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server).

Sicurezza

Autorizzazioni

Attività Autorizzazioni
Per configurare le repliche durante la creazione di un gruppo di disponibilità Sono necessarie l'appartenenza al ruolo predefinito del server sysadmin e, in aggiunta, l'autorizzazione server CREATE AVAILABILITY GROUP, oppure l'autorizzazione ALTER ANY AVAILABILITY GROUP, o l'autorizzazione CONTROL SERVER.
Per modificare una replica di disponibilità Sono necessarie l'autorizzazione ALTER AVAILABILITY GROUP nel gruppo di disponibilità, l'autorizzazione CONTROL AVAILABILITY GROUP, l'autorizzazione ALTER ANY AVAILABILITY GROUP o l'autorizzazione CONTROL SERVER.

Uso di Transact-SQL

Per configurare il routing di sola lettura

Annotazioni

Per un esempio di codice, vedere Esempio (Transact-SQL), più avanti in questa sezione.

  1. Connettersi all'istanza del server che ospita la replica primaria.

  2. Se si specifica una replica per un nuovo gruppo di disponibilità, usare l'istruzione Transact-SQL CREATE AVAILABILITY GROUP . Se si aggiunge o si modifica una replica per un gruppo di disponibilità esistente, usare l'istruzione ALTER AVAILABILITY GROUPTransact-SQL.

    • Per configurare il routing di sola lettura per il ruolo secondario, nella clausola ADD REPLICA o MODIFY REPLICA WITH specificare l'opzione SECONDARY_ROLE, come indicato di seguito:

      SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:port')

      I parametri dell'URL di routing di sola lettura sono i seguenti:

      indirizzo di sistema
      Stringa, ad esempio un nome di sistema, un nome di dominio completo o un indirizzo IP, che identifica in modo univoco il computer di destinazione.

      porto
      Numero di porta utilizzato dal motore di database dell'istanza di SQL Server.

      Ad esempio: SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')

      In una clausola MODIFY REPLICA il ALLOW_CONNECTIONS è facoltativo se la replica è già configurata per consentire connessioni di sola lettura.

      Per altre informazioni, vedere Calcolo delle read_only_routing_url per AlwaysOn.

    • Per configurare il routing di sola lettura per il ruolo primario, nella clausola ADD REPLICA o MODIFY REPLICA WITH specificare l'opzione PRIMARY_ROLE, come indicato di seguito:

      PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ,... n ] ))

      dove, il server identifica un'istanza del server che ospita una replica secondaria di sola lettura nel gruppo di disponibilità.

      Ad esempio: PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))

      Annotazioni

      È necessario impostare l'URL di routing di sola lettura prima di configurare l'elenco di routing di sola lettura.

Esempio (Transact-SQL)

Nell'esempio seguente vengono modificate due repliche di un gruppo di disponibilità esistente per AG1 supportare il routing di sola lettura se una di queste repliche detiene il ruolo primario. Per identificare le istanze del server che ospitano la replica di disponibilità, questo esempio specifica i nomi delle istanze: COMPUTER01 e COMPUTER02.

ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
ALTER AVAILABILITY GROUP [AG1]  
 MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER01' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));  
  
ALTER AVAILABILITY GROUP [AG1]   
MODIFY REPLICA ON  
N'COMPUTER02' WITH   
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));  
GO

Utilizzo di PowerShell

Per configurare il routing di sola lettura

Annotazioni

Per un esempio di codice, vedere Esempio (PowerShell) più avanti in questa sezione.

  1. Impostare il valore predefinito (cd) sull'istanza del server che ospita la replica primaria.

  2. Quando aggiungere una replica di disponibilità a un gruppo di disponibilità, usare il comando cmdlet New-SqlAvailabilityReplica. Quando si modifica una replica di disponibilità esistente, usare il Set-SqlAvailabilityReplica cmdlet . I parametri pertinenti sono i seguenti:

    • Per configurare il routing di sola lettura per il ruolo secondario, specificare il parametro ReadonlyRoutingConnectionUrl"url".

      dove, url è il nome di dominio completo di connettività (FQDN) e la porta da utilizzare per il routing alla replica per le connessioni di sola lettura. Ad esempio: -ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"

      Per altre informazioni, vedere Calcolo delle read_only_routing_url per AlwaysOn.

    • Per configurare l'accesso alla connessione per il ruolo primario, specificare ReadonlyRoutingList"server" [ ,... n ], dove server identifica un'istanza del server che ospita una replica secondaria di sola lettura nel gruppo di disponibilità. Ad esempio: -ReadOnlyRoutingList "SecondaryServer","PrimaryServer"

      Annotazioni

      È necessario impostare l'URL di routing di sola lettura di una replica prima di configurare l'elenco di routing di sola lettura.

    Annotazioni

    Per visualizzare la sintassi di un cmdlet, usare il Get-Help cmdlet nell'ambiente PowerShell di SQL Server. Per altre informazioni, vedere Get Help SQL Server PowerShell.

Per configurare e usare il provider PowerShell di SQL Server, vedere Provider PowerShell di SQL Server e Ottenere la Guida di SQL Server PowerShell.

Esempio (PowerShell)

Nell'esempio seguente viene configurata la replica primaria e una replica secondaria in un gruppo di disponibilità per il routing di sola lettura. In primo luogo, l'esempio assegna un URL di routing di sola lettura a ogni replica. Quindi imposta l'elenco di routing di sola lettura sulla replica primaria. Le connessioni con la proprietà "ReadOnly" impostata nella stringa di connessione verranno reindirizzate alla replica secondaria. Se questa replica secondaria non è leggibile (come determinato dall'impostazione ConnectionModeInSecondaryRole ), la connessione verrà indirizzata di nuovo alla replica primaria.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg  
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"  
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"  
  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica  
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica  

Monitoraggio: dopo aver configurato il routing Read-Only

Dopo che la replica primaria corrente e le repliche secondarie leggibili sono configurate per supportare il routing di sola lettura in entrambi i ruoli, le repliche secondarie leggibili possono ricevere richieste di connessione con finalità di lettura dai client che si connettono tramite il listener del gruppo di disponibilità.

Suggerimento

Quando si usa l'utilità bcp o l'utilità sqlcmd, è possibile specificare l'accesso in sola lettura a qualsiasi replica secondaria abilitata per l'accesso in sola lettura specificando l'opzione -K ReadOnly .

Requisiti e consigli per i Connection-Strings client

Affinché un'applicazione client usi il routing di sola lettura, la stringa di connessione deve soddisfare i requisiti seguenti:

  • Usare il protocollo TCP.

  • Impostare l'attributo o la proprietà della finalità dell'applicazione su readonly.

  • Fare riferimento al listener di un gruppo di disponibilità configurato per supportare il routing di sola lettura.

  • Fai riferimento a un database in quell'gruppo di disponibilità.

È inoltre consigliabile che le stringhe di connessione consentano il failover su più subnet, che supporta un thread client parallelo per ogni replica in ogni subnet. Ciò riduce al minimo il tempo di riconnessione del client dopo un failover.

La sintassi per una stringa di connessione dipende dal provider SQL Server usato da un'applicazione. La stringa di connessione di esempio seguente per il provider di dati .NET Framework 4.0.2 per SQL Server illustra le parti di una stringa di connessione necessarie e consigliate per il routing di sola lettura.

Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True  

Per altre informazioni sulla finalità dell'applicazione di sola lettura e sul routing di sola lettura, vedere Listener del gruppo di disponibilità, connettività client e failover dell'applicazione (SQL Server).

Se il routing Read-Only non funziona correttamente

Per informazioni sulla risoluzione dei problemi relativi a una configurazione di routing di sola lettura, vedere Read-Only Routing non funziona correttamente.

Attività correlate

Per visualizzare le configurazioni di routing di sola lettura

Per configurare l'accesso alla connessione client

Per usare le stringhe di connessione nelle applicazioni

Contenuto correlato

Vedere anche

Panoramica dei gruppi di disponibilità AlwaysOn (SQL Server)
Panoramica dei gruppi di disponibilità AlwaysOn (SQL Server)
Secondarie Attive: Repliche Secondarie Accessibili per Lettura (Gruppi di Disponibilità AlwaysOn)
Informazioni sull'accesso alla connessione client per le repliche di disponibilità (SQL Server)
Listener dei gruppi di disponibilità, connettività dei client e failover delle applicazioni (SQL Server)