

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurare il routing di sola lettura nei gruppi di disponibilità Always On in SQL Server su AWS
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws"></a>

*Subhani Shaik, Amazon Web Services*

## Riepilogo
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-summary"></a>

Questo modello illustra come utilizzare la replica secondaria in standby in SQL Server Always On trasferendo i carichi di lavoro di sola lettura dalla replica primaria alla replica secondaria.

Il mirroring del database prevede one-to-one la mappatura. Non è possibile leggere direttamente il database secondario, quindi è necessario creare istantanee. La funzionalità del gruppo di disponibilità Always On è stata introdotta in Microsoft SQL Server 2012. Nelle versioni successive, sono state introdotte funzionalità principali, incluso il routing in sola lettura. Nei gruppi di disponibilità Always On, è possibile leggere i dati direttamente dalla replica secondaria modificando la modalità di replica in sola lettura.

La soluzione Always On Availability Groups supporta l'alta disponibilità (HA), il disaster recovery (DR) e un'alternativa al mirroring del database. I gruppi di disponibilità Always On lavorano a livello di database e massimizzano la disponibilità di un set di database utente.

SQL Server utilizza il meccanismo di routing di sola lettura per reindirizzare le connessioni di sola lettura in entrata alla replica di lettura secondaria. A tale scopo, è necessario aggiungere i seguenti parametri e valori nella stringa di connessione:
+ `ApplicationIntent=ReadOnly`
+ `Initial Catalog=<database name>`

## Prerequisiti e limitazioni
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-prereqs"></a>

**Prerequisiti**
+ Un sistema attivo Account AWS con un cloud privato virtuale (VPC), due zone di disponibilità, sottoreti private e un gruppo di sicurezza
+ Due macchine Amazon Elastic Compute Cloud (Amazon EC2) con SQL [Server 2019 Enterprise Edition Amazon Machine Image con Windows Server](https://aws.amazon.com/marketplace/pp/prodview-btjcozd246p6w) [Failover Clustering (WSFC](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/ec2-fci.html)) configurate a livello di istanza e un gruppo di disponibilità Always On configurato a livello di SQL Server tra il nodo primario `WSFCNODE1` () e il nodo secondario (), che fanno parte della directory denominata `WSFCNODE2` AWS Directory Service for Microsoft Active Directory `tagechtalk.com`
+ Uno o più nodi configurati per l'accettazione nella replica secondaria `read-only`
+ Un listener denominato `SQLAG1` per il gruppo di disponibilità Always On
+ Motore di database SQL Server in esecuzione con lo stesso account di servizio su due nodi
+ SQL Server Management Studio (SSMS)
+ Un database di test denominato `test`

**Versioni del prodotto**
+ SQL Server 2014 e versioni successive

## Architecture
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-architecture"></a>

**Stack tecnologico Target**
+ Amazon EC2
+ AWS Managed Microsoft AD
+ Amazon FSx

**Architettura Target**

Il diagramma seguente mostra come il listener del gruppo di disponibilità Always On (AG) reindirizza le query che contengono il `ApplicationIntent` parametro nella connessione al nodo secondario appropriato.

![Processo in tre fasi tra due zone di disponibilità per il nodo 1 WSFC e il nodo 2 WSFC con Amazon EFS.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/19b5937b-da10-4c74-8619-fdcb758f2211/images/f9ba0f89-7dc2-4f4c-8eee-bef56968ad2d.png)


1. Viene inviata una richiesta al listener del gruppo di disponibilità Always On.

1. Se la stringa di connessione non contiene il `ApplicationIntent` parametro, la richiesta viene inviata all'istanza principale.

1. Se la stringa di connessione lo contiene`ApplicationIntent=ReadOnly`, la richiesta viene inviata all'istanza secondaria con configurazione di routing in sola lettura, ovvero WSFC con un gruppo di disponibilità Always On.

## Tools (Strumenti)
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-tools"></a>

**Servizi AWS**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)consente ai carichi di lavoro e alle risorse compatibili con le directory di AWS utilizzare Microsoft Active Directory in. Cloud AWS
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fornisce capacità di calcolo scalabile nel Cloud AWS. Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
+ [Amazon FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) fornisce file system che supportano i protocolli di connettività standard del settore e offrono disponibilità e replica elevate in tutto il mondo. Regioni AWS

