

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à.

# Utilizzo di repliche di lettura per Microsoft SQL Server in Amazon RDS
<a name="SQLServer.ReadReplicas"></a>

Generalmente, per configurare la replica tra le istanze database di Amazon RDS si utilizzano repliche di lettura. Per informazioni generali sulle repliche di lettura, consulta [Uso delle repliche di lettura dell'istanza database](USER_ReadRepl.md). 

Questa sezione contiene informazioni specifiche sull'utilizzo delle repliche di lettura su Amazon RDS per SQL Server.
+ [Sincronizzazione degli utenti e degli oggetti del database con una replica di lettura SQL Server](SQLServer.ReadReplicas.ObjectSynchronization.md)
+ [Risoluzione dei problemi relativi a una replica di lettura SQL Server](SQLServer.ReadReplicas.Troubleshooting.md)

## Configurazione delle repliche di lettura per SQL Server
<a name="SQLServer.ReadReplicas.Configuration"></a>

Prima di poter utilizzare un'istanza database come istanza database di origine per la replica, devi abilitare i backup automatici sull'istanza database di origine. Per farlo devi impostare il periodo di retention dei backup su un valore diverso da zero. L'impostazione di questo tipo di implementazione impone anche l'attivazione dei backup automatici.

La creazione di una replica di lettura SQL Server non richiede alcuna interruzione delle attività per l'istanza database primaria. Amazon RDS imposta i parametri e le autorizzazioni necessari per l’istanza database di origine e la replica di lettura senza interruzione del servizio. Viene acquisito uno snapshot dell'istanza database di origine e tale snapshot diventa la replica di lettura. Quando una replica di lettura viene eliminata non si verifica alcuna interruzione. 

È possibile creare fino a 15 repliche di lettura da un'istanza database di origine. Per un efficace funzionamento della replica, raccomandiamo di configurare ciascuna replica di lettura con la stessa quantità di risorse di calcolo e di archiviazione dell'istanza database di origine. Se si dimensiona l'istanza database di origine, si devono dimensionare anche le repliche di lettura.

La versione del motore del database SQL Server dell'istanza database di origine e tutte le relative repliche di lettura devono essere uguali. Amazon RDS aggiorna la primaria immediatamente dopo l'aggiornamento delle repliche di lettura, a prescindere dalla finestra di manutenzione. Per ulteriori informazioni sull'aggiornamento della versione del motore del database, consultare [Aggiornamenti del motore di database Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md).

Una replica di lettura deve disporre di risorse di calcolo e storage sufficienti per ricevere e applicare le modifiche provenienti dall'origine. Se una replica di lettura raggiunge la massima capacità di risorse di calcolo, di rete o di storage, smette di ricevere o applicare modifiche dalla sua origine. Puoi modificare le risorse di storage e CPU di una replica di lettura in modo indipendente dalla sua origine e dalle altre repliche di lettura. 

Per informazioni su come creare una replica di lettura, consulta [Creazione di una replica di lettura](USER_ReadRepl.Create.md).

## Limitazioni per le repliche di lettura con SQL Server
<a name="SQLServer.ReadReplicas.Limitations"></a>

Le seguenti limitazioni si applicano alle repliche di lettura di SQL Server su Amazon RDS:
+ Le repliche di lettura sono disponibili solo sul motore SQL Server Enterprise Edition (EE).
+ Le repliche di lettura sono disponibili per le versioni di SQL Server 2016–2022.
+ È possibile creare fino a 15 repliche di lettura da un'istanza database di origine. Quando l’istanza database di origine ha più di cinque repliche di lettura, la replica potrebbe subire ritardi.
+ Le repliche di lettura sono disponibili solo per le istanze database in esecuzione sulle classi di istanze database con quattro o più vCPU.
+ Una replica di lettura supporta fino a 100 database in base al tipo di classe di istanza e alla modalità di disponibilità. È necessario creare i database sull’istanza database di origine in modo da replicarli automaticamente nelle repliche di lettura. Non è possibile scegliere singoli database da replicare. Per ulteriori informazioni, consulta [Restrizioni per le istanze database di Microsoft SQL Server](CHAP_SQLServer.md#SQLServer.Concepts.General.FeatureSupport.Limits).
+ Non è possibile eliminare un database da una replica di lettura. Per eliminare un database, esegui l’operazione dall’istanza database di origine con la stored procedure `rds_drop_database`. Per ulteriori informazioni, consulta [Eliminazione di un database in un’istanza database Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).
+ Se l’istanza database di origine utilizza Transparent Data Encryption (TDE) per crittografare i dati, questa tecnologia viene configurata automaticamente anche sulla replica di lettura.

  Se l’istanza database di origine utilizza una chiave KMS per crittografare i dati, le repliche di lettura nella stessa Regione utilizzano la stessa chiave KMS. Per le repliche di lettura multi-Regione, è necessario specificare una chiave KMS dalla Regione della replica di lettura al momento della creazione di tale replica. Non è possibile modificare la chiave KMS per una replica di lettura.
+ Le repliche di lettura hanno lo stesso fuso orario e le stesse regole di confronto dell’istanza database di origine, indipendentemente dalla zona di disponibilità in cui sono state create.
+ Il supporto per le operazioni seguenti non è disponibile su Amazon RDS per SQL Server:
  + Conservazione di backup delle repliche di lettura
  + Ripristino point-in-time da repliche di lettura
  + Snapshot manuali di repliche di lettura
  + Repliche di lettura AZ multiple
  + Creazione di repliche di lettura di repliche di lettura
  + Sincronizzazione degli accessi degli utenti a repliche di lettura
+ Amazon RDS per SQL Server non interviene per attenuare un elevato ritardo di replica tra un'istanza database di origine e le sue repliche di lettura. Assicurati che l'istanza database di origine e le sue repliche di lettura siano dimensionate correttamente, in termini di capacità di calcolo e storage, per adattarsi al loro carico operativo.
+ Puoi eseguire la replica tra le regioni AWS GovCloud (US-East) e AWS GovCloud (US-West), ma non all'interno o all'esterno di AWS GovCloud (US) Regions.

## Considerazioni sulle opzioni per le repliche RDS per SQL Server
<a name="SQLServer.ReadReplicas.limitations.options"></a>

Prima di creare una replica RDS per SQL Server, considera i requisiti, le restrizioni e i consigli seguenti:
+ Se la replica SQL Server si trova nella stessa regione dell'istanza database di origine, assicurati che appartenga allo stesso gruppo di opzioni dell'istanza database di origine. Le modifiche al gruppo di opzioni di origine o all'appartenenza al gruppo di opzioni di origine si propagano alle repliche. Queste modifiche vengono applicate alle repliche immediatamente dopo l'applicazione all'istanza database di origine, indipendentemente dalla finestra di manutenzione delle repliche.

  Per ulteriori informazioni sui gruppi di opzioni, consulta [Uso di gruppi di opzioni](USER_WorkingWithOptionGroups.md).
+ Quando crei una replica tra regioni SQL Server, Amazon RDS crea un gruppo di opzioni dedicato.

  Non puoi rimuovere una replica tra regioni SQL Server dal suo gruppo di opzioni dedicato. Nessun'altra istanza database può usare il gruppo di opzioni dedicato per una replica tra regioni SQL Server.

  Di seguito sono riportate le opzioni replicate. Per aggiungere opzioni replicate a una replica in più regioni SQL Server, aggiungile al gruppo di opzioni dell'istanza database di origine. L'opzione è installata anche su tutte le repliche dell'istanza database di origine.
  + `TDE`

  Di seguito sono riportate le opzioni non replicate. È possibile aggiungere o rimuovere le opzioni non replicate da un gruppo di opzioni dedicato.
  + `MSDTC`
  + `SQLSERVER_AUDIT`
  + Per abilitare l'opzione `SQLSERVER_AUDIT` sulla replica di lettura tra regioni, aggiungi l'opzione `SQLSERVER_AUDIT` al gruppo di opzioni dedicato sulla replica di lettura tra regioni e sul gruppo di opzioni dell'istanza di origine. Aggiungendo l'opzione `SQLSERVER_AUDIT` all'istanza di origine della replica di lettura tra regioni SQL Server, è possibile creare l'oggetto di controllo a livello di server e le specifiche di controllo a livello di server su ciascuna delle repliche di lettura tra regioni dell'istanza di origine. Per consentire alle repliche di lettura tra regioni di caricare i log di controllo completati su un bucket Amazon S3, aggiungi l'opzione `SQLSERVER_AUDIT` al gruppo di opzioni dedicato e configura le impostazioni delle opzioni. Il bucket Amazon S3 che stai utilizzando come destinazione dei file del controllo deve trovarsi nella stessa regione della replica di lettura tra regioni. Puoi modificare l'impostazione dell'opzione `SQLSERVER_AUDIT` per ogni replica di lettura tra regioni in modo indipendente affinché ciascuna possa accedere a un bucket Amazon S3 nella rispettiva regione.

  Le opzioni seguenti non sono supportate per le repliche di lettura.
  + `SSRS`
  + `SSAS`
  + `SSIS`

  Le opzioni seguenti sono parzialmente supportate per le repliche di lettura tra regioni.
  + `SQLSERVER_BACKUP_RESTORE`
  + L'istanza database di origine di una replica tra regioni SQL Server può avere l'opzione `SQLSERVER_BACKUP_RESTORE`, ma non è possibile eseguire ripristini nativi sull'istanza database di origine finché non si eliminano tutte le relative repliche tra regioni. Qualsiasi attività di ripristino nativo esistente verrà annullata durante la creazione di una replica tra regioni. Non puoi aggiungere l'opzione `SQLSERVER_BACKUP_RESTORE` a un gruppo di opzioni dedicato.

    Per ulteriori informazioni su backup e ripristino nativi, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md).

  Quando promuovi una replica di lettura tra regioni SQL Server, tale replica si comporta come qualsiasi altra istanza database SQL Server, compresa la gestione delle opzioni. Per ulteriori informazioni sui gruppi di opzioni, consulta [Uso di gruppi di opzioni](USER_WorkingWithOptionGroups.md).

# Sincronizzazione degli utenti e degli oggetti del database con una replica di lettura SQL Server
<a name="SQLServer.ReadReplicas.ObjectSynchronization"></a>

Tutti gli accessi, i ruoli server personalizzati, i processi di SQL Agent o altri oggetti a livello di server presenti nell'istanza database primaria al momento della creazione di una replica di lettura dovrebbero essere presenti nella replica di lettura appena creata. Tuttavia, tutti gli oggetti a livello di server creati nell'istanza database primaria dopo la creazione della replica di lettura non verranno replicati automaticamente ed è necessario crearli manualmente nella replica di lettura.

Gli utenti del database vengono replicati automaticamente dall'istanza database primaria nella replica di lettura. Poiché il database delle repliche di lettura è in modalità di sola lettura, l'identificatore di sicurezza (SID) dell'utente del database non può essere aggiornato nel database. Pertanto, quando si creano accessi SQL nella replica di lettura, è essenziale assicurarsi che il SID di tale accesso corrisponda al SID dell'accesso SQL corrispondente nell'istanza database primaria. Se non sincronizzi gli accessi SQL, non saranno in grado SIDs di accedere al database nella replica di lettura. Gli accessi autenticati di Windows Active Directory (AD) non presentano questo problema perché SQL Server ottiene il SID da Active Directory.

**Sincronizzazione di un accesso SQL tra istanza database primaria e replica di lettura**

1. Eseguire la connessione all'istanza database primaria.

1. Creare un nuovo accesso SQL nell'istanza database primaria.

   ```
   USE [master]
   GO
   CREATE LOGIN TestLogin1
   WITH PASSWORD = 'REPLACE WITH PASSWORD';
   ```
**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

1. Creare un nuovo utente del database per l'accesso SQL nel database.

   ```
   USE [REPLACE WITH YOUR DB NAME]
   GO
   CREATE USER TestLogin1 FOR LOGIN TestLogin1;
   GO
   ```

1. Controllare il SID dell'accesso SQL appena creato nell'istanza database primaria.

   ```
   SELECT name, sid FROM sys.server_principals WHERE name =  'TestLogin1';
   ```

1. Connettersi alla replica di lettura. Creare il nuovo accesso SQL.

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=REPLACE WITH sid FROM STEP #4;
   ```

**In alternativa, se si dispone dell'accesso al database delle repliche di lettura, è possibile correggere l'utente orfano come segue:**

1. Connettersi alla replica di lettura.

1. Individuare gli utenti orfani nel database.

   ```
   USE [REPLACE WITH YOUR DB NAME]
   GO
   EXEC sp_change_users_login 'Report';
   GO
   ```

1. Creare un nuovo accesso SQL per l'utente orfano del database.

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=REPLACE WITH sid FROM STEP #2;
   ```

   Esempio:

   ```
   CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P;
   ```
**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

# Risoluzione dei problemi relativi a una replica di lettura SQL Server
<a name="SQLServer.ReadReplicas.Troubleshooting"></a>

Puoi monitorare il ritardo della replica in Amazon CloudWatch visualizzando il parametro Amazon RDS `ReplicaLag`. Per ulteriori informazioni sui ritardi della replica, consultare [Monitoraggio della replica di lettura](USER_ReadRepl.Monitoring.md).

Se il ritardo della replica è eccessivamente lungo, puoi utilizzare la seguenti query per ottenere informazioni sul ritardo.

```
SELECT AR.replica_server_name
     , DB_NAME (ARS.database_id) 'database_name'
     , AR.availability_mode_desc
     , ARS.synchronization_health_desc
     , ARS.last_hardened_lsn
     , ARS.last_redone_lsn
     , ARS.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states ARS
INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id
--WHERE DB_NAME(ARS.database_id) = 'database_name'
ORDER BY AR.replica_server_name;
```