**Altri servizi**
+ SQL Server Management Studio (SSMS) è uno strumento per la connessione, la gestione e l'amministrazione delle istanze di SQL Server.
+ sqlcmd è un'utilità da riga di comando.

## Best practice
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-best-practices"></a>

[Per ulteriori informazioni sui gruppi di disponibilità Always On, consulta la documentazione di SQL Server.](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-ver16)

## Epiche
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-epics"></a>

### Configura il routing di sola lettura
<a name="set-up-read-only-routing"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiorna le repliche in modalità di sola lettura. | [Per aggiornare sia la replica principale che quella secondaria in modalità di sola lettura, connettiti alla replica primaria da SSMS ed esegui il codice *Step* 1 dalla sezione Informazioni aggiuntive.](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) | DBA | 
| Crea l'URL di routing. | Per creare un URL di routing per entrambe le repliche, esegui il codice del *passaggio 2* nella sezione Informazioni [aggiuntive](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional). In questo codice, `tagechtalk.com` è il nome della AWS Managed Microsoft AD directory. | DBA | 
| Crea la lista di routing. | Per creare la lista di routing per entrambe le repliche, esegui il codice del *passaggio 3* nella sezione Informazioni [aggiuntive](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional). | DBA | 
| Convalida la lista di routing. | Connect all'istanza principale da SQL Server Management Studio ed esegui il codice *Step 4* dalla sezione [Informazioni aggiuntive](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional) per convalidare la lista di routing. | DBA | 

### Prova il routing di sola lettura
<a name="test-the-read-only-routing"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Connect utilizzando il `ApplicationIntent` parametro. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 
| Eseguire un failover. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 

### Connect utilizzando l'utilità da riga di comando sqlcmd
<a name="connect-by-using-the-sqlcmd-command-line-utility"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Connect utilizzando sqlcmd. | Per connetterti da sqlcmd, esegui il codice *Step 5* dalla sezione [Informazioni aggiuntive del prompt dei comandi](#configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional). Dopo la connessione, esegui il comando seguente per mostrare il nome del server connesso.<pre>SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .</pre><br />L'output mostrerà il nome corrente della replica secondaria (`WSFCNODE1`). | DBA | 

## Risoluzione dei problemi
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| La creazione del listener non riesce e viene visualizzato il messaggio «Il cluster WSFC non è riuscito a portare online la risorsa Network Name». | Per informazioni, consulta il post sul blog di Microsoft [Create Listener Fails with Message «Il cluster WSFC non è riuscito a portare online la risorsa Network Name](https://techcommunity.microsoft.com/blog/sqlserversupport/create-listener-fails-with-message-the-wsfc-cluster-could-not-bring-the-network-/318235)». | 
| Potenziali problemi, inclusi altri problemi relativi agli ascoltatori o problemi di accesso alla rete. | Vedi [Risoluzione dei problemi di configurazione dei gruppi di disponibilità Always On (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16) nella documentazione Microsoft. | 

## Risorse correlate
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-resources"></a>
+ [Configura il routing di sola lettura per un gruppo di disponibilità Always On](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-ver16)
+ [Risolvi i problemi di configurazione dei gruppi di disponibilità Always On (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16)

## Informazioni aggiuntive
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional"></a>

*Fase 1: Aggiorna le repliche in modalità di sola lettura*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
```

*Fase 2. Crea l'URL di routing*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433'))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433'))
GO
```

*Fase 3. Crea la lista di routing*

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1')));
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2')));
GO
```

*Fase 4. Convalida la lista di routing*

```
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
```

*Fase 5: Utilità di comando SQL*

```
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly
```