

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

# Amazon RDS per Microsoft SQL Server
<a name="CHAP_SQLServer"></a>

Amazon RDS supporta l'esecuzione di versioni ed edizioni diverse di Microsoft SQL Server. Nella seguente tabella è riportata la versione più recente supportata di ciascuna versione principale. Per l'elenco completo delle versioni, delle edizioni e delle versioni del motore RDS supportate, consulta [Versioni di Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.VersionSupport.md).




| Versione principale | Service Pack/GDR | Aggiornamento cumulativo | Versione secondaria | Articolo della Knowledge Base | Data di rilascio | 
| --- | --- | --- | --- | --- | --- | 
| SQL Server 2022 | Non applicabile | CU23 |  16.0.4236.2  | [KB5078297](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/sqlserver-2022/cumulativeupdate23) | 29 gennaio 2026 | 
| SQL Server 2019 | GDR | CU32 RDT |  150,4455,2  | [KB5068404](https://support.microsoft.com/en-us/topic/kb5068404-description-of-the-security-update-for-sql-server-2019-cu32-november-11-2025-c203bfbf-036e-46d2-bc10-6c01200dc48a) | 11 novembre 2025 | 
| SQL Server 2017 | GDR | CU31 RDT |  14,0,3515,1  | [KB5068402](https://support.microsoft.com/en-us/topic/kb5068402-description-of-the-security-update-for-sql-server-2017-cu31-november-11-2025-1be08efe-ad14-4b95-a0de-ecbbf2703114) | 11 novembre 2025 | 
| SQL Server 2016 | SP3 RDT | Non applicabile |  13,0,6475,1  | [KB5068401](https://support.microsoft.com/en-us/topic/kb5068401-description-of-the-security-update-for-sql-server-2016-sp3-gdr-november-11-2025-59a59fc0-f673-45c2-b8de-492b95c0e423) | 11 novembre 2025 | 

Per ulteriori informazioni sulla licenza di SQL Service Limits, consulta [Licenza per Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.Licensing.md). Per informazioni su come si compila il Server SQL, consulta l’articolo di supporto Microsoft [su dove trovare informazioni relative alle ultime build di SQL Server](https://support.microsoft.com/en-us/topic/kb957826-where-to-find-information-about-the-latest-sql-server-builds-43994ba5-9aed-2323-ea7c-d29fe9c4fbe8).

Con Amazon RDS, puoi creare istanze DB e snapshot DB, point-in-time ripristini e backup automatici o manuali. È possibile utilizzare istanze database che eseguono SQL Service all'interno di un VPC. Puoi anche utilizzare il protocollo Secure Sockets Layer (SSL) per connetterti a un'istanza database che esegue SQL Server e utilizzare Transparent Data Encryption (TDE) per crittografare i dati a riposo. Amazon RDS attualmente supporta implementazioni Multi-AZ per SQL Server utilizzando SQL Server Database Mirroring (DBM) o Always On Availability Groups (AGs) come soluzione di failover ad alta disponibilità. 

Per fornire un'esperienza di servizio gestito, Amazon RDS non fornisce accesso shell alle istanze database e limita l'accesso a certe procedure e tabelle di sistema che richiedono privilegi avanzati. Amazon RDS supporta l'accesso ai database su un'istanza database mediante qualsiasi applicazione client SQL standard come Microsoft SQL Server Management Studio. Amazon RDS non permette l'accesso host diretto a un'istanza database tramite Telnet, Secure Shell (SSH) o Connessione Desktop remoto Windows. Quando crei un'istanza database, l'utente master viene assegnato al ruolo *db\$1owner* per tutti i database dell'utente nell'istanza e dispone di tutte le autorizzazioni a livello di database ad eccezione di quelle utilizzate per i backup. Amazon RDS gestisce i backup per tuo conto. 

Prima di creare la prima istanza database, è necessario completare le fasi nella sezione di questa guida relativa alla configurazione. Per ulteriori informazioni, consulta [Configurazione dell’ambiente Amazon RDS](CHAP_SettingUp.md).

**Topics**
+ [Attività di gestione frequenti per Microsoft SQL Server su Amazon RDS](#SQLServer.Concepts.General)
+ [Restrizioni per le istanze database di Microsoft SQL Server](#SQLServer.Concepts.General.FeatureSupport.Limits)
+ [Supporto classe istanza database per Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md)
+ [Ottimizzazione CPUs per istanze RDS per SQL Server con licenza inclusa](SQLServer.Concepts.General.OptimizeCPU.md)
+ [Sicurezza del Server Microsoft SQL](SQLServer.Concepts.General.FeatureSupport.UnsupportedRoles.md)
+ [Supporto del Programma di Conformità per le istanze di database di Microsoft SQL Server](#SQLServer.Concepts.General.Compliance)
+ [Versioni di Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.VersionSupport.md)
+ [Funzionalità di Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.FeatureSupport.md)
+ [Le implementazioni Multi-AZ utilizzando Microsoft SQL Server Database Mirroring o i gruppi di disponibilità Always On](#SQLServer.Concepts.General.Mirroring)
+ [Uso della crittografia dei dati trasparente per crittografare i dati inattivi](#SQLServer.Concepts.General.Options)
+ [Funzioni e procedure archiviate per Amazon RDS for Microsoft SQL Server](SQLServer.Concepts.General.StoredProcedures.md)
+ [Fuso orario locale per le istanze di database di Microsoft SQL Server](SQLServer.Concepts.General.TimeZone.md)
+ [Licenza per Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.Licensing.md)
+ [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md)
+ [Utilizzo di SQL Server Developer Edition su RDS per SQL Server](sqlserver-dev-edition.md)
+ [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)
+ [Aggiornamenti del motore di database Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md)
+ [Utilizzo dello storage in RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.DatabaseStorage.md)
+ [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md)
+ [Utilizzo di repliche di lettura per Microsoft SQL Server in Amazon RDS](SQLServer.ReadReplicas.md)
+ [Implementazioni Multi-AZ per Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md)
+ [Funzionalità opzionali per Microsoft SQL Server su Amazon RDS](User.SQLServer.AdditionalFeatures.md)
+ [Opzioni per il motore di database di Microsoft SQL Server](Appendix.SQLServer.Options.md)
+ [Attività DBA frequenti per Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md)

## Attività di gestione frequenti per Microsoft SQL Server su Amazon RDS
<a name="SQLServer.Concepts.General"></a>

Di seguito sono riportate le attività di gestione più frequenti che puoi eseguire con un'istanza database Amazon RDS for SQL Server, con collegamenti alla documentazione rilevante per ciascuna attività. 


****  

| Area attività | Description | Documentazione di riferimento | 
| --- | --- | --- | 
|  **Classi delle istanze, storage e PIOPS**  |  Se stai creando un'istanza database per la produzione, è necessario comprendere come funzionano in Amazon RDS le classi di istanze, i tipi di storage e le Provisioned IOPS.   |  [Supporto classe istanza database per Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md) [Tipi di storage Amazon RDS](CHAP_Storage.md#Concepts.Storage)  | 
|  **Implementazioni Multi-AZ**  |  Un'istanza database in produzione deve utilizzare implementazioni Multi-AZ. Le implementazioni Multi-AZ forniscono alle istanze database maggior disponibilità, longevità dei dati e tolleranza ai guasti. Le implementazioni Multi-AZ per SQL Server sono implementate utilizzando il DBM o la tecnologia nativa di SQL Server. AGs   |  [Configurazione e gestione di un’implementazione Multi-AZ per Amazon RDS](Concepts.MultiAZ.md) [Le implementazioni Multi-AZ utilizzando Microsoft SQL Server Database Mirroring o i gruppi di disponibilità Always On](#SQLServer.Concepts.General.Mirroring)  | 
|  **Amazon Virtual Private Cloud (VPC)**  |  Se il tuo AWS account ha un VPC predefinito, l'istanza DB viene creata automaticamente all'interno del VPC predefinito. Se l'account non ha un VPC predefinito e desideri che l'istanza database sia in un VPC, è necessario creare il VPC e i gruppi di sottoreti prima di creare l'istanza database.   |  [Uso di un'istanza database in un VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **Gruppi di sicurezza**  |  Per impostazione predefinita, le istanze database vengono create con un firewall che ne impedisce l'accesso. Per accedere all'istanza database, devi quindi creare un gruppo di sicurezza con gli indirizzi IP e la configurazione di rete corretti.  |  [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md)  | 
|  **Gruppi di parametri**  |  Se l'istanza database richiede parametri database specifici, è necessario creare un gruppo di parametri prima di creare l'istanza database.   |  [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md)  | 
|  **Gruppi di opzioni**  |  Se l'istanza database richiede opzioni database specifiche, è necessario creare un gruppo di opzioni prima di creare l'istanza database.   |  [Opzioni per il motore di database di Microsoft SQL Server](Appendix.SQLServer.Options.md)  | 
|  **Connessione all'istanza database**  |  Dopo aver creato un gruppo di sicurezza e averlo associato a un'istanza database, puoi effettuare la connessione all'istanza database mediante un'applicazione client SQL standard come Microsoft SQL Server Management Studio.   |  [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md)  | 
|  **Backup e ripristino**  |  Quando crei l'istanza database, puoi configurarla per eseguire backup automatici. Puoi inoltre eseguire il backup e il ripristino dei database manualmente utilizzando file di backup completi (file .bak).   |  [Introduzione ai backup](USER_WorkingWithAutomatedBackups.md) [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md)  | 
|  **Monitoraggio**  |  Puoi monitorare la tua istanza DB di SQL Server utilizzando metriche, eventi e monitoraggio avanzato di CloudWatch Amazon RDS.   |  [Visualizzazione dei parametri nella console Amazon RDS](USER_Monitoring.md) [Visualizzazione di eventi Amazon RDS](USER_ListEvents.md)  | 
|  **File di log**  |  Puoi accedere ai file di log per l'istanza database SQL Server.   |  [Monitoraggio dei file di log di Amazon RDS](USER_LogAccess.md) [File di log di database Amazon RDS per Microsoft SQL Server](USER_LogAccess.Concepts.SQLServer.md)  | 

Esistono inoltre attività amministrative avanzate per l'utilizzo di istanze database che eseguono SQL Service. Per ulteriori informazioni, consulta la seguente documentazione: 
+ [Attività DBA frequenti per Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md).
+ [Utilizzo di AWS Managed Active Directory con RDS per SQL Server](USER_SQLServerWinAuth.md)
+ [Accesso al database tempdb](SQLServer.TempDB.md)

## Restrizioni per le istanze database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.FeatureSupport.Limits"></a>

L'implementazione Amazon RDS di Microsoft SQL Server su un'istanza database presenta alcune limitazioni da tenere presente:
+ Il numero massimo di database supportati in un'istanza DB dipende dal tipo di classe dell'istanza e dalla modalità di disponibilità: Single-AZ, Multi-AZ Database Mirroring (DBM) o Multi-AZ Availability Groups (). AGs I database di sistema Microsoft SQL Server non vanno oltre questo limite. 

  La tabella seguente mostra il numero massimo di database supportati per ogni tipo di classe di istanza e modalità di disponibilità. L'utilizzo di questa tabella ti aiuta a decidere se è possibile passare da un tipo di istanza a un altro o da una modalità di disponibilità a un'altra. Se l'istanza database di origine ha più database del tipo di istanza di destinazione o più modalità di disponibilità di quanti ne possa supportare, la modifica delle istanza database non riesce. È possibile visualizzare lo stato della richiesta nel riquadro **Events (Eventi)**.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)

  \$1 Rappresenta i tipi di classi di istanza differenti. 

  Ad esempio, supponiamo che l'istanza database venga eseguita su una db.\$1.16xlarge con una Single-AZ e che abbia 76 database. Si modifica l'istanza DB per eseguire l'aggiornamento all'utilizzo di Multi-AZ Always On AGs. Questo aggiornamento non riesce perché l'istanza database contiene altri database rispetto a quelli che la configurazione di destinazione è in grado di supportare. Se invece si aggiorna il tipo di classe istanza a db.\$1.24xlarge, la modifica riesce.

  Se l'aggiornamento non riesce, vengono visualizzati messaggi ed eventi simili ai seguenti:
  +  Impossibile modificare la classe dell'istanza database. L'istanza dispone di 76 database ma, dopo la conversione, ne supporterebbe solo 75. 
  +  Impossibile convertire l'istanza database in Multi-AZ: l'istanza dispone di 76 database ma, dopo la conversione, ne supporterebbe solo 75. 

   Se il point-in-time ripristino o il ripristino dell'istantanea falliscono, vengono visualizzati eventi e messaggi simili ai seguenti:
  +  Istanza database inserita in un ripristino incompatibile. L'istanza dispone di 76 database ma, dopo la conversione, ne supporterebbe solo 75. 
+ Le seguenti porte sono riservate a Amazon RDS e non è possibile utilizzarle quando si crea un'istanza database: `1234, 1434, 3260, 3343, 3389, 47001,` and `49152-49156`.
+ Le connessioni client da indirizzi IP all'interno dell'intervallo 169.254.0.0/16 non sono consentite. Si tratta di un intervallo APIPA (Automatic Private IP Addressing), utilizzato per gli indirizzi con collegamenti locali.
+ SQL Server Standard Edition utilizza solo un sottogruppo di processori disponibili se l'istanza database ha più processori dei limiti software (24 core, 4 socket e 128GB RAM). Ne sono esempi le classi di istanza db.m5.24xlarge e db.r5.24xlarge.

  Per ulteriori informazioni, consulta la tabella dei limiti di scala in [Edizioni e funzionalità supportate di SQL Server 2019 (15.x) ](https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-version-15) nella documentazione Microsoft.
+ Amazon RDS for SQL Server non supporta l'importazione di dati nel database msdb. 
+ Non è possibile rinominare i database su un'istanza database presente in un'implementazione Multi-AZ di SQL Server.
+ Assicurarsi di utilizzare queste linee guida quando si impostano i seguenti parametri DB su RDS per SQL Server:
  + `max server memory (mb)` >= 256 MB
  + `max worker threads`>= (numero di CPUs logici\$1 7)

  Per ulteriori informazioni sull'impostazione dei parametri DB, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).
+ La dimensione massima dello storage per le istanze database SQL Service è la seguente: 
  + Storage General Purpose (SSD) – 16 TiB per tutte le edizioni 
  + Storage IOPS fornito: 64 TiB per tutte le edizioni 
  + Storage magnetico – 1 TiB per tutte le edizioni 

  Se si dispone di uno scenario che richiede una quantità maggiore di spazio di archiviazione, è possibile utilizzare lo sharding su più istanze database per aggirare il limite. Questo approccio richiede una logica di routing dipendente dai dati nelle applicazioni che si collegano al sistema frammentato. È possibile utilizzare un framework di sharding esistente o scrivere un codice personalizzato per abilitare lo sharding. Se si utilizza un framework esistente, il framework non può installare alcun componente sullo stesso server dell'istanza database. 
+ La dimensione minima dell'archiviazione per le istanze database SQL Service è la seguente:
  + Storage per uso generico (SSD) – 20 GiB per edizioni Enterprise, Standard, Web ed Express
  + Storage IOPS assegnate – 20 GiB per edizioni Enterprise, Standard, Web ed Express
  + Storage magnetico – 20 GiB per edizioni Enterprise, Standard, Web ed Express
+ Amazon RDS non supporta l'esecuzione di questi servizi sullo stesso server dell'istanza database RDS:
  + Servizi di Qualità dei Dati
  + Servizi dei dati principali

  Per utilizzare queste caratteristiche, consigliamo di installare il server SQL su un'istanza Amazon EC2 o utilizzare un'istanza SQL Server locale. In questi casi, l'istanza EC2 o SQL Server agisce da server Master Data Services per l'istanza database SQL Server su Amazon RDS. È possibile installare SQL Server in un'istanza Amazon EC2 con lo storage Amazon EBS, in conformità alle policy di licenza Microsoft.
+ A causa delle limitazioni del Server di Microsoft SQL, il ripristino a un punto nel tempo prima dell'esecuzione corretta di un `DROP DATABASE` potrebbe non riflettere lo stato di quel database in quel momento. Ad esempio, il database rilasciato viene generalmente ripristinato al suo stato fino a 5 minuti prima che venga emesso il comando `DROP DATABASE`. Questo tipo di ripristino indica che è impossibile ripristinare le transazioni effettuate durante questi pochi minuti sul database rilasciato. Per risolvere il problema, è possibile riemettere il comando `DROP DATABASE` al termine dell'operazione di ripristino. L'eliminazione di un database rimuove i registri delle transazioni per quel database.
+ In SQL Server, i database vengono creati dopo l'istanza database. I nomi dei database seguono le normali regole di denominazione di SQL Server con le seguenti differenze:
  + I nomi dei database non possono iniziare con `rdsadmin`.
  + Non possono iniziare né terminare con uno spazio o una tabulazione.
  + Non possono contenere nessuno dei caratteri che crea una nuova riga.
  + Non possono contenere una virgoletta singola (`'`).
+ SQL Server Web Edition consente di utilizzare il modello **sviluppo/test** solo durante la creazione di una nuova istanza database RDS per SQL Server.
+ SQL Server Web Edition è progettato per gli hoster Web e il Web VAPs per ospitare pagine Web, siti Web, applicazioni Web e servizi Web pubblici e accessibili tramite Internet. Per ulteriori informazioni, consulta [Licenza per Microsoft SQL Server su Amazon RDS](SQLServer.Concepts.General.Licensing.md).

# Supporto classe istanza database per Microsoft SQL Server
<a name="SQLServer.Concepts.General.InstanceClasses"></a>

La capacità di calcolo e memoria di un'istanza database è determinata dalla sua classe di istanza database. La classe di istanza database di cui hai bisogno dipende dalla potenza di elaborazione e dai requisiti di memoria specifici. Per ulteriori informazioni, consulta [Classi di istanze DB ](Concepts.DBInstanceClass.md). 

Il seguente elenco delle classi di istanza database supportate per Microsoft SQL Server viene qui fornito per maggiore comodità. Per l'elenco aggiornato, visita la console RDS: [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

Non tutte le classi di istanze database sono disponibili in tutte le versioni secondarie supportate di SQL Server. Ad esempio, alcune classi di istanze database più recenti come db.r6i non sono disponibili nelle versioni secondarie precedenti. È possibile utilizzare il AWS CLI comando [describe-orderable-db-instance-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-orderable-db-instance-options.html) per scoprire quali classi di istanze DB sono disponibili per l'edizione e la versione di SQL Server.


****  

| SQL Server Edition | Intervallo di supporto 2022 | Intervallo di supporto 2019 | Intervallo di supporto 2017 e 2016 | 
| --- | --- | --- | --- | 
|  Enterprise Edition  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.xlarge`–`db.r5.24xlarge``db.r5b.xlarge`–`db.r5b.24xlarge``db.r5d.xlarge`–`db.r5d.24xlarge``db.r6i.xlarge`–`db.r6i.32xlarge`db.r7i.xlarge–db.r7i.48xlarge`db.m5.xlarge`–`db.m5.24xlarge``db.m5d.xlarge`–`db.m5d.24xlarge``db.m6i.xlarge`–`db.m6i.32xlarge``db.m7i.xlarge`–`db.m7i.48xlarge``db.x2iedn.xlarge`–`db.x2iedn.32xlarge``db.z1d.xlarge`–`db.z1d.12xlarge` |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.xlarge`–`db.r5.24xlarge` `db.r5b.xlarge`–`db.r5b.24xlarge` `db.r5d.xlarge`–`db.r5d.24xlarge` `db.r6i.xlarge`–`db.r6i.32xlarge` `db.r7i.xlarge`–`db.r7i.48xlarge` `db.m5.xlarge`–`db.m5.24xlarge` `db.m5d.xlarge`–`db.m5d.24xlarge` `db.m6i.xlarge`–`db.m6i.32xlarge` `db.m7i.xlarge`–`db.m7i.48xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.xlarge`–`db.z1d.12xlarge`  |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.xlarge`–`db.r5.24xlarge` `db.r5b.xlarge`–`db.r5b.24xlarge` `db.r5d.xlarge`–`db.r5d.24xlarge` `db.r6i.xlarge`–`db.r6i.32xlarge` `db.r7i.xlarge`–`db.r7i.48xlarge` `db.m5.xlarge`–`db.m5.24xlarge` `db.m5d.xlarge`–`db.m5d.24xlarge` `db.m6i.xlarge`–`db.m6i.32xlarge` `db.m7i.xlarge`–`db.m7i.48xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.xlarge`–`db.z1d.12xlarge`  | 
|  Standard Edition  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.large`–`db.r5.24xlarge``db.r5b.large`–`db.r5b.8xlarge``db.r5d.large`–`db.r5d.24xlarge``db.r6i.large`–`db.r6i.8xlarge`db.r7i.large–db.r7i.12xlarge`db.m5.large`–`db.m5.24xlarge``db.m5d.large`–`db.m5d.24xlarge``db.m6i.large`–`db.m6i.8xlarge``db.m7i.large`–`db.m7i.12xlarge``db.x2iedn.xlarge`–`db.x2iedn.8xlarge``db.z1d.large`–`db.z1d.12xlarge` |  `db.t3.xlarge`–`db.t3.2xlarge` `db.r5.large`–`db.r5.24xlarge` `db.r5b.large`–`db.r5b.24xlarge` `db.r5d.large`–`db.r5d.24xlarge` `db.r6i.large`–`db.r6i.8xlarge` `db.r7i.large`–`db.r7i.12xlarge` `db.m5.large`–`db.m5.24xlarge` `db.m5d.large`–`db.m5d.24xlarge` `db.m6i.large`–`db.m6i.8xlarge` `db.m7i.large`–`db.m7i.12xlarge` `db.x2iedn.xlarge`–`db.x2iedn.32xlarge` `db.z1d.large`–`db.z1d.12xlarge`  | `db.t3.xlarge`–`db.t3.2xlarge``db.r5.large`–`db.r5.24xlarge``db.r5b.large`–`db.r5b.24xlarge``db.r5d.large`–`db.r5d.24xlarge``db.r6i.large`–`db.r6i.8xlarge``db.r7i.large`–`db.r7i.12xlarge``db.m5.large`–`db.m5.24xlarge``db.m5d.large`–`db.m5d.24xlarge``db.m6i.large`–`db.m6i.8xlarge`db.m7i.large–db.m7i.12xlarge`db.x2iedn.xlarge`–`db.x2iedn.32xlarge``db.z1d.large`–`db.z1d.12xlarge` | 
|  Web Edition  | `db.t3.small`–`db.t3.xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge`db.r6i.large–db.r6i.4xlarge`db.r7i.large`–`db.r7i.4xlarge``db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge``db.m7i.large`–`db.m7i.4xlarge``db.z1d.large`–`db.z1d.13xlarge` | `db.t3.small`–`db.t3.2xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge``db.r6i.large`–`db.r6i.4xlarge`db.r7i.large–db.r7i.4xlarge`db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge`db.m7i.large–db.m7i.4xlarge`db.z1d.large`–`db.z1d.3xlarge` | `db.t3.small`–`db.t3.2xlarge``db.r5.large`–`db.r5.4xlarge``db.r5b.large`–`db.r5b.4xlarge``db.r5d.large`–`db.r5d.4xlarge``db.r6i.large`–`db.r6i.4xlarge`db.r7i.large–db.r7i.4xlarge`db.m5.large`–`db.m5.4xlarge``db.m5d.large`–`db.m5d.4xlarge``db.m6i.large`–`db.m6i.4xlarge`db.m7i.large–db.m7i.4xlarge`db.z1d.large`–`db.z1d.3xlarge` | 
|  Express Edition  |  `db.t3.micro`–`db.t3.xlarge`  |  `db.t3.micro`–`db.t3.xlarge`  |  `db.t3.micro`–`db.t3.xlarge`  | 
| Developer Edition | `db.m6i.xlarge`–`db.m6i.32xlarge``db.r6i.xlarge`–`db.r6i.32xlarge` |  |  | 

**Nota**  
 A partire dalla classe di istanze di settima generazione, l'hyper-threading è disabilitato su RDS SQL Server per istanze di dimensioni pari o superiori a 2xlarge. [Ciò fa sì che il numero totale di v CPUs disponibili sia la metà di quello supportato dall'istanza EC2 corrispondente.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html) Ad esempio, il tipo di istanza EC2 `m7i.2xlarge` per impostazione predefinita supporta 4 core e 2 threadsPerCore, per un totale di 8 v. CPUs Al contrario, l'`db.m7i.2xlarge`istanza RDS per SQL Server, con hyper-threading disabilitato, produce 4 core e 1, in totale 4 v. threadsPerCore CPUs
A partire dalle istanze di settima generazione, la fatturazione fornisce un'analisi dettagliata delle istanze DB RDS e dei costi di licenza di terze parti. [Per ulteriori dettagli, consulta i prezzi di RDS SQL Server.](https://aws.amazon.com/rds/sqlserver/pricing/)

# Ottimizzazione CPUs per istanze RDS per SQL Server con licenza inclusa
<a name="SQLServer.Concepts.General.OptimizeCPU"></a>

Con RDS per SQL Server, è possibile utilizzare Optimize CPU specificando le funzionalità del processore per configurare il numero di vCPU sull'istanza DB mantenendo la stessa memoria e gli stessi IOPS. È possibile ottenere i memory-to-CPU rapporti desiderati per requisiti specifici del carico di lavoro del database e ridurre i costi di licenza per il sistema operativo Microsoft Windows e SQL Server, che si basano sul numero di vCPU.

Per specificare la funzionalità del processore, utilizzate i seguenti parametri:

```
--processor-features "Name=coreCount,Value=value" \ 
	"Name=threadsPerCore,Value=value"
```
+ **CoreCount**: specifica il numero di core CPU per l'istanza DB, per ottimizzare i costi di licenza per le istanze DB. Vedi [Classi di istanze DB che supportano Optimize CPUSupporto delle classi di istanza database](SQLServer.Concepts.General.OptimizeCPU.Support.md) per trovare i valori consentiti per il numero di core per un tipo di istanza selezionato.
+ **threadsPerCore**— Specificate i thread per core per definire il numero di thread per core della CPU. Vedi [Classi di istanze DB che supportano Optimize CPUSupporto delle classi di istanza database](SQLServer.Concepts.General.OptimizeCPU.Support.md) per trovare i valori consentiti per i thread per core per un tipo di istanza selezionato.

Comando di esempio per creare un'istanza RDS per SQL Server con le impostazioni di Optimize CPU:

```
aws rds create-db-instance \
    --engine sqlserver-ee \
    --engine-version 16.00 \
    --license-model license-included \
    --allocated-storage 300 \
    --master-username myuser \
    --master-user-password xxxxx \
    --no-multi-az \
    --vpc-security-group-ids myvpcsecuritygroup \
    --db-subnet-group-name mydbsubnetgroup \
    --db-instance-identifier my-rds-instance \
    --db-instance-class db.m7i.8xlarge \
    --processor-features "Name=coreCount,Value=8" "Name=threadsPerCore,Value=1"
```

In questo esempio, si crea un'`db.m7i.8xlarge`istanza, che per impostazione predefinita ha un CoreCount pari a 16. Utilizzando Optimize CPU, si opta per un CoreCount pari a 8, con conseguente conteggio effettivo di vCPU pari a 8.

Se si crea l'istanza senza il `--processor-features` parametro, il numero di core è impostato su 16 e il numero di thread per core è impostato su 1 per impostazione predefinita, con un numero di vCPU predefinito di 16.

Alcune considerazioni da tenere a mente quando si specificano le caratteristiche del processore:
+ **Crea**: specifica sia il `coreCount` `processor-features` parametro che quello `threadsPerCore` relativo ai valori consentiti. Per informazioni, consulta [Classi di istanze DB che supportano Optimize CPUSupporto delle classi di istanza database](SQLServer.Concepts.General.OptimizeCPU.Support.md).
+ **Modifica**: quando si esegue la modifica da una classe di istanza configurata con Optimize CPU settings a un'altra che supporta le impostazioni di Optimize CPU, è necessario specificare le impostazioni predefinite del processore utilizzando il `--use-default-processor-features` parametro o definire esplicitamente le opzioni durante la richiesta di modifica.
**Nota**  
La modifica del numero di vCPU può avere implicazioni sul costo del canone di licenza associato all'istanza DB.
+ **Ripristino istantanea**: quando si ripristina un'istantanea sullo stesso tipo di istanza dell'origine, l'istanza DB ripristinata eredita le impostazioni di Optimize CPU dall'istantanea. Se si esegue il ripristino su un tipo di istanza diverso, è necessario definire le impostazioni di Optimize CPU per l'istanza di destinazione o specificare il parametro. `--use-default-processor-features`
+ **Point-in-time restore** — Point-in-time restore (PITR) prevede il ripristino di un'istantanea specifica in base all'ora designata per PITR e successivamente l'applicazione di tutti i backup dei log transazionali a tale istantanea, riportando così l'istanza al momento specificato. Per PITR, le impostazioni di Optimize CPU `coreCount` e`threadsPerCore`, derivano dallo snapshot di origine (non dal point-in-time), a meno che non vengano specificati valori personalizzati durante la richiesta PITR. Se l'istantanea di origine utilizzata è abilitata con Optimize CPU settings e si utilizza un tipo di istanza diverso per PITR, è necessario definire le impostazioni Optimize CPU per l'istanza di destinazione o specificare il parametro. `—-use-default-processor-features`

## Limitazioni
<a name="SQLServer.Concepts.General.OptimizeCPU.Limitations"></a>

Le seguenti limitazioni si applicano all'utilizzo di Optimize CPU:
+ Optimize CPU è supportato solo con le edizioni Enterprise, Standard e Web.
+ Optimize CPU è disponibile su istanze selezionate. Per informazioni, consulta [Classi di istanze DB che supportano Optimize CPUSupporto delle classi di istanza database](SQLServer.Concepts.General.OptimizeCPU.Support.md).
+ La personalizzazione del numero di core della CPU è supportata su istanze di `2xlarge` dimensioni pari o superiori. Con questi tipi di istanze, il numero minimo di vcPCU supportato per Optimize CPU è 4.
+ Optimize CPU consente solo 1 thread per core poiché Hyper-Threading è disabilitato per le istanze a partire dalla settima generazione che supportano Optimize CPU.

# Classi di istanze DB che supportano Optimize CPU
<a name="SQLServer.Concepts.General.OptimizeCPU.Support"></a>

RDS per SQL Server supporta Optimize CPU a partire dal tipo di classe di istanza di settima generazione. Inoltre, RDS fornisce un'analisi dettagliata della fatturazione delle tariffe di licenza delle istanze DB RDS e dei costi di licenza di terze parti, a partire dal tipo di classe di istanza di settima generazione, indipendentemente dal fatto che la funzionalità Optimize CPU sia abilitata.

RDS per SQL Server fornisce il supporto per Optimize CPU su istanze di dimensioni specifiche, con la dimensione di istanza più piccola supportata. `2xlarge` La configurazione minima supportata è 4 v. CPUs La tabella seguente descrive le classi di istanze DB che supportano Optimize CPU, inclusi i valori predefiniti e validi per i core della CPU, i thread della CPU per core e v: CPUs 


**Istanze per uso generale**  

| Tipo di istanza | Valore predefinito v CPUs | Core CPU predefiniti | Core CPU validi | Thread validi per core | 
| --- | --- | --- | --- | --- | 
| `m7i.large` | 2 | 1 | 1 | 2 | 
| `m7i.xlarge` | 4 | 2 | 2 | 2 | 
| `m7i.2xlarge` | 4 | 4 | 1,2,3,4 | 1 | 
| `m7i.4xlarge` | 8 | 8 | 1,2,3,4,5,6,7,8 | 1 | 
| `m7i.8xlarge` | 16 | 16 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 | 1 | 
| `m7i.12xlarge` | 24 | 24 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 | 1 | 
| `m7i.16xlarge` | 32 | 32 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32 | 1 | 


**Istanze con memoria ottimizzata**  

| Tipo di istanza | Valore predefinito v CPUs | Core CPU predefiniti | Core CPU validi | Thread validi per core | 
| --- | --- | --- | --- | --- | 
| `r7i.large` | 2 | 1 | 1 | 2 | 
| `r7i.xlarge` | 4 | 2 | 2 | 2 | 
| `r7i.2xlarge` | 4 | 4 | 1,2,3,4 | 1 | 
| `r7i.4xlarge` | 8 | 8 | 1,2,3,4,5,6,7,8 | 1 | 
| `r7i.8xlarge` | 16 | 16 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 | 1 | 
| `r7i.12xlarge` | 24 | 24 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 | 1 | 
| `r7i.16xlarge` | 32 | 32 | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32 | 1 | 

# Impostazione dei core CPU e dei thread per core CPU per una classe di istanza database
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling"></a>

Puoi configurare il numero di core CPU e di thread per core per la classe di istanza database quando esegui le operazioni seguenti:
+ [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md)
+ [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md)
+ [Ripristino in un’istanza database](USER_RestoreFromSnapshot.md)
+ [Ripristino di un’istanza database a un punto temporale specifico per Amazon RDS](USER_PIT.md)

**Nota**  
Quando si modifica un'istanza DB per configurare il numero di core o thread della CPU per core, si verifica una breve interruzione simile a quella che si verifica quando si modifica la classe dell'istanza.

Imposta i core della CPU utilizzando AWS CLI o l'API Console di gestione AWS RDS.

## Console
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling.CON"></a>

**Per impostare i core**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Scegliere **Crea database**.

1. Quando si impostano le opzioni di **configurazione dell'istanza**:

   1. Scegli l'opzione **Optimize CPU**.

   1. Imposta l'opzione **vCPU** scegliendo il numero di core.  
![\[Pagina di creazione del database durante l'impostazione delle impostazioni OCPU\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/OCPU-screenshot.png)

1. Dopo aver completato le altre selezioni, seleziona **Crea** database.

## AWS CLI
<a name="SQLServer.Concepts.General.OptimizeCPU.Enabling.CLI"></a>

**Per impostare i core**

1. Per configurare Optimize CPU utilizzando la CLI AWS, includi l'`--processor-features`opzione nel comando. Specificate il numero di core della CPU con `coreCount` e `threadsPerCore` as. `1`

1. Utilizzare la seguente sintassi:

   ```
   aws rds create-db-instance \
       --engine sqlserver-ee \
       --engine-version 16.00 \
       --license-model license-included \
       --allocated-storage 300 \
       --master-username myuser \
       --master-user-password xxxxx \
       --no-multi-az \
       --vpc-security-group-ids myvpcsecuritygroup \
       --db-subnet-group-name mydbsubnetgroup \
       --db-instance-identifier my-rds-instance \
       --db-instance-class db.m7i.4xlarge \
       --processor-features "Name=coreCount,Value=6" "Name=threadsPerCore,Value=1"
   ```

**Example di visualizzazione dei valori validi del processore per una classe di istanza DB**  
Usa il `describe-orderable-db-instance-options` comando per mostrare i vCPUs, i core e i thread predefiniti per core. Ad esempio, l'output del comando seguente mostra le opzioni del processore per la classe di istanze db.r7i.2xlarge.  

```
aws rds describe-orderable-db-instance-options --engine sqlserver-ee \
--db-instance-class db.r7i.2xlarge

Sample output: 
-------------------------------------------------------------
|            DescribeOrderableDBInstanceOptions             |
+-----------------------------------------------------------+
||               OrderableDBInstanceOptions                ||
|+------------------------------------+--------------------+|
||  DBInstanceClass                   |  db.r7i.2xlarge    ||
||  Engine                            |  sqlserver-ee      ||
||  EngineVersion                     |  13.00.6300.2.v1   ||
||  LicenseModel                      |  license-included  ||
||  MaxIopsPerDbInstance              |                    ||
||  MaxIopsPerGib                     |                    ||
||  MaxStorageSize                    |  64000             ||
||  MinIopsPerDbInstance              |                    ||
||  MinIopsPerGib                     |                    ||
||  MinStorageSize                    |  20                ||
||  MultiAZCapable                    |  True              ||
||  OutpostCapable                    |  False             ||
||  ReadReplicaCapable                |  True              ||
||  StorageType                       |  gp2               ||
||  SupportsClusters                  |  False             ||
||  SupportsDedicatedLogVolume        |  False             ||
||  SupportsEnhancedMonitoring        |  True              ||
||  SupportsGlobalDatabases           |  False             ||
||  SupportsIAMDatabaseAuthentication |  False             ||
||  SupportsIops                      |  False             ||
||  SupportsKerberosAuthentication    |  True              ||
||  SupportsPerformanceInsights       |  True              ||
||  SupportsStorageAutoscaling        |  True              ||
||  SupportsStorageEncryption         |  True              ||
||  SupportsStorageThroughput         |  False             ||
||  Vpc                               |  True              ||
|+------------------------------------+--------------------+|
|||                   AvailabilityZones                   |||
||+-------------------------------------------------------+||
|||                         Name                          |||
||+-------------------------------------------------------+||
|||  us-west-2a                                           |||
|||  us-west-2b                                           |||
|||  us-west-2c                                           |||
||+-------------------------------------------------------+||
|||              AvailableProcessorFeatures               |||
||+-----------------+-----------------+-------------------+||
|||  AllowedValues  |  DefaultValue   |       Name        |||
||+-----------------+-----------------+-------------------+||
|||  1,2,3,4        |  4              |  coreCount        |||
|||  1              |  1              |  threadsPerCore   |||
||+-----------------+-----------------+-------------------+||
```
Puoi inoltre eseguire i comandi seguenti per ottenere informazioni sul processore della classe di istanza database:  
+ `describe-db-instances`— Mostra le informazioni sul processore per l'istanza DB specificata
+ `describe-db-snapshots`— Mostra le informazioni sul processore per l'istantanea del DB specificata
+ `describe-valid-db-instance-modifications`— Mostra le modifiche valide al processore per l'istanza DB specificata
Nell'output del comando precedente, i valori per le funzionalità del processore sono `null` se Optimize CPU non è configurato.

**Example di impostare il numero di core della CPU per un'istanza DB**  
L'esempio seguente esegue una modifica *mydbinstance* impostando il numero di core della CPU su 4 threadsPerCore come 1. Applica immediatamente le modifiche utilizzando. `--apply-immediately` Se desideri applicare le modifiche durante la successiva finestra di manutenzione programmata, ometti`--apply-immediately option`.  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --db-instance-class db.r7i.8xlarge \
    --processor-features "Name=coreCount,Value=4" "Name=threadsPerCore,Value=1" \
    --apply-immediately
```

**Example di tornare alle impostazioni predefinite del processore per un'istanza DB**  
L'esempio seguente esegue la modifica *mydbinstance* restituendola ai valori predefiniti del processore corrispondente.  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --db-instance-class db.r7i.8xlarge \
    --use-default-processor-features \
    --apply-immediately
```

# Sicurezza del Server Microsoft SQL
<a name="SQLServer.Concepts.General.FeatureSupport.UnsupportedRoles"></a>

Il motore del database del Server Microsoft SQL utilizza la protezione basata sui ruoli. Il nome utente principale che si utilizza quando si crea un'istanza database è un accesso di autenticazione del Server SQL che è un membro del `processadmin`, `public`, e `setupadmin` ruoli del server fisso.

Quando un utente crea un database, gli viene assegnato il ruolo db\$1owner per tale database e dispone di tutte le autorizzazioni a livello di database ad eccezione di quelle utilizzate per i backup. Amazon RDS gestisce i backup per tuo conto.

I seguenti ruoli a livello di server non sono disponibili in Amazon RDS for SQL Server:
+ bulkadmin
+ dbcreator
+ diskadmin
+ securityadmin
+ serveradmin
+ sysadmin

Le seguenti autorizzazioni a livello server non sono disponibili sulle istanze database RDS per SQL Server:
+ ALTER ANY DATABASE
+ ALTER ANY EVENT NOTIFICATION
+ ALTER RESOURCES
+ ALTER SETTINGS (è possibile utilizzare le operazioni API del gruppo di parametri del database per modificare i parametri; per ulteriori informazioni, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md)) 
+ AUTENTICAZIONE AL SERVER
+ CONTROL\$1SERVER
+ CREAZIONE NOTIFICA AD EVENTO DDL
+ CREAZIONE ENDPOINT
+ CREAZIONE DI UN RUOLO SERVER
+ CREAZIONE NOTIFICA SULL'EVENTO TRACE
+ DROP ANY DATABASE
+ ASSEMBLAGGIO ACCESSO ESTERNO
+ ARRESTO ( È possibile invece utilizzare l'opzione di riavvio RDS)
+ ASSEMBLAGGIO NON SICURO
+ ALTER ANY AVAILABILITY GROUP
+ CREATE ANY AVAILABILITY GROUP

## Supporto SSL per istanze database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL"></a>

Ora puoi utilizzare Secure Sockets Layer (SSL) per crittografare le connessioni tra le applicazioni dei tuoi client e le istanze database Amazon RDS che eseguono Microsoft SQL Server. Puoi inoltre imporre a tutte le connessioni per la tua istanza database di utilizzare SSL. Se forzi l'utilizzo di SSL per le connessioni, ciò avviene in modo trasparente per il client e il client non deve effettuare alcuna operazione per utilizzare SSL. 

SSL è supportato in tutte le regioni AWS per tutte le edizioni di SQL Server supportate. Per ulteriori informazioni, consulta [Utilizzo di SSL con un'istanza database Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md). 

# Utilizzo di SSL con un'istanza database Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL.Using"></a>

Ora puoi utilizzare Secure Sockets Layer (SSL) per crittografare le connessioni tra le applicazioni client e le istanze database Amazon RDS che eseguono Microsoft SQL Server. Il supporto SSL è disponibile in tutte le AWS regioni per tutte le edizioni di SQL Server supportate. 

Quando crei un'istanza database di SQL Server, Amazon RDS crea un certificato SSL per l'istanza. Il certificato SSL include l'endpoint dell'istanza database come nome comune (CN) per il certificato SSL per la protezione contro attacchi di spoofing. 

Vi sono due modi per utilizzare SSL per connettersi all'istanza database di SQL Server: 
+ Forzare SSL per tutte le connessioni — ciò avviene in modo trasparente per il client e il client non deve effettuare alcuna operazione per utilizzare SSL. 
**Nota**  
Quando imposti `rds.force_ssl` su `1` e utilizzi le versioni 19.3, 20.0 e 20.2 di SSMS, assicurati di effettuare quanto segue:  
Abilitare **Considera attendibile il certificato del server** in SSMS.
Importare il certificato nel sistema.
+ Crittografare connessioni specifiche — viene configurata una connessione SSL da un computer client specifico e devi eseguire alcune operazioni nel client per crittografare le connessioni. 

Per informazioni sul supporto di Transport Layer Security (TLS) per SQL Server, consulta l'argomento relativo al [ supporto di TLS 1.2 per Microsoft SQL Server](https://support.microsoft.com/en-ca/help/3135244/tls-1-2-support-for-microsoft-sql-server).

## Imposizione dell'utilizzo di SSL per le connessioni all'istanza database
<a name="SQLServer.Concepts.General.SSL.Forcing"></a>

Puoi forzare l'utilizzo di SSL per tutte le connessioni all'istanza database. Se forzi l'utilizzo di SSL per le connessioni, ciò avviene in modo trasparente per il client e il client non deve effettuare alcuna operazione per utilizzare SSL. 

Per forzare l'utilizzo di SSL, utilizza il parametro `rds.force_ssl`. Per impostazione predefinita, il parametro `rds.force_ssl` è impostato su `0 (off)`. Imposta il parametro `rds.force_ssl` su `1 (on)` per forzare l'utilizzo di SSL per le connessioni. Il parametro `rds.force_ssl` è statico, quindi dopo aver modificato il valore devi riavviare l'istanza database per rendere effettiva la modifica. 

**Per forzare l'utilizzo di SSL per tutte le connessioni all'istanza database**

1. Determinare il gruppo di parametri collegato all'istanza database: 

   1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

   1. Nell'angolo in alto a destra della console Amazon RDS, scegli la AWS regione della tua istanza DB. 

   1. Nel riquadro di navigazione, scegliere **Databases (Database)** quindi scegliere il nome dell'istanza database per mostrarne i dettagli. 

   1. Scegliere la scheda **Configuration (Configurazione)**. Individuare il campo **Gruppo di parametri** nella sezione. 

1. Se necessario, creare un nuovo gruppo di parametri. Se l'istanza database utilizza il gruppo di parametri predefinito, è necessario creare un nuovo gruppo di parametri. Se l'istanza database utilizza un gruppo di parametri non predefinito, è possibile scegliere di modificare il gruppo di parametri esistente oppure di creare un nuovo gruppo di parametri. Se si modifica un gruppo di parametri esistente, la modifica interessa tutte le istanze database che utilizzano tale gruppo di parametri. 

   Per creare un nuovo gruppo di parametri, seguire le istruzioni in [Creazione di un gruppo di parametri database in Amazon RDS](USER_WorkingWithParamGroups.Creating.md). 

1. Modificare il gruppo di parametri nuovo o esistente per impostare il parametro `rds.force_ssl` su `true`. Per modificare un gruppo di parametri, seguire le istruzioni in [Modifica dei parametri in un gruppo di parametri database in Amazon RDS](USER_WorkingWithParamGroups.Modifying.md). 

1. Se è stato creato un nuovo gruppo di parametri, modificare l'istanza database per collegare il nuovo gruppo di parametri. Modificare l'impostazione **DB Parameter Group (Gruppo di parametri database)** dell'istanza database. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

1. Riavviare l'istanza database. Per ulteriori informazioni, consulta [Riavvio di un'istanza DB DB](USER_RebootInstance.md). 

## Crittografia di connessioni specifiche
<a name="SQLServer.Concepts.General.SSL.Client"></a>

Puoi forzare l’utilizzo di SSL per tutte le connessioni all’istanza database oppure puoi crittografare le connessioni solo da computer client specifici. Per utilizzare SSL da un client specifico, devi ottenere i certificati per il computer client, importare i certificati nel computer client e quindi crittografare le connessioni dal computer client. 

**Nota**  
Tutte le istanze di SQL Server create dopo il 5 agosto 2014 utilizzando l'endpoint dell'istanza database nel campo relativo al nome comune del certificato SSL. Prima del 5 agosto 2014, la verifica dei certificati SSL non era disponibile per le istanze di SQL Server basate su VPC. Se disponi di un'istanza database di SQL Server basata su VPC creata prima del 5 agosto 2014 e desideri utilizzare la verifica dei certificati SSL e garantire che l'endpoint dell'istanza sia incluso come nome comune per il certificato SSL per tale istanza database, rinomina l'istanza. Quando rinomini un'istanza database, viene distribuito un nuovo certificato e l'istanza viene riavviata per abilitare il nuovo certificato.

### Recupero di certificati per i computer client
<a name="SQLServer.Concepts.General.SSL.Certificates"></a>

Per crittografare le connessioni da un computer client a un'istanza database Amazon RDS che esegue Microsoft SQL Server, è necessario un certificato nel computer client. 

Per ottenere il certificato, scaricalo nel computer client. Puoi scaricare un certificato root che funziona per tutte le regioni. Puoi anche scaricare un bundle di certificati che contiene i certificati root sia nuovi che precedenti. Inoltre, puoi scaricare certificati intermedi specifici della regione. Per ulteriori informazioni sul download, consulta [](UsingWithRDS.SSL.md).

Dopo aver scaricato il certificato appropriato, importalo nel sistema operativo Microsoft Windows seguendo la procedura nella sezione successiva. 

### Importazione di certificati nei computer client
<a name="SQLServer.Concepts.General.SSL.Importing"></a>

Puoi utilizzare la procedura seguente per importare il certificato nel sistema operativo Microsoft Windows nel computer client. 

**Per importare il certificato nel sistema operativo Windows:**

1. Nel menu **Start** digitare **Run** nella casella di ricerca e premere **INVIO**. 

1. Nella casella **Apri** digitare **MMC** e quindi scegliere **OK**. 

1. Nella console MMC scegliere **Aggiungi/Rimuovi snap-in** dal menu **File**. 

1. Nella finestra di dialogo **Aggiungi o rimuovi snap-in**, per **Snap-in disponibili** selezionare **Certificates** e quindi scegliere **Avanti**. 

1. Nella finestra di dialogo **Snap-in certificati** scegliere **Account del computer** e quindi **Avanti**. 

1. Nella finestra di dialogo **Seleziona computer** scegliere **Fine**. 

1. Nella finestra di dialogo **Aggiungi o rimuovi snap-in** scegliere **OK**. 

1. Nella console MMC espandere **Certificati**, aprire il menu contestuale (clic con il pulsante destro del mouse) per **Autorità di certificazione radice attendibili**, scegliere **Tutte le attività** e quindi scegliere **Importa**. 

1. Nella prima pagina dell'Importazione guidata certificati scegliere **Avanti**. 

1. Nella seconda pagina dell'Importazione guidata certificati scegliere **Sfoglia**. Nella finestra del browser modificare il tipo di file scegliendo **Tutti i file (\$1.\$1)**, perché .pem non è un'estensione standard per i certificati. Individuare il file con estensione .pem scaricato in precedenza. 
**Nota**  
Quando ti connetti da client Windows come SQL Server Management Studio (SSMS), ti consigliamo di utilizzare il formato di certificato PKCS \$17 (.p7b) anziché il file global-bundle.pem. Il formato .p7b garantisce che l'intera catena di certificati, incluse le autorità di certificazione root e intermediate (), venga importata correttamente in Windows Certificate Store. CAs In questo modo si evitano gli errori di connessione che possono verificarsi quando è abilitata la crittografia obbligatoria, poiché le importazioni in formato.pem potrebbero non installare correttamente l'intera catena.

1. Scegliere **Apri** per selezionare il file del certificato e quindi scegliere **Avanti**. 

1. Nella terza pagina dell'Importazione guidata certificati scegliere **Avanti**. 

1. Nella quarta pagina dell'Importazione guidata certificati scegliere **Fine**. Viene visualizzata una finestra di dialogo che indica che l'importazione è riuscita. 

1. Nella console MMC espandere **Certificati**, espandere **Autorità di certificazione radice attendibili** e quindi scegliere **Certificati**. Individuare il certificato per verificarne l'esistenza, come illustrato di seguito.  
![\[Nel riquadro di navigazione della console MMC, la cartella Certificati viene visualizzata selezionando Radice console, Certificati (computer locale) e Autorità di certificazione radice attendibili. Nella pagina principale, seleziona il certificato CA richiesto.\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/rds_sql_ssl_cert.png)

### Crittografia di connessioni a un'istanza database Amazon RDS che esegue Microsoft SQL Server
<a name="SQLServer.Concepts.General.SSL.Encrypting"></a>

Dopo avere importato un certificato nel computer client, è possibile crittografare le connessioni dal computer client a un'istanza database Amazon RDS che esegue Microsoft SQL Server. 

Per SQL Server Management Studio, attieniti alla procedura seguente. Per ulteriori informazioni su SQL Server Management Studio, consulta [Utilizzare SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx). 

**Per crittografare le connessioni da SQL Server Management Studio**

1. Avviare SQL Server Management Studio. 

1. Per **Connetti al server** digitare le informazioni del server, il nome utente di accesso e la password. 

1. Scegliere **Opzioni**. 

1. Selezionare **Crittografa connessione**. 

1. Scegliere **Connetti**.

1. Verificare che la connessione sia crittografata eseguendo la query seguente. Verificare che la query restituisca `true` per `encrypt_option`. 

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```

Per qualsiasi altro client SQL, attieniti alla procedura seguente. 

**Per crittografare le connessioni da altri client SQL**

1. Aggiungere `encrypt=true` alla stringa di connessione. La stringa deve essere disponibile come opzione o come proprietà nella pagina della connessione negli strumenti dell'interfaccia utente grafica. 
**Nota**  
Per abilitare la crittografia SSL per i client che si connettono utilizzando JDBC, può essere necessario aggiungere il certificato SQL Amazon RDS all'archivio di certificati CA (cacerts) Java. A tale scopo, è possibile utilizzare l'utilità [ keytool](http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html). 

1. Verificare che la connessione sia crittografata eseguendo la query seguente. Verificare che la query restituisca `true` per `encrypt_option`. 

   ```
   select ENCRYPT_OPTION from SYS.DM_EXEC_CONNECTIONS where SESSION_ID = @@SPID
   ```

# Configurazione della crittografia e dei protocolli di SQL Server
<a name="SQLServer.Ciphers"></a>

È possibile attivare e disattivare determinati protocolli di sicurezza e cifrari utilizzando i parametri DB. I parametri di protezione che è possibile configurare (ad eccezione della versione 1.2 di TLS) sono riportati nella tabella seguente. 


****  

| Parametro DB | Valori consentiti (impostazione predefinita in grassetto) | Descrizione | 
| --- | --- | --- | 
| rds.tls10 | Impostazione predefinita, abilitato, disabilitato | TLS 1.0. | 
| rds.tls11 | Impostazione predefinita, abilitato, disabilitato | TLS 1.1. | 
| rds.tls12 | default | TLS 1.2. Non è possibile modificare questo valore. | 
| rds.fips | 0, 1 |  Quando si imposta il parametro su 1, RDS impone l'uso di moduli conformi allo standard Federal Information Processing Standard (FIPS) 140-2. Per ulteriori informazioni, consulta [Use SQL Server 2016 in FIPS 140-2-compliant mode (Utilizza SQL Server 2016 in modalità conforme a FIPS 140-2)](https://docs.microsoft.com/en-us/troubleshoot/sql/security/sql-2016-fips-140-2-compliant-mode) nella documentazione Microsoft.  | 
| rds.rc4 | Impostazione predefinita, abilitato, disabilitato | Cifratura flusso RC4. | 
| rds.diffie-hellman | Impostazione predefinita, abilitato, disabilitato | Crittografia dello scambio chiavi Diffie-Hellman. | 
| rds.diffie-hellman-min-key-bit-length | Impostazione predefinita, 1.024, 2.048, 3.072, 4.096 | Lunghezza minima del bit per le chiavi Diffie-Hellman. | 
| rds.curve25519 | Impostazione predefinita, abilitato, disabilitato | Crittografia Curve25519 a curva ellittica. Questo parametro non è supportato per tutte le versioni del motore. | 
| rds.3des168 | Impostazione predefinita, abilitato, disabilitato | Crittografia DES (Triple Data Encryption Standard) con una lunghezza di chiave a 168 bit. | 

**Nota**  
Per le versioni secondarie del motore successive alle versioni 16.00.4120.1, 15.00.4365.2, 14.00.3465.1, 13.00.6435.1 e 12.00.6449.1, l’impostazione predefinita per i parametri del database `rds.tls10`, `rds.tls11`, `rds.rc4`, `rds.curve25519`, e `rds.3des168` è *disabilitato*. In caso contrario, l’impostazione predefinita è *abilitato*.  
Per le versioni secondarie del motore successive alle versioni 16.00.4120.1, 15.00.4365.2, 14.00.3465.1, 13.00.6435.1 e 12.00.6449.1, l’impostazione predefinita per `rds.diffie-hellman-min-key-bit-length` è 3.072. In caso contrario, viene utilizzata l’impostazione predefinita 2.048.

Per configurare i protocolli e i cifrari di sicurezza, attenersi alla procedura descritta di seguito.

1. Creare un gruppo di parametri DB personalizzato.

1. Modificare i parametri nel gruppo di parametri.

1. Associare il gruppo di parametri DB all'istanza database.

Per ulteriori informazioni sui gruppi di parametri database, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

## Creazione del gruppo di parametri relativi alla sicurezza
<a name="CreateParamGroup.Ciphers"></a>

Creare un gruppo di parametri per i parametri relativi alla sicurezza che corrisponde all'edizione di SQL Server e alla versione dell'istanza database.

### Console
<a name="CreateParamGroup.Ciphers.Console"></a>

Nella procedura seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**.

1. Scegliere **Create parameter group (Crea gruppo di parametri)**.

1. Nel riquadro **Create parameter group (Crea gruppi di parametri)**, procedi nel modo seguente:

   1. Per **Famiglia del gruppo di parametri**, scegliere **sqlserver-se-13.0**.

   1. Per **Group name (Nome gruppo)**, immettere un identificatore per il gruppo di parametri, ad esempio **sqlserver-ciphers-se-13**.

   1. Per **Description (Descrizione)**, immettere **Parameter group for security protocols and ciphers**.

1. Scegliere **Create (Crea)**.

### CLI
<a name="CreateParamGroup.Ciphers.CLI"></a>

Nella procedura seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Parameter group for security protocols and ciphers"
  ```

  Per Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Parameter group for security protocols and ciphers"
  ```

## Modifica dei parametri relativi alla sicurezza
<a name="ModifyParams.Ciphers"></a>

Modificare i parametri relativi alla sicurezza nel gruppo di parametri che corrisponde all'edizione di SQL Server e alla versione dell'istanza database.

### Console
<a name="ModifyParams.Ciphers.Console"></a>

Nella procedura seguente, il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato. In questo esempio viene disattivata la versione 1.0 di TLS.

**Per modificare il gruppo di parametri**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**.

1. Scegliere il gruppo di parametri, ad esempio **sqlserver-ciphers-se-13**.

1. In **Parameters (Parametri)**, filtrare l'elenco dei parametri per **rds**.

1. Scegliere **Edit parameters (Modifica parametri)**.

1. Scegliere **rds.tls10**.

1. Per **Values (Valori)**, scegliere **Disabled (Disabilitato)**.

1. Scegli **Save changes** (Salva modifiche).

### CLI
<a name="ModifyParams.Ciphers.CLI"></a>

Nella procedura seguente, il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato. In questo esempio viene disattivata la versione 1.0 di TLS.

**Per modificare il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

  Per Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --parameters "ParameterName='rds.tls10',ParameterValue='disabled',ApplyMethod=pending-reboot"
  ```

## Associazione del gruppo di parametri relativi alla sicurezza all'istanza database
<a name="AssocParamGroup.Ciphers"></a>

Per associare il gruppo di parametri all'istanza database, utilizzare Console di gestione AWS o AWS CLI.

### Console
<a name="AssocParamGroup.Ciphers.Console"></a>

È possibile associare il gruppo di parametri a un'istanza database nuova o esistente:
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="AssocParamGroup.Ciphers.CLI"></a>

È possibile associare il gruppo di parametri a un'istanza database nuova o esistente:

**Per creare un'istanza database con il gruppo di parametri**
+ Specificare lo stesso tipo di motore di database e la versione principale utilizzati durante la creazione del gruppo di parametri.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --master-user-password secret123 \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --master-user-password secret123 ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name sqlserver-ciphers-se-13
  ```
**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

**Per modificare un'istanza database e associare il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name sqlserver-ciphers-se-13 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name sqlserver-ciphers-se-13 ^
      --apply-immediately
  ```

# Aggiornamento delle applicazioni per la connessione a istanze di database Microsoft SQL Server utilizzando nuovi certificati SSL/TLS
<a name="ssl-certificate-rotation-sqlserver"></a>

A partire dal 13 gennaio 2023, Amazon RDS ha pubblicato nuovi certificati dell'autorità di certificazione (CA) per la connessione alle istanze database RDS utilizzando Secure Socket Layer o Transport Layer Security (SSL/TLS). Di seguito sono disponibili le informazioni sull'aggiornamento delle applicazioni per utilizzare i nuovi certificati.

Questo argomento aiuta a determinare se le applicazioni client utilizzano SSL/TLS per connettersi alle istanze database. In caso affermativo, puoi determinare anche se le applicazioni richiedono la verifica del certificato per la connessione. 

**Nota**  
Alcune applicazioni sono configurate per connettersi alle istanze database SQL Server solo se sono in grado di verificare correttamente il certificato sul server.   
Per queste applicazioni, è necessario aggiornare gli archivi di trust delle applicazioni client per includere i nuovi certificati CA. 

Dopo aver aggiornato i certificati CA negli archivi di trust delle applicazioni client, puoi ruotare i certificati nelle istanze database. Consigliamo vivamente di testare queste procedure in un ambiente di sviluppo o di gestione temporanea prima di implementarle negli ambienti di produzione.

Per ulteriori informazioni sulla rotazione dei certificati, consulta [Rotazione del certificato SSL/TLS](UsingWithRDS.SSL-certificate-rotation.md). Per ulteriori informazioni sul download, consulta [](UsingWithRDS.SSL.md). Per informazioni sull'utilizzo di SSL/TLS con le istanze database Microsoft SQL Server, consulta [Utilizzo di SSL con un'istanza database Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

**Topics**
+ [Determinare se un'applicazione si connette all'istanza database Microsoft SQL Server mediante SSL](#ssl-certificate-rotation-sqlserver.determining-server)
+ [Determinare se un client richiede la verifica del certificato per la connessione](#ssl-certificate-rotation-sqlserver.determining-client)
+ [Aggiornare l'archivio di trust delle applicazioni](#ssl-certificate-rotation-sqlserver.updating-trust-store)

## Determinare se un'applicazione si connette all'istanza database Microsoft SQL Server mediante SSL
<a name="ssl-certificate-rotation-sqlserver.determining-server"></a>

Verifica la configurazione delle istanze database per il valore del parametro `rds.force_ssl`. Per impostazione predefinita, il parametro `rds.force_ssl` è impostato su 0 (off). Se il parametro`rds.force_ssl` è impostato su1 (attivato), i client devono utilizzare SSL/TLS per le connessioni. Per ulteriori informazioni sui gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

Eseguire la seguente query per ottenere l'opzione di crittografia corrente per tutte le connessioni aperte a un'istanza database. Se la connessione è crittografata, la colonna `ENCRYPT_OPTION` restituisce `TRUE`.

```
select SESSION_ID,
    ENCRYPT_OPTION,
    NET_TRANSPORT,
    AUTH_SCHEME
    from SYS.DM_EXEC_CONNECTIONS
```

La query mostra solo le connessioni correnti. Non indica se le applicazioni collegate e scollegate in precedenza hanno utilizzato SSL.

## Determinare se un client richiede la verifica del certificato per la connessione
<a name="ssl-certificate-rotation-sqlserver.determining-client"></a>

Puoi verificare se i diversi tipi di client richiedono la verifica del certificato per la connessione.

**Nota**  
Se si utilizzano connettori diversi da quelli elencati, consultare la documentazione specifica del connettore per le informazioni relative a come vengono applicate le connessioni crittografate. Per ulteriori informazioni, consultare [Moduli di connessione per i database Microsoft SQL](https://docs.microsoft.com/en-us/sql/connect/sql-connection-libraries?view=sql-server-ver15) nella documentazione di Microsoft SQL Server.

### Avviare SQL Server Management Studio
<a name="ssl-certificate-rotation-sqlserver.determining-client.management-studio"></a>

Verificare se è attivata la crittografia per le connessioni di SQL Server Management Studio:

1. Avviare SQL Server Management Studio.

1. Per **Connect to server (Connetti al server)** digitare le informazioni del server, il nome utente di accesso e la password.

1. Scegli **Opzioni**.

1. Verificare se è selezionata **Encrypt connection (Connessione crittografata)** nella pagina di connessione.

Per ulteriori informazioni su SQL Server Management Studio, consulta [Utilizzare SQL Server Management Studio](http://msdn.microsoft.com/en-us/library/ms174173.aspx).

### Sqlcmd
<a name="ssl-certificate-rotation-sqlserver.determining-client.sqlcmd"></a>

Il seguente esempio con il client `sqlcmd` illustra come verificare la connessione SQL Server di uno script per determinare se le connessioni riuscite richiedono un certificato valido. Per ulteriori informazioni, consulta la sezione relativa alla [connessione con sqlcmd](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connecting-with-sqlcmd?view=sql-server-ver15) nella documentazione di Microsoft SQL Server.

Quando utilizzi `sqlcmd`, la connessione SSL richiede la verifica del certificato CA del server se utilizzi l'argomento del comando `-N` per crittografare le connessioni come nell'esempio seguente.

```
$ sqlcmd -N -S dbinstance.rds.amazon.com -d ExampleDB                     
```

**Nota**  
Se `sqlcmd` viene richiamato con l'opzione `-C`, considera attendibile il certificato del server, anche se non corrisponde all'archivio store di trust lato client.

### ADO.NET
<a name="ssl-certificate-rotation-sqlserver.determining-client.adonet"></a>

Nel seguente esempio, l'applicazione di collega utilizzando SSL e il certificato del server deve essere verificato.

```
using SQLC = Microsoft.Data.SqlClient;
 
...
 
    static public void Main()  
    {  
        using (var connection = new SQLC.SqlConnection(
            "Server=tcp:dbinstance.rds.amazon.com;" +
            "Database=ExampleDB;User ID=LOGIN_NAME;" +
            "Password=YOUR_PASSWORD;" + 
            "Encrypt=True;TrustServerCertificate=False;"
            ))
        {  
            connection.Open();  
            ...
        }
```

### Java
<a name="ssl-certificate-rotation-sqlserver.determining-client.java"></a>

Nel seguente esempio, l'applicazione di collega utilizzando SSL e il certificato del server deve essere verificato.

```
String connectionUrl =   
    "jdbc:sqlserver://dbinstance.rds.amazon.com;" +  
    "databaseName=ExampleDB;integratedSecurity=true;" +  
    "encrypt=true;trustServerCertificate=false";
```

Per abilitare la crittografia SSL per i client che si connettono utilizzando JDBC, può essere necessario aggiungere il certificato Amazon RDS all'archivio di certificati CA Java. Per istruzioni, consultare [Configurazione del client per la crittografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017) nella documentazione Microsoft SQL Server. È anche possibile fornire direttamente il nome del file del certificato CA attendibile aggiungendo `trustStore=path-to-certificate-trust-store-file` alla stringa di connessione.

**Nota**  
Se si utilizza `TrustServerCertificate=true` (o l'equivalente) nella stringa di connessione, il processo di connessione ignora la convalida della catena di attendibilità. In questo caso l'applicazione si connette anche se non è possibile verificare il certificato. L'utilizzo di `TrustServerCertificate=false` applica la convalida dei certificati ed è una best practice.

## Aggiornare l'archivio di trust delle applicazioni
<a name="ssl-certificate-rotation-sqlserver.updating-trust-store"></a>

Puoi aggiornare l'archivio di trust delle applicazioni che utilizzano Microsoft SQL Server. Per istruzioni, consultare [Crittografia di connessioni specifiche](SQLServer.Concepts.General.SSL.Using.md#SQLServer.Concepts.General.SSL.Client). Consultare anche [Configurazione del client per la crittografia](https://docs.microsoft.com/en-us/SQL/connect/jdbc/configuring-the-client-for-ssl-encryption?view=sql-server-2017) nella documentazione Microsoft SQL Server.

Se si sta utilizzando un sistema operativo diverso da Microsoft Windows, consultare la documentazione relativa alla distribuzione del software per l'implementazione SSL/TLS per informazioni relative all'aggiunta di un nuovo certificato CA root. Ad esempio, OpenSSL e GnuTLS sono le opzioni più comunemente usate. Utilizzare il metodo di implementazione per aggiungere trust al certificato CA root RDS. Microsoft fornisce le istruzioni per la configurazione dei certificati su alcuni sistemi.

Per ulteriori informazioni sul download del certificato root, consulta [](UsingWithRDS.SSL.md).

Per gli script di esempio che importano i certificati, consulta [Script di esempio per l'importazione di certificati nel tuo archivio di trust](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

**Nota**  
Quando aggiorni l'archivio di trust puoi conservare i certificati meno recenti oltre ad aggiungere i nuovi certificati.

## Supporto del Programma di Conformità per le istanze di database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.Compliance"></a>

AWS I servizi in questione sono stati completamente valutati da un revisore esterno e hanno prodotto una certificazione, un attestato di conformità o l'Authority to Operate (ATO). Per ulteriori informazioni, consulta [Servizi AWS coperti dal programma di compliance](https://aws.amazon.com/compliance/services-in-scope/).

### Supporto HIPAA per le istanze di database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.HIPAA"></a>

Puoi utilizzare i database Amazon RDS for Microsoft SQL Server per creare applicazioni conformi a HIPAA. Puoi archiviare informazioni sanitarie, inclusi dati sanitari protetti (PHI), in base a un Contratto di società in affari (BAA) con AWS. Per ulteriori informazioni, consulta [Compliance HIPAA](https://aws.amazon.com/compliance/hipaa-compliance/).

Amazon RDS for SQL Server supporta HIPAA per le seguenti versioni ed edizioni:
+ SQL Server 2022: edizioni Enterprise, Standard e Web
+ SQL Server 2019: edizioni Enterprise, Standard e Web
+ SQL Server 2017: edizioni Enterprise, Standard e Web
+ SQL Server 2016: edizioni Enterprise, Standard e Web

Per abilitare il supporto HIPAA sull'istanza database, impostare i seguenti tre componenti.


****  

| Componente | Informazioni | 
| --- | --- | 
|  Audit  |  Per impostare il controllo, impostare il parametro `rds.sqlserver_audit` sul valore `fedramp_hipaa`. Se l'istanza database non sta già utilizzando un gruppo di parametri database personalizzati, è necessario creare un gruppo di parametri personalizzati e collegarlo all'istanza database prima di poter modificare il parametro `rds.sqlserver_audit` Per ulteriori informazioni, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).  | 
|  Crittografia del trasporto  |  Per impostare la crittografia del trasporto, forzare tutte le connessioni all'istanza database per utilizzare Secure Sockets Layer (SSL). Per ulteriori informazioni, consulta [Imposizione dell'utilizzo di SSL per le connessioni all'istanza database](SQLServer.Concepts.General.SSL.Using.md#SQLServer.Concepts.General.SSL.Forcing).  | 
|  Crittografia dei dati inattivi  |  Per impostare la crittografia a riposo, hai due opzioni: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html)  | 

# Versioni di Microsoft SQL Server su Amazon RDS
<a name="SQLServer.Concepts.General.VersionSupport"></a>

Quando crei una nuova istanza database, puoi specificare qualsiasi versione di Microsoft SQL Server attualmente supportata. Puoi specificare la versione principale di Microsoft SQL Server (ad esempio Microsoft SQL Server 14.00) e qualsiasi versione secondaria supportata per la versione principale specificata. Se non viene specificata alcuna versione, Amazon RDS utilizza per impostazione predefinita una versione supportata, in genere la più recente. Se viene specificata una versione principale ma non una secondaria, per impostazione predefinita Amazon RDS utilizza una release recente della versione principale specificata.

Nella tabella seguente vengono illustrate le versioni di SQL Server supportate per tutte le edizioni e tutte le Regioni AWS , tranne dove indicato. 

**Nota**  
È inoltre possibile utilizzare il [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI comando per visualizzare un elenco di versioni supportate, nonché i valori predefiniti per le istanze DB appena create. È possibile visualizzare le versioni principali dei database di SQL Server eseguendo il AWS CLI comando [describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) o utilizzando l'operazione [Descrivi DBMajor EngineVersions RDS](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) API.


| Versione principale | Versione secondaria | API `EngineVersion` e CLI RDS `engine-version` | 
| --- | --- | --- | 
| SQL Server 2022 |  16.00.4236.2 () CU23 16.00.4230.2 (GDR) CU22  16,00,4225,2 CU22 () 16,00,4215,2 (CU21) 16.00.4210.1 (RDT) CU20  16,00,4205,1 () CU20 16,00,4195,2 () CU19 16,00,4185,3 (CU18) 16,00,475,1 (CU17) 16,00,4165,4 () CU16 16,00,4150,1 (CU15) 16.00.4140.3 (GDR) CU14  CU1416.00,4135,4 () 16,00,4131,2 (CU13) 16,00,4125,3 () CU13 16.00.4120.1 (RDT) CU12  16.00,4115,5 () CU12 16,00,4105,2 (CU11) 16,00,4095,4 (CU10) 16,00,4085,2 (CU9)  |  `16.00.4236.2.v1` `16.00.4230.2.v1` `16.00.4225.2.v1` `16.00.4215.2.v1` `16.00.4210.1.v1` `16.00.4205.1.v1` `16.00.4195.2.v1` `16.00.4185.3.v1` `16.00.4175.1.v1` `16.00.4165.4.v1` `16.00.4150.1.v1` `16.00.4140.3.v1` `16.00.4135.4.v1` `16.00.4131.2.v1` `16.00.4125.3.v1` `16.00.4120.1.v1` `16.00.4115.5.v1` `16.00.4105.2.v1` `16.00.4095.4.v1` `16.00.4085.2.v1`  | 
| SQL Server 2019 |  15.00.445.2 (RDT) CU32  15.00.445.1 (CU32 GDR) 15.00.440.1 (CU32 GDR) 15,00435,7 () CU32 15,00,4430,1 (CU32) 15,00,4420,2 (CU31) 15,00,4415,2 (CU30) 15.00.4410.1 (RDT) CU29  15,00,4395,2 () CU28 15,00,4390,2 (CU28) 15,00,4385,2 () CU28 15,00,4382,1 (CU27) 15,00,4375,4 () CU27 15,00,4365,2 (CU26) 15,00,435,3 (CU25) 15,00,4345,5 (CU24) 15,00,4335,1 (CU23) 15,00,432,2 () CU22 15,00,4316,3 (CU21) 15,00,4312,2 (CU20) 15,00,4236,7 (CU16) 15,00,4198,2 (CU15) 15,00,4153,1 (CU12) 15,00,4073,23 () CU8 15,00,4043,16 (CU5)  |  `15.00.4455.2.v1` `15.00.4445.1.v1` `15.00.4440.1.v1` `15.00.4435.7.v1` `15.00.4430.1.v1` `15.00.4420.2.v1` `15.00.4415.2.v1` `15.00.4410.1.v1` `15.00.4395.2.v1` `15.00.4390.2.v1` `15.00.4385.2.v1` `15.00.4382.1.v1` `15.00.4375.4.v1` `15.00.4365.2.v1` `15.00.4355.3.v1` `15.00.4345.5.v1` `15.00.4335.1.v1` `15.00.4322.2.v1` `15.00.4316.3.v1` `15.00.4312.2.v1` `15.00.4236.7.v1` `15.00.4198.2.v1` `15.00.4153.1.v1` `15.00.4073.23.v1` `15.00.4043.16.v1`  | 
| SQL Server 2017 |  14.00.3515.1 (RDT) CU31  14.00.3505.1 (CU31 GDR) 14,0035001. (RDTCU31 ) 14.00.3495.9 (RDT) CU31  14.00.3485.1 (CU31 GDR) 14.00.3480.1 () CU31 14,00,3475,1 (CU31) 14,0,3471,2 (CU31) 14,00,3465,1 (CU31) 14,00,3460,9 (CU31) 14,00,3451,2 (CU30) 14,00,3421,10 (CU27) 14,00,3401,7 (CU25) 14,003381,3 () CU23 14,003356,20 (CU22) 14,00,3294,2 (CU20) 14,00,3281,6 () CU19  |  `14.00.3515.1.v1` `14.00.3505.1.v1` `14.00.3500.1.v1` `14.00.3495.9.v1` `14.00.3485.1.v1` `14.00.3480.1.v1` `14.00.3475.1.v1` `14.00.3471.2.v1` `14.00.3465.1.v1` `14.00.3460.9.v1` `14.00.3451.2.v1` `14.00.3421.10.v1` `14.00.3401.7.v1` `14.00.3381.3.v1` `14.00.3356.20.v1` `14.00.3294.2.v1` `14.00.3281.6.v1`  | 
| SQL Server 2016 |  13.0.6475.1 (GDR) 13.0.6470.1 (GDR) 13.00.6465.1 (GDR) 13.0.6460.7 (GDR) 13.00.6455.2 (GDR) 13.0.6450.1 (GDR) 13.0.6445.1 (GDR) 13.0.6441.1 (GDR) 13.00.6435.1 (GDR) 13.00.6430.49 (GDR) 13.00.6419.1 (\$1 aggiornamento rapido) SP3  SP313,00.630,2 ()  |  `14.00.6475.1.v1` `14.00.6470.1.v1` `13.00.6465.1.v1` `13.00.6460.7.v1` `13.00.6455.2.v1` `13.00.6450.1.v1` `13.00.6445.1.v1` `13.00.6441.1.v1` `13.00.6435.1.v1` `13.00.6430.49.v1` `13.00.6419.1.v1` `13.00.6300.2.v1`  | 

## Gestione della versione in Amazon RDS
<a name="SQLServer.Concepts.General.Version-Management"></a>

Amazon RDS include una gestione flessibile della versione che consente di controllare quando e come applicare una patch o un aggiornamento all'istanza database. Ciò consente di svolgere le seguenti operazioni con il motore del database:
+ Gestire la compatibilità con versioni di patch del motore del database.
+ Testare nuove versioni di patch per verificare che funzionino con la propria applicazione prima di distribuirle in produzione.
+ Pianificare ed eseguire aggiornamenti della versione per rispondere ai contratti sul livello di servizio e ai requisiti temporali

### Creazione di patch del motore Microsoft SQL Server in Amazon RDS
<a name="SQLServer.Concepts.General.Patching"></a>

Amazon RDS aggrega periodicamente le patch di database Microsoft SQL Server ufficiali a una versione del motore dell'istanza database specifica per Amazon RDS. Per ulteriori informazioni sulle patch Microsoft SQL Server in ogni versione del motore, consulta [Versione e caratteristiche di supporto su Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.FeatureSupport).

Attualmente, è possibile eseguire manualmente gli aggiornamenti del motore sull'istanza database. Per ulteriori informazioni, consulta [Aggiornamenti del motore di database Microsoft SQL Server](USER_UpgradeDBInstance.SQLServer.md). 

### Pianificazione dell'impostazione come obsoleto per le versioni principali del motore di Microsoft SQL Server su Amazon RDS
<a name="SQLServer.Concepts.General.Deprecated-Versions"></a>

La tabella seguente visualizza le pianificazioni delle impostazioni come obsoleto per le versioni principali del motore di Microsoft SQL Server.


| Data | Informazioni | 
| --- | --- | 
| 14 luglio 2026 |  Microsoft interromperà gli aggiornamenti delle patch critiche per SQL Server 2016. Per ulteriori informazioni, vedere [Microsoft SQL Server 2016](https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2016) nella documentazione Microsoft.  | 
| 14 luglio 2026 |  Amazon RDS prevede di terminare il supporto di Microsoft SQL Server 2016 su RDS per SQL Server. In quel momento, verrà pianificata la migrazione di tutte le istanze rimanenti a SQL Server 2017 (ultima versione secondaria disponibile). Per ulteriori informazioni, consulta [Annuncio: Amazon RDS for SQL Server termina il supporto per Microsoft SQL Server 2016](https://repost.aws/articles/ARGkeWligDSU-MQgBwUQj0nA/announcement-amazon-rds-for-sql-server-ending-support-for-microsoft-sql-server-2016). Per evitare un aggiornamento automatico da Microsoft SQL Server 2016, puoi eseguire l'aggiornamento nel momento che preferisci. Per ulteriori informazioni, consulta [Aggiornamento della versione del motore di di un'istanza database](USER_UpgradeDBInstance.Upgrading.md).  | 
| 15 gennaio 2026 | Amazon RDS sta iniziando a disabilitare la creazione di nuove istanze DB RDS per SQL Server utilizzando Microsoft SQL Server 2016. Per ulteriori informazioni, consulta [Annuncio: Amazon RDS for SQL Server termina il supporto per Microsoft SQL Server 2016](https://repost.aws/articles/ARGkeWligDSU-MQgBwUQj0nA/announcement-amazon-rds-for-sql-server-ending-support-for-microsoft-sql-server-2016). | 
| 9 luglio 2024 |  Microsoft interromperà gli aggiornamenti delle patch critiche per SQL Server 2014. Per ulteriori informazioni, consulta [Microsoft SQL Server 2014](https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2014) nella documentazione Microsoft.  | 
|  1 giugno 2024 |  Amazon RDS prevede di terminare il supporto di Microsoft SQL Server 2014 su RDS per SQL Server. In quel momento, tutte le istanze rimanenti verranno pianificate per la migrazione a SQL Server 2016 (ultima versione minore disponibile). Per ulteriori informazioni, consulta [Announcement: Amazon RDS for SQL Server ending support for SQL Server 2014 major versions](https://repost.aws/articles/AR-eyAH1PSSuevuZRUE9FV3A) (Annuncio: Amazon RDS per SQL Server termina il supporto delle versioni principali di SQL Server 2014). Per evitare un aggiornamento automatico da Microsoft SQL Server 2014, è possibile effettuare l'aggiornamento nel momento più comodo. Per ulteriori informazioni, consulta [Aggiornamento della versione del motore di di un'istanza database](USER_UpgradeDBInstance.Upgrading.md).  | 
| 12 luglio 2022 |  Microsoft interromperà gli aggiornamenti delle patch critiche per SQL Server 2012. Per ulteriori informazioni, consulta [Microsoft SQL Server 2012](https://docs.microsoft.com/en-us/lifecycle/products/microsoft-sql-server-2012) nella documentazione Microsoft.  | 
| 1 giugno 2022 |  Amazon RDS prevede di terminare il supporto di Microsoft SQL Server 2012 su RDS per SQL Server. In quel momento, tutte le istanze rimanenti verranno pianificate per la migrazione a SQL Server 2014 (ultima versione minore disponibile). Per ulteriori informazioni, consulta [Announcement: Amazon RDS for SQL Server ending support for SQL Server 2012 major versions](https://repost.aws/questions/QUFNiETqrMQ_WT_AXSxOYNOA). Per evitare un aggiornamento automatico da Microsoft SQL Server 2012, puoi effettuare l'aggiornamento nel momento più comodo per te. Per ulteriori informazioni, consulta [Aggiornamento della versione del motore di di un'istanza database](USER_UpgradeDBInstance.Upgrading.md).  | 
| 1 settembre 2021 | Amazon RDS sta iniziando a disabilitare la creazione di nuovi RDS per istanze database SQL Server utilizzando Microsoft SQL Server 2012. Per ulteriori informazioni, consulta [Announcement: Amazon RDS for SQL Server ending support for SQL Server 2012 major versions](https://repost.aws/questions/QUFNiETqrMQ_WT_AXSxOYNOA). | 
| 12 luglio 2019 |  Il team Amazon RDS ha impostato come obsoleto il supporto ìper Microsoft SQL Server 2008 R2 nel giugno 2019. È in corso la migrazione di tutte le istanze rimanenti di Microsoft SQL Server 2008 R2 a SQL Server 2012 (ultima versione minore disponibile).  Per evitare un aggiornamento automatico da Microsoft SQL Server 2008 R2, puoi effettuare l'aggiornamento nel momento più comodo per te. Per ulteriori informazioni, consulta [Aggiornamento della versione del motore di di un'istanza database](USER_UpgradeDBInstance.Upgrading.md).  | 
| 25 aprile 2019 | Entro la fine di aprile 2019, non sarà più possibile creare nuove istanze database Amazon RDS for SQL Server utilizzando Microsoft SQL Server 2008R2. | 

# Funzionalità di Microsoft SQL Server su Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport"></a>

Le versioni supportate di SQL Server su Amazon RDS includono le seguenti funzionalità. In generale, una versione include anche funzionalità delle versioni precedenti, salvo diversa indicazione nella documentazione Microsoft.

**Topics**
+ [Funzionalità di Microsoft SQL Server 2022](#SQLServer.Concepts.General.FeatureSupport.2022)
+ [Funzionalità di Microsoft SQL Server 2019](#SQLServer.Concepts.General.FeatureSupport.2019)
+ [Funzionalità di Microsoft SQL Server 2017](#SQLServer.Concepts.General.FeatureSupport.2017)
+ [Funzionalità di Microsoft SQL Server 2016](#SQLServer.Concepts.General.FeatureSupport.2016)
+ [Fine del supporto di Microsoft SQL Server 2014 su Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2014)
+ [Fine del supporto di Microsoft SQL Server 2012 su Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2012)
+ [Fine del supporto Microsoft SQL Server 2008 R2 su Amazon RDS](#SQLServer.Concepts.General.FeatureSupport.2008)
+ [Cambia il supporto Data Capture per le istanze del database di Microsoft SQL Server](SQLServer.Concepts.General.CDC.md)
+ [Caratteristiche non supportate e caratteristiche con supporto limitato](SQLServer.Concepts.General.FeatureNonSupport.md)

## Funzionalità di Microsoft SQL Server 2022
<a name="SQLServer.Concepts.General.FeatureSupport.2022"></a>

SQL Server 2022 include molte nuove funzionalità, come le seguenti: 
+ Ottimizzazione dei piani sensibile ai parametri: consente più piani memorizzati nella cache per una singola istruzione parametrizzata, riducendo potenzialmente i problemi relativi allo sniffing dei parametri.
+ Libro mastro per SQL Server: offre la possibilità di dimostrare a livello di crittografia che i dati non sono stati alterati senza autorizzazione.
+ Inizializzazione istantanea dei file per gli eventi di crescita dei file di log delle transazioni: consente un’esecuzione più rapida degli eventi di crescita dei log fino a 64 MB, anche per i database con TDE abilitata.
+ Miglioramenti della concorrenza di latch di pagina del sistema - Riduce il conflitto tra latch di pagina durante l’allocazione e la deallocazione di pagine ed estensioni di dati, offrendo significativi miglioramenti delle prestazioni in caso di pesanti carichi di lavoro di `tempdb`.

Per l’elenco completo delle funzionalità di SQL Server 2022, consulta [Novità di SQL Server 2022 (16.x)](https://learn.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2022?view=sql-server-ver16) nella documentazione Microsoft.

Per un elenco delle funzionalità non supportate, consulta [Caratteristiche non supportate e caratteristiche con supporto limitato](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Funzionalità di Microsoft SQL Server 2019
<a name="SQLServer.Concepts.General.FeatureSupport.2019"></a>

Il Server SQL 2019 include molte nuove caratteristiche, come le seguenti: 
+ Recupero accelerato del database (ADR) – Riduce il tempo di ripristino dell'arresto anomalo dopo un riavvio o un rollback delle transazioni a esecuzione prolungata.
+ Elaborazione intelligente delle query (IQP):
  + Feedback di concessione di memoria in modalità riga – Corregge automaticamente le concessioni eccessive, che altrimenti comporterebbero una perdita di memoria e una riduzione della concorrenza.
  + Modalità batch su rowstore – Consente l'esecuzione in modalità batch per carichi di lavoro analitici senza richiedere indici columnstore.
  + Compilazione differita variabile tabella – Migliora la qualità del piano e le prestazioni complessive per le query che fanno riferimento alle variabili di tabella.
+ Prestazioni intelligenti:
  + `OPTIMIZE_FOR_SEQUENTIAL_KEY` opzione di indice – Migliora la velocità effettiva per gli inserimenti ad alta concorrenza negli indici.
  + Miglioramento della scalabilità dei checkpoint indiretti – Aiuta i database con carichi di lavoro DML pesanti.
  + Aggiornamenti PFS (Concurrent Page Free Space) – Consente la gestione come latch condiviso anziché come latch esclusivo.
+ Monitoraggio dei miglioramenti
  + `WAIT_ON_SYNC_STATISTICS_REFRESH` tipo di attesa – Mostra il tempo accumulato a livello di istanza impiegato per le operazioni di aggiornamento delle statistiche sincrone.
  + Configurazioni con ambito database – Include `LIGHTWEIGHT_QUERY_PROFILING` e `LAST_QUERY_PLAN_STATS`.
  + Funzioni di gestione dinamica (DMFs): includono `sys.dm_exec_query_plan_stats` e`sys.dm_db_page_info`.
+ Avvertenze di troncamento dettagliato – Il messaggio di errore di troncamento dei dati per impostazione predefinita include i nomi delle tabelle e delle colonne e il valore troncato.
+ Creazione di indici in linea ripristinabili – In SQL Server 2017, è supportata solo la ricostruzione dell'indice online ripristinabili.

Per l'elenco completo delle caratteristiche di SQL Server 2019, consulta [Novità di SQL Server 2019 (15.x)](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15) nella documentazione Microsoft.

Per un elenco delle funzionalità non supportate, consulta [Caratteristiche non supportate e caratteristiche con supporto limitato](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Funzionalità di Microsoft SQL Server 2017
<a name="SQLServer.Concepts.General.FeatureSupport.2017"></a>

Il Server SQL 2017 include molte nuove caratteristiche, come le seguenti: 
+ Elaborazione adattiva delle query
+ Correzione automatica del piano (caratteristica di regolazione automatica)
+ GraphDB
+ Ricostruzione di indici ripristinabili

Per l'elenco completo delle caratteristiche di SQL Server 2017, consulta [Novità di SQL Server 2017](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2017) nella documentazione Microsoft.

Per un elenco delle funzionalità non supportate, consulta [Caratteristiche non supportate e caratteristiche con supporto limitato](SQLServer.Concepts.General.FeatureNonSupport.md). 

## Funzionalità di Microsoft SQL Server 2016
<a name="SQLServer.Concepts.General.FeatureSupport.2016"></a>

Amazon RDS supporta le seguenti versioni del Server SQL 2016:
+ Sempre crittografato
+ Supporto JSON
+ Analisi operative
+ Archiviazione query
+ Tabelle globali

Per l'elenco completo delle caratteristiche di SQL Server 2016, consulta [Novità di SQL Server 2016](https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-2016) nella documentazione Microsoft.

## Fine del supporto di Microsoft SQL Server 2014 su Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2014"></a>

SQL Server 2014 ha raggiunto la fine del supporto su Amazon RDS.

RDS inizierà ad aggiornare tutte le istanze database esistenti che ancora utilizzano SQL Server 2014 all’ultima versione secondaria di SQL Server 2016. Per ulteriori informazioni, consulta [Gestione della versione in Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

## Fine del supporto di Microsoft SQL Server 2012 su Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2012"></a>

SQL Server 2012 ha raggiunto la fine del supporto su Amazon RDS.

RDS sta aggiornando tutte le istanze DB esistenti che utilizzano ancora SQL Server 2012 all'ultima versione secondaria di SQL Server 2016. Per ulteriori informazioni, consulta [Gestione della versione in Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

## Fine del supporto Microsoft SQL Server 2008 R2 su Amazon RDS
<a name="SQLServer.Concepts.General.FeatureSupport.2008"></a>

SQL Server 2008 R2 ha raggiunto la fine del supporto su Amazon RDS.

RDS inizierà ad aggiornare tutte le istanze database esistenti che ancora utilizzano SQL Server 2008 R2 all'ultima versione minore di SQL Server 2012. Per ulteriori informazioni, consulta [Gestione della versione in Amazon RDS](SQLServer.Concepts.General.VersionSupport.md#SQLServer.Concepts.General.Version-Management).

# Cambia il supporto Data Capture per le istanze del database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.CDC"></a>

Amazon RDS supporta Change Data Capture (CDC) per le istanze di database che eseguono Microsoft SQL Server. CDC acquisisce le modifiche apportate ai dati nelle tabelle e memorizza i metadati relativi a ogni modifica a cui è possibile accedere successivamente. Per ulteriori informazioni, consulta [Change Data Capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) nella documentazione di Microsoft. 

Amazon RDS supporta CDC per le seguenti edizioni e versioni di SQL Server:
+ Microsoft SQL Server Enterprise Edition (tutte le versioni) 
+ Microsoft SQL Server Standard Edition: 
  + 2022
  + 2019
  + 2017
  + 2016 versione 13.00.4422.0 SP1 CU2 e successive

Per utilizzare il CDC con il tuo Amazon RDS Istanze di database, prima abilitare o disabilitare il CDC a livello di database utilizzando le procedure di archiviazione fornite da RDS. Successivamente, qualsiasi utente che abbia il ruolo `db_owner` per quel database può utilizzare le procedure di archiviazione originarie di Microsoft per controllare il CDC su quel database. Per ulteriori informazioni, consulta [Utilizzo di Change Data Capture per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.CDC.md). 

Puoi usare CDC e AWS Database Migration Service per abilitare la replica continuativa dalle istanze database di SQL Server. 

# Caratteristiche non supportate e caratteristiche con supporto limitato
<a name="SQLServer.Concepts.General.FeatureNonSupport"></a>

Le seguenti caratteristiche di Microsoft SQL Server non sono supportate su Amazon RDS: 
+ Backup su Archiviazione BLOB di Microsoft Azure
+ Estensione del pool di buffer
+ Policy di password personalizzate
+ Servizi di Qualità dei Dati
+ Log di database
+ Snapshot del database (Amazon RDS supporta solo snapshot di istanze database)
+ Stored procedure estese, incluso xp\$1cmdshell
+ Supporto FILESTREAM
+ Tabelle di file
+ Machine Learning ed R Services (richiedono l'accesso al SO per l'installazione)
+ Piani di manutenzione
+ Prestazioni della raccolta dati
+ Gestione basata sulla Policy
+ PolyBase
+ Replica
+ Trigger a livello di server
+ Endpoint del broker del servizio
+ Database elastico
+ Proprietà del database TRUSTWORTHY (richiede il ruolo sysadmin)
+ Endpoint T-SQL (tutte le operazioni che usano CREATE ENDPOINT (Crea endpoint) non sono disponibili)
+ Servizi dei dati WCF

Le seguenti caratteristiche di Microsoft SQL Service hanno un supporto limitato su Amazon RDS:
+  queries/linked Server distribuiti. Per ulteriori informazioni, consulta [Implement linked servers with Amazon RDS for Microsoft SQL Server](https://aws.amazon.com/blogs/database/implement-linked-servers-with-amazon-rds-for-microsoft-sql-server/).
+ Common Runtime Language (CLR). Su RDS per SQL Server 2016 e versioni inferiori, CLR è supportato in modo `SAFE` e utilizzando solo i bit di assemblaggio. CLR non è supportato su RDS per SQL Server 2017 e versioni successive. Per ulteriori informazioni, consulta [Integrazione del Common Runtime Language](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/common-language-runtime-integration-overview) nella documentazione di Microsoft.
+ Collegamento di server con Oracle OLEDB in Amazon RDS per SQL Server. Per ulteriori informazioni, consulta [Supporto per server collegati con Oracle OLEDB in Amazon RDS per SQL Server](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md).

Le seguenti funzionalità non sono supportate su Amazon RDS con SQL Server 2022:
+ Sospensione del database per snapshot
+ Origine dati esterna
+ Backup e ripristino in archiviazione di oggetti compatibile con S3
+ Integrazione dell’archivio di oggetti
+ TLS 1.3 e MS-TDS 8.0
+ Offload della compressione di backup con QAT
+ SQL Server Analysis Services (SSAS)
+ Mirroring del database con le implementazioni Multi-AZ. SQL Server Always On è l’unico metodo supportato con le implementazioni Multi-AZ.

## Le implementazioni Multi-AZ utilizzando Microsoft SQL Server Database Mirroring o i gruppi di disponibilità Always On
<a name="SQLServer.Concepts.General.Mirroring"></a>

Amazon RDS supporta implementazioni Multi-AZ per istanze DB che eseguono Microsoft SQL Server utilizzando SQL Server Database Mirroring (DBM) o Always On Availability Groups (). AGs Le implementazioni Multi-AZ forniscono alle istanze database maggior disponibilità, longevità dei dati e tolleranza ai guasti. In caso di manutenzione pianificata del database o di interruzione non pianificata del servizio, Amazon RDS esegue automaticamente il failover sulla replica up-to-date secondaria in modo che le operazioni del database possano riprendere rapidamente senza interventi manuali. Le istanze primarie e secondarie usano lo stesso endpoint, il cui indirizzo di rete fisico passa alla replica secondaria passiva come parte del processo di failover. Non è necessario riconfigurare l'applicazione quando si verifica un failover. 

Amazon RDS gestisce il failover monitorando attivamente l'implementazione Multi-AZ e avviando un failover quando si verifica un problema con quello primario. Il failover ha luogo solo se le istanze di standby e primarie non sono completamente sincronizzate. Amazon RDS gestisce attivamente l'implementazione Multi-AZ riparando automaticamente le istanze database non funzionanti e ristabilendo la replica sincrona. Non è necessario gestire nulla. Amazon RDS gestisce l'istanza primaria, il testimone e l'istanza di standby al posto tuo. Quando configuri SQL Server Multi-AZ, RDS configura le istanze secondarie passive per tutti i database su un'istanza. 

Per ulteriori informazioni, consulta [Implementazioni Multi-AZ per Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md). 

## Uso della crittografia dei dati trasparente per crittografare i dati inattivi
<a name="SQLServer.Concepts.General.Options"></a>

Amazon RDS supporta l'utilizzo di Microsoft SQL Server Transparent Data Encryption (TDE), che esegue in modo trasparente la crittografia dei dati archiviati. Amazon RDS utilizza gruppi di opzioni per abilitare e configurare queste funzionalità. Per ulteriori informazioni sull'opzione TDE, consulta [Supporto per Transparent Data Encryption in SQL Server](Appendix.SQLServer.Options.TDE.md). 

# Funzioni e procedure archiviate per Amazon RDS for Microsoft SQL Server
<a name="SQLServer.Concepts.General.StoredProcedures"></a>

Di seguito, puoi trovare un elenco di funzioni e stored procedure Amazon RDS che consentono di automatizzare le attività di SQL Server. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.StoredProcedures.html)

# Fuso orario locale per le istanze di database di Microsoft SQL Server
<a name="SQLServer.Concepts.General.TimeZone"></a>

Il fuso orario di un'istanza database Amazon RDS che esegue Microsoft SQL Server è impostato in modo predefinito. L'impostazione predefinita corrente è Universal Coordinated Time (UTC). Ora puoi invece impostare il fuso orario delle istanze database su un fuso orario locale, per farlo corrispondere a quello delle applicazioni.

Puoi impostare il fuso orario quando si crea prima l'istanza database. Puoi creare l'istanza database utilizzando la [Console di gestione AWS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html), l'operazione [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html.html) dell'API di Amazon RDS o il comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) della AWS CLI.

Se l'istanza database fa parte di un'implementazione Multi-AZ (usando il SQL Server DBM o AG), quando si esegue il failover, il fuso orario rimane il fuso orario locale impostato. Per ulteriori informazioni, consulta [Le implementazioni Multi-AZ utilizzando Microsoft SQL Server Database Mirroring o i gruppi di disponibilità Always On](CHAP_SQLServer.md#SQLServer.Concepts.General.Mirroring).

Quando si richiede un ripristino point-in-time, si specifica il tempo di ripristino. L'ora viene visualizzata nel fuso orario locale. Per ulteriori informazioni, consulta [Ripristino di un’istanza database a un punto temporale specifico per Amazon RDS](USER_PIT.md). 

Le seguenti limitazioni riguardano l'impostazione del fuso orario locale sull'istanza database:
+ Non è possibile modificare il fuso orario di un'istanza database esistente del server SQL. 
+ Non è possibile ripristinare uno snapshot da un'istanza database in un fuso orario a un'istanza database in un fuso orario diverso. 
+ Consigliamo vivamente di non ripristinare un file di backup da un fuso orario a un fuso orario diverso. Se ripristini un file di backup da un fuso orario in un fuso orario diverso, devi controllare le query e le applicazioni per verificare gli effetti del cambiamento di fuso orario. Per ulteriori informazioni, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md). 

## Fusi orari supportati
<a name="SQLServer.Concepts.General.TimeZone.Zones"></a>

Puoi impostare il fuso orario locale su uno dei valori elencati nella tabella di seguito.


| Time zone (Fuso orario) | Offset temporale standard | Descrizione | Note | 
| --- | --- | --- | --- | 
| Orario standard Afghanistan | (UTC\$104:30) | Kabul | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Alaska | (UTC–09:00) | Alaska |  | 
| Orario standard delle Isole Aleutine | (UTC–10:00) | Isole Aleutine |  | 
| Orario standard Altai | (UTC\$107:00) | Barnaul, Gorno-Altaysk |  | 
| Orario standard arabo | (UTC\$103:00) | Kuwait, Riyad | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Arabia | (UTC\$104:00) | Abu Dhabi, Mascate |  | 
| Orario standard arabo | (UTC\$103:00) | Baghdad | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Argentina | (UTC–03:00) | Città di Buenos Aires | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Astrakhan | (UTC\$104:00) | Astrakhan, Ulyanovsk |  | 
| Orario standard Atlantico | (UTC–04:00) | Orario Atlantico (Canada) |  | 
| Orario standard Australia centrale | (UTC\$109:30) | Darwin | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Australia centrale | (UTC\$1 08:45) | Eucla |  | 
| Orario standard Australia orientale | (UTC\$110:00) | Canberra, Melbourne, Sydney |  | 
| Orario standard dell'Azerbaigian | (UTC\$104:00) | Baku |  | 
| Orario standard delle Azzorre | (UTC–01:00) | Azzorre |  | 
| Orario standard di Bahia | (UTC–03:00) | Salvador |  | 
| Orario standard del Bangladesh | (UTC\$106:00) | Dacca | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Bielorussia | (UTC\$103:00) | Minsk | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Bougainville | (UTC\$111:00) | Isola di Bougainville |  | 
| Orario standard Canada centrale | (UTC–06:00) | Saskatchewan | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Capo Verde | (UTC–01:00) | Capo Verde II. | Questo fuso orario non osserva l'ora legale. | 
| Orario standard del Caucaso | (UTC\$104:00) | Yerevan |  | 
| Cen. Ora standard Australia | (UTC\$109:30) | Adelaide |  | 
| Orario standard America centrale | (UTC–06:00) | America centrale | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Asia centrale | (UTC\$106:00) | Astana | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Brasile centrale | (UTC–04:00) | Cuiaba |  | 
| Orario standard Europa centrale | (UTC\$101:00) | Belgrado, Bratislava, Budapest, Lubiana, Praga |  | 
| Orario standard Europeo centrale | (UTC\$101:00) | Sarajevo, Skopje, Varsavia, Zagabria |  | 
| Orario standard Pacifico centrale | (UTC\$111:00) | Isole Salomone, Nuova Caledonia | Questo fuso orario non osserva l'ora legale. | 
| Orario standard centrale | (UTC–06:00) | Orario Centrale (Stati Uniti e Canada) |  | 
| Orario standard centrale (Messico) | (UTC–06:00) | Guadalajara, Città del Messico, Monterrey |  | 
| Orario standard Isole Chatham | (UTC\$1 12:45) | Isole Chatham |  | 
| Orario standard Cina | (UTC\$108:00) | Pechino, Chongqing, Hong Kong, Urumqi | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Cuba | (UTC–05:00) | L'Avana |  | 
| Orario standard della Dateline | (UTC–12:00) | Linea di data internazionale Ovest | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Africa orientale | (UTC\$103:00) | Nairobi | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Australia orientale | (UTC\$110:00) | Brisbane | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Europa orientale | (UTC\$102:00) | Chisinau |  | 
| Ora standard Sud America orientale | (UTC–03:00) | Brasilia |  | 
| Orario standard Isola di Pasqua | (UTC–06:00) | Isola di Pasqua |  | 
| Orario standard orientale | (UTC–05:00) | Orario orientale (Stati Uniti e Canada) |  | 
| Orario standard orientale (Messico) | (UTC–05:00) | Chetumal |  | 
| Orario standard Egitto | (UTC\$102:00) | Il Cairo |  | 
| Orario standard Ekaterinburg | (UTC\$1 05:00) | Ekaterinburg |  | 
| Orario standard Fiji | (UTC\$112:00) | Figi |  | 
| Orario standard FLE | (UTC\$102:00) | Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius |  | 
| Orario standard Georgia | (UTC\$104:00) | Tbilisi | Questo fuso orario non osserva l'ora legale. | 
| Orario standard GMT | (UTC) | Dublino, Edimburgo, Lisbona, Londra |  Questo fuso orario non è lo stesso di Greenwich Mean Time. Questo fuso orario osserva l'ora legale. | 
| Orario standard Groenlandia | (UTC–03:00) | Groenlandia |  | 
| Orario standard Greenwich | (UTC) | Monrovia, Reykjavik | Questo fuso orario non osserva l'ora legale. | 
| Orario standard GTB | (UTC\$102:00) | Atene, Bucarest |  | 
| Orario standard di Haiti | (UTC–05:00) | Haiti |  | 
| Orario standard Hawaii | (UTC–10:00) | Hawaii |  | 
| Orario standard India | (UTC\$105:30) | Chennai, Kolkata, Mumbai, Nuova Delhi | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Iran | (UTC\$1 03:30) | Teheran |  | 
| Orario standard di Israele | (UTC\$102:00) | Gerusalemme |  | 
| Orario standard Giordania | (UTC\$102:00) | Amman |  | 
| Orario standard di Kaliningrad | (UTC\$102:00) | Kaliningrad |  | 
| Orario standard Kamchatka | (UTC\$112:00) | Petropavlovsk-Kamchatsky – Vecchio |  | 
| Orario standard Corea | (UTC\$109:00) | Seoul | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Libia | (UTC\$102:00) | Tripoli |  | 
| Ora standard Isole Line | (UTC\$1 14:00) | Isola di Kiritimati |  | 
| Orario standard Lord Howe | (UTC\$1 10:30) | Isola di Lord Howe |  | 
| Orario standard Magadan | (UTC\$111:00) | Magadan | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Magallanes | (UTC–03:00) | Punta Arenas |  | 
| Orario standard delle Marchesi | (UTC–09:30) | Isole Marchesi |  | 
| Orario standard delle Mauritius | (UTC\$104:00) | Port Louis | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Medio Oriente | (UTC\$102:00) | Beirut |  | 
| Orario standard di Montevideo | (UTC–03:00) | Montevideo |  | 
| Orario standard del Marocco | (UTC\$101:00) | Casablanca |  | 
| Orario standard di montagna | (UTC–07:00) | Orario di montagna (Stati Uniti e Canada) |  | 
| Orario standard di montagna (Messico) | (UTC–07:00) | Chihuahua, La Paz, Mazatlan |  | 
| Orario standard del Myanmar | (UTC\$1 06:30) | Yangon (Rangoon) | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Asia centrale settentrionale | (UTC\$107:00) | Novosibirsk |  | 
| Orario standard della Namibia | (UTC\$102:00) | Windhoek |  | 
| Orario standard del Nepal | (UTC\$1 05:45) | Katmandu | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Nuova Zelanda | (UTC\$112:00) | Auckland, Wellington |  | 
| Orario standard Terranova | (UTC–03:30) | Terranova |  | 
| Orario standard di Norfolk | (UTC\$111:00) | Isola di Norfolk |  | 
| Orario standard dell'Asia nord-orientale | (UTC\$108:00) | Irkutsk |  | 
| Orario standard dell'Asia settentrionale | (UTC\$107:00) | Krasnoyarsk |  | 
| Orario standard Corea del Nord | (UTC\$109:00) | Pyongyang |  | 
| Orario standard di Omsk | (UTC\$106:00) | Omsk |  | 
| Orario standard Pacifico SA | (UTC–03:00) | Santiago |  | 
| Orario standard Pacifico | (UTC–08:00) | Orario del Pacifico (Stati Uniti e Canada) |  | 
| Orario standard Pacifico (Messico) | (UTC–08:00) | Bassa California |  | 
| Orario standard del Pakistan | (UTC\$1 05:00) | Islamabad, Karachi | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Paraguay | (UTC–04:00) | Asuncion |  | 
| Orario standard Romance | (UTC\$101:00) | Bruxelles, Copenaghen, Madrid, Parigi |  | 
| Russia Fuso orario 10 | (UTC\$111:00) | Chokurdakh |  | 
| Russia Fuso orario 11 | (UTC\$112:00) | Anadyr, Petropavlovsk-Kamchatsky |  | 
| Russia Fuso orario 3 | (UTC\$104:00) | Izhevsk, Samara |  | 
| Orario standard Russia | (UTC\$103:00) | Mosca, San Pietroburgo, Volgograd | Questo fuso orario non osserva l'ora legale. | 
| Orario standard SA orientali | (UTC–03:00) | Cayenna, Fortaleza | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Pacifico SA | (UTC–05:00) | Bogotà, Lima, Quito, Rio Branco |  Questo fuso orario non osserva l'ora legale. | 
| Orario standard SA occidentali | (UTC–04:00) | Georgetown, La Paz, Manaus, San Juan | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Saint Pierre | (UTC–03:00) | Saint Pierre e Miquelon |  | 
| Orario standard Sakhalin | (UTC\$111:00) | Sakhalin |  | 
| Orario standard Samoa | (UTC\$1 13:00) | Samoa |  | 
| Orario standard di Sao Tomé | (UTC\$101:00) | São Tomé |  | 
| Orario standard di Saratov | (UTC\$104:00) | Saratov |  | 
| Orario standard Asia sud-orientale | (UTC\$107:00) | Bangkok, Hanoi, Giacarta | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Singapore | (UTC\$108:00) | Kuala Lumpur, Singapore | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Africa meridionale | (UTC\$102:00) | Harare, Pretoria | Questo fuso orario non osserva l'ora legale. | 
| Ora standard dello Sri Lanka | (UTC\$105:30) | Sri Jayawardenepura | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Sudan | (UTC\$102:00) | Khartum |  | 
| Orario standard Siria | (UTC\$102:00) | Damasco |  | 
| Orario standard di Taipei | (UTC\$108:00) | Taipei | Questo fuso orario non osserva l'ora legale. | 
| Orario standard della Tasmania | (UTC\$110:00) | Hobart |  | 
| Orario standard Tocantins | (UTC–03:00) | Araguaina |  | 
| Orario standard Tokyo | (UTC\$109:00) | Osaka, Sapporo, Tokyo | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Tomsk | (UTC\$107:00) | Tomsk |  | 
| Orario standard di Tonga | (UTC\$1 13:00) | Nuku'alofa | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Transbaikal | (UTC\$109:00) | Chita |  | 
| Orario standard della Turchia | (UTC\$103:00) | Istanbul |  | 
| Orario standard di Turks e Caicos | (UTC–05:00) | Turks e Caicos |  | 
| Orario standard di Ulaanbaatar | (UTC\$108:00) | Ulaanbaatar | Questo fuso orario non osserva l'ora legale. | 
| Orario standard Stati Uniti orientali | (UTC–05:00) | Indiana (Est) |  | 
| Orario standard di montagna Stati Uniti | (UTC–07:00) | Arizona | Questo fuso orario non osserva l'ora legale. | 
| UTC | UTC | Tempo coordinato universale | Questo fuso orario non osserva l'ora legale. | 
| UTC–02 | (UTC–02:00) | Tempo coordinato universale–02 | Questo fuso orario non osserva l'ora legale. | 
| UTC–08 | (UTC–08:00) | Tempo coordinato universale–08 |  | 
| UTC–09 | (UTC–09:00) | Tempo coordinato universale–09 |  | 
| UTC–11 | (UTC–11:00) | Tempo coordinato universale–11 | Questo fuso orario non osserva l'ora legale. | 
| UTC\$112 | (UTC\$112:00) | Tempo coordinato universale\$112 | Questo fuso orario non osserva l'ora legale. | 
| UTC\$113 | (UTC\$1 13:00) | Tempo coordinato universale\$113 |  | 
| Orario standard del Venezuela | (UTC–04:00) | Caracas | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Vladivostok | (UTC\$110:00) | Vladivostok |  | 
| Orario standard di Volgograd | (UTC\$104:00) | Volgograd |  | 
| Ora standard Australia occidentale | (UTC\$108:00) | Perth | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Africa centrale occidentale | (UTC\$101:00) | Africa centro-occidentale | Questo fuso orario non osserva l'ora legale. | 
| Ora standard Europa occidentale | (UTC\$101:00) | Amsterdam, Berlino, Berna, Roma, Stoccolma, Vienna |  | 
| Ora standard Mongolia occidentale | (UTC\$107:00) | Hovd |  | 
| Orario standard dell'Asia occidentale | (UTC\$1 05:00) | Ashgabat, Tashkent | Questo fuso orario non osserva l'ora legale. | 
| Orario standard della Cisgiordania | (UTC\$102:00) | Gaza, Hebron |  | 
| Orario standard Pacifico occidentale | (UTC\$110:00) | Guam, Port Moresby | Questo fuso orario non osserva l'ora legale. | 
| Orario standard di Yakutsk | (UTC\$109:00) | Yakutsk |  | 

# Licenza per Microsoft SQL Server su Amazon RDS
<a name="SQLServer.Concepts.General.Licensing"></a>

Quando configuri un'istanza database Amazon RDS per Microsoft SQL Server, la licenza software è inclusa. 

Ciò significa che non è necessario acquistare separatamente le licenze di SQL Server. AWS detiene la licenza per il software di database SQL Server. Il prezzo di Amazon RDS include la licenza software, le risorse hardware sottostanti e le funzionalità di gestione di Amazon RDS. 

Amazon RDS supporta le edizioni di Microsoft SQL Server seguenti: 
+ Enterprise
+ Standard
+ App
+ Express

**Nota**  
SQL Server Web Edition è progettato per gli hoster Web e Web VAPs per ospitare pagine Web, siti Web, applicazioni Web e servizi Web pubblici e accessibili tramite Internet. Questo livello di supporto è necessario ai fini della conformità ai diritti di utilizzo di Microsoft. Per ulteriori informazioni, consulta [Termini del servizio AWS](https://aws.amazon.com/serviceterms). 

Amazon RDS supporta implementazioni Multi-AZ per istanze DB che eseguono Microsoft SQL Server utilizzando SQL Server Database Mirroring (DBM), Always On Availability Groups (AGs) e la replica a livello di blocco per SQL Server Web Edition. Non sono previsti requisiti di licenza aggiuntivi per le implementazioni Multi-AZ. Per ulteriori informazioni, consulta [Implementazioni Multi-AZ per Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md). 

## Ripristino di istanze database terminate in base alla licenza
<a name="SQLServer.Concepts.General.Licensing.Restoring"></a>

Amazon RDS acquisisce snapshot di istanze database terminate in base alla licenza. Se l'istanza è terminata a causa di problemi con la licenza, puoi ripristinarla dalla snapshot in una nuova istanza database, che includerà una licenza.

Per ulteriori informazioni, consulta [Ripristino di istanze database terminate in base alla licenza per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.RestoreLTI.md). 

## Sviluppo e test
<a name="SQLServer.Concepts.General.Licensing.Development"></a>

Per gli scenari di sviluppo e test, puoi utilizzare Express Edition per molte esigenze di sviluppo, test e altre esigenze non di produzione. È inoltre possibile utilizzare Developer Edition, che include tutte le funzionalità di SQL Server Enterprise Edition ma è concessa in licenza solo per uso non di produzione. È possibile scaricare e installare SQL Server Developer Edition su RDS per SQL Server. Per ulteriori informazioni, vedere [Utilizzo di SQL Server Developer Edition su RDS per SQL Server](sqlserver-dev-edition.md) Utilizzo di una versione Custom Engine (CEV) con Bring Your Own Media (BYOM). È inoltre possibile scaricare e installare SQL Server Developer Edition su RDS Custom for SQL Server utilizzando lo stesso approccio. Per ulteriori informazioni, consulta [Preparazione di una CEV utilizzando il modello Porta i tuoi media (BYOM)](custom-cev-sqlserver.preparing.md#custom-cev-sqlserver.preparing.byom). Per ulteriori informazioni sulla differenza tra le edizioni di SQL Server, consulta [Edizioni e funzionalità supportate di SQL Server 2019](https://learn.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2019?view=sql-server-ver15) nella documentazione Microsoft.

# Connessione all’istanza database Microsoft SQL Server
<a name="USER_ConnectToMicrosoftSQLServerInstance"></a>

Dopo che Amazon RDS ha effettuato il provisioning della tua istanza database, puoi utilizzare qualsiasi applicazione client SQL standard per connetterti all'istanza database. Questo argomento descrive come connetterti alla tua istanza database utilizzando Microsoft SQL Server Management Studio (SSMS) o SQL Workbench/J.

Per un esempio che illustra il processo di creazione e di connessione a un'istanza database di esempio, consulta [Creazione e connessione a un'istanza database Microsoft SQL Server](CHAP_GettingStarted.CreatingConnecting.SQLServer.md). 

## Prima di connetterti
<a name="sqlserver-before-connect"></a>

Prima di poterti connettere all’istanza database, essa deve essere disponibile e accessibile.

1. Assicurati che lo stato sia `available`. Puoi verificarlo nella pagina dei dettagli della tua istanza in Console di gestione AWS o utilizzando il [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI comando.  
![\[Verifica che l'istanza database sia disponibile\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/sqlserver-available.png)

1. Assicurati che la tua origine possa accedervi. A seconda dello scenario, potrebbe non essere accessibile a livello pubblico. Per ulteriori informazioni, consulta [Amazon VPC e Amazon RDS](USER_VPC.md).

1. Assicurati che le regole in entrata del gruppo di sicurezza VPC consentano l'accesso all'istanza database. Per ulteriori informazioni, consulta [Impossibile connettersi all'istanza database di Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).

## Individuazione dell'endpoint e del numero di porta dell'istanza database
<a name="sqlserver-endpoint"></a>

L'endpoint e il numero di porta sono necessari per la connessione all'istanza database.

**Per trovare l'endpoint e la porta**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nell'angolo in alto a destra della console Amazon RDS, scegli la AWS regione della tua istanza DB.

1. Trovare il nome Domain Name System (DNS) (endpoint) e il numero di porta per l'istanza database:

   1. Aprire la console RDS e selezionare **Databases (Database)** per visualizzare un elenco delle istanze database.

   1. Scegliere il nome dell'istanza database SQL Server per visualizzarne i dettagli.

   1. Nella scheda **Connectivity & security (Connettività e sicurezza)**, copiare l'endpoint.  
![\[Individuazione dell'endpoint e della porta dell'istanza database\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQL-Connect-Endpoint.png)

   1. Annotare il numero di porta.

# Connessione all'istanza database con Microsoft SQL Server Management Studio
<a name="USER_ConnectToMicrosoftSQLServerInstance.SSMS"></a>

In questa procedura, eseguirai la connessione all'istanza database di esempio utilizzando Microsoft SQL Server Management Studio (SSMS). Per scaricare una versione standalone di questa utilità, consulta [Download di SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms) nella documentazione di Microsoft.

**Per effettuare la connessione a un'istanza database utilizzando SSMS**

1. Avviare SQL Server Management Studio.

   Viene visualizzata la finestra di dialogo **Connect to Server (Connettiti al server)**.  
![\[Finestra di dialogo Connect to Server (Connettiti al server)\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/RDSMSFTSQLConnect01.png)

1. Fornire le informazioni per l'istanza database:

   1. In **Server type (Tipo di server)** scegliere **Database Engine (Motore di database)**. 

   1. Per **Nome server** inserire il nome DNS (endpoint) e il numero di porta dell'istanza database, separati da una virgola. 
**Importante**  
Sostituire i due punti tra l’endpoint e il numero porta con una virgola. 

      L'aspetto del nome server deve essere simile al seguente.

      ```
      database-2.cg034itsfake.us-east-1.rds.amazonaws.com,1433
      ```

   1. In **Authentication (Autenticazione)** selezionare **SQL Server Authentication (Autenticazione SQL Server)**. 

   1. Per **Login (Accesso)** inserire il nome utente master per l'istanza database. 

   1. Per **Password** inserire la password per l'istanza database. 

1. Scegliere **Connetti**. 

   Dopo qualche secondo, SSMS effettua la connessione all'istanza database.

   In caso di problemi di connessione all'istanza database, consultare [Considerazioni relative al gruppo di sicurezza](USER_ConnectToMicrosoftSQLServerInstance.Security.md) e [Risoluzione dei problemi relativi alle connessioni all'istanza database di SQL Server](USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.md). 

1. L'istanza database SQL Server integra i database di sistema standard di SQL Server (`master`, `model`, `msdb` e `tempdb`). Per esaminare i database di sistema, procedere nel modo seguente:

   1. In SSMS, nel menu **View (Visualizza)**, scegliere **Object Explorer**.

   1. Espandere l'istanza database, espandere **Database** ed espandere **Database di sistema**.  
![\[Object Explorer che visualizza i database di sistema\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQL-SSMS-SystemDBs.png)

1. L'istanza database di SQL Server viene inoltre fornita con un database denominato `rdsadmin`. Amazon RDS usa questo database per archiviare gli oggetti usati per gestire il database. Il database `rdsadmin` include anche le stored procedure che puoi eseguire per svolgere attività avanzate. Per ulteriori informazioni, consulta [Attività DBA frequenti per Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.md).

1. A questo punto, puoi iniziare a creare database personali ed eseguire normalmente query sull'istanza e sui database. Per eseguire una query di test dell'istanza database, utilizzare la seguente procedura:

   1. In SSMS, nel menu **File** selezionare **New (Nuovo)**, quindi scegliere **Query with Current Connection (Query con connessione corrente)**.

   1. Inserire la query SQL seguente.

      ```
      select @@VERSION
      ```

   1. Eseguire la query. SSMS restituisce la versione di SQL Server dell'istanza database Amazon RDS.  
![\[Finestra della query SQL\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQL-Connect-Query.png)

# Connessione all'istanza database con SQL Workbench/J
<a name="USER_ConnectToMicrosoftSQLServerInstance.JDBC"></a>

Questo esempio mostra come connettersi a un'istanza database che esegue il motore di database Microsoft SQL Server utilizzando lo strumento di database SQL Workbench/J. Per scaricare SQL Workbench/J, consulta [SQL Workbench/J](http://www.sql-workbench.net/). 

SQL Workbench/J utilizza JDBC per connettersi all'istanza database. È inoltre necessario il driver JDBC per SQL Server. Per scaricare il driver, consulta [Scarica Microsoft JDBC Driver per SQL Server](https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16). 

**Per connettersi a un'istanza database utilizzando SQL Workbench/J**

1. Aprire SQL Workbench/J. Viene visualizzata la finestra di dialogo **Seleziona profilo di connessione**, mostrata di seguito.  
![\[Finestra di dialogo Select Connection Profile (Seleziona profilo di connessione)\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/workbench_profile.png)

1. Nella prima casella nella parte superiore della finestra di dialogo immettere un nome per il profilo. 

1. Per **Driver** scegliere **SQL JDBC 4.0**. 

1. Per **URL** inserire **jdbc:sqlserver://**, quindi inserire l'endpoint dell'istanza database. Ad esempio, il valore dell'URL potrebbe essere il seguente.

   ```
   jdbc:sqlserver://sqlsvr-pdz.abcd12340.us-west-2.rds.amazonaws.com:1433
   ```

1. Per **Username (Nome utente)** inserire il nome utente master per l'istanza database. 

1. Per **Password** inserire la password per l'utente master. 

1. Scegliere l'icona per eseguire il salvataggio sulla barra degli strumenti della finestra di dialogo, come mostrato di seguito.  
![\[Salvataggio del profilo\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/save_example.png)

1. Scegliere **OK**. Dopo qualche istante, SQL Workbench/J si connette all'istanza database. In caso di problemi di connessione all'istanza database, consultare [Considerazioni relative al gruppo di sicurezza](USER_ConnectToMicrosoftSQLServerInstance.Security.md) e [Risoluzione dei problemi relativi alle connessioni all'istanza database di SQL Server](USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.md). 

1. Nel riquadro delle query inserire la seguente Query SQL.

   ```
   select @@VERSION
   ```

1. Scegliere l'icona `Execute` sulla barra degli strumenti, come mostrato di seguito.  
![\[Eseguire la query\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/execute_example.png)

   La query restituisce informazioni sulla versione per l'istanza database simili a quelle mostrate di seguito.

   ```
   Microsoft SQL Server 2017 (RTM-CU22) (KB4577467) - 14.0.3356.20 (X64)
   ```

# Considerazioni relative al gruppo di sicurezza
<a name="USER_ConnectToMicrosoftSQLServerInstance.Security"></a>

Per connettersi all'istanza database, è necessario che sia associata a un gruppo di sicurezza. Questo gruppo di sicurezza contiene gli indirizzi IP e la configurazione di rete che si utilizza per accedere all'istanza database. L'istanza database potrebbe essere stata associata a un gruppo di sicurezza appropriato durante la creazione dell'istanza database. Se hai assegnato un gruppo di sicurezza predefinito non configurato quando hai creato la tua istanza database, il firewall dell'istanza database impedisce le connessioni.

In alcuni casi, potrebbe essere necessario creare un nuovo gruppo di sicurezza per rendere possibile l'accesso. Per istruzioni sulla creazione di un nuovo gruppo di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md). Per informazioni su come configurare le regole per il tuo gruppo di sicurezza VPC, consulta [Tutorial: crea un VPC da utilizzare con un ) IPv4](CHAP_Tutorials.WebServerDB.CreateVPC.md).

Dopo aver creato il nuovo gruppo di sicurezza, modifica l'istanza database per associarla al gruppo di sicurezza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

Puoi aumentare la sicurezza utilizzando la crittografia SSL per proteggere le connessioni alla tua istanza database. Per ulteriori informazioni, consulta [Utilizzo di SSL con un'istanza database Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md). 

# Risoluzione dei problemi relativi alle connessioni all'istanza database di SQL Server
<a name="USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting"></a>

Nella tabella seguente vengono visualizzati i messaggi di errore che potrebbero verificarsi quando si tenta di connettersi all'istanza database di SQL Server.


****  
<a name="rds-sql-server-connection-troubleshooting-guidance"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting.html)

**Nota**  
Per ulteriori informazioni sui problemi di connessione, consulta [Impossibile connettersi all'istanza database di Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).

# Utilizzo di SQL Server Developer Edition su RDS per SQL Server
<a name="sqlserver-dev-edition"></a>

RDS per SQL Server supporta SQL Server Developer Edition. Developer Edition include tutte le funzionalità di SQL Server Enterprise Edition, ma è concessa in licenza solo per uso non di produzione. È possibile creare istanze RDS per SQL Server Developer Edition utilizzando i propri supporti di installazione tramite la funzionalità Custom Engine Version (CEV).

## Vantaggi
<a name="sqlserver-dev-edition.benefits"></a>

È possibile utilizzare RDS per SQL Server Developer Edition per:
+ Ridurre i costi negli ambienti di sviluppo e test mantenendo al contempo la parità di funzionalità con i database di produzione.
+ Accedi alle funzionalità di Enterprise Edition in ambienti non di produzione senza costi di licenza Enterprise.
+ Utilizza le funzionalità di gestione automatizzata di Amazon RDS, tra cui backup, patch e monitoraggio.

**Nota**  
SQL Server Developer Edition è concesso in licenza solo per scopi di sviluppo e test e non può essere utilizzato in ambienti di produzione.

## Disponibilità nelle regioni
<a name="sqlserver-dev-edition.regions"></a>

RDS per SQL Server Developer Edition è disponibile nelle seguenti regioni: AWS 
+ Stati Uniti orientali (Virginia settentrionale)
+ Stati Uniti orientali (Ohio)
+ Stati Uniti occidentali (Oregon)
+ Stati Uniti occidentali (California settentrionale)
+ Asia Pacifico (Mumbai)
+ Asia Pacifico (Seoul)
+ Asia Pacifico (Singapore)
+ Asia Pacifico (Osaka)
+ Asia Pacifico (Sydney)
+ Asia Pacifico (Tokyo)
+ Europa (Irlanda)
+ Europa (Francoforte)
+ Europa (Londra)
+ Europa (Stoccolma)
+ Europa (Parigi)
+ Canada (Centrale)
+ Sud America (San Paolo)
+ Africa (Città del Capo)

## Licenze e utilizzo
<a name="sqlserver-dev-edition.licensing"></a>

SQL Server Developer Edition è concesso in licenza da Microsoft solo per ambienti di sviluppo e test. Non è possibile utilizzare Developer Edition come server di produzione. Quando utilizzi SQL Server Developer Edition su Amazon RDS, sei responsabile del rispetto dei termini di licenza di Microsoft SQL Server Developer Edition. Paghi solo i costi dell' AWS infrastruttura: non sono previsti costi di licenza aggiuntivi per SQL Server. Per i dettagli sui prezzi, consulta i prezzi [di RDS per SQL Server](https://aws.amazon.com/rds/sqlserver/pricing/).

## Prerequisiti
<a name="sqlserver-dev-edition.prerequisites"></a>

Prima di utilizzare SQL Server Developer Edition su RDS per SQL Server, assicurati di avere i seguenti requisiti:
+ È necessario ottenere i file binari di installazione direttamente da Microsoft e garantire la conformità alle condizioni di licenza di Microsoft.
+ È necessario avere accesso per utilizzare le seguenti risorse per creare un'istanza DB Developer Edition:
  + AWS account con `AmazonRDSFullAccess` e `s3:GetObject` autorizzazioni.
+ È necessario un bucket Amazon S3 per archiviare i supporti di installazione. Avrai bisogno di un file ISO e di aggiornamento cumulativo da caricare nel bucket Amazon S3 come parte della creazione del CEV. Per ulteriori informazioni, consulta [Caricamento dei supporti di installazione in un bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).
+ Tutti i file multimediali di installazione devono risiedere nello stesso bucket Amazon S3 e nello stesso percorso di cartella all'interno di quel bucket Amazon S3 nella stessa regione in cui viene creata la versione personalizzata del motore.

### Versioni supportate
<a name="sqlserver-dev-edition.supported-versions"></a>

Developer Edition su RDS per SQL Server supporta le seguenti versioni:
+ SQL Server 2022 CU 21 (16.00.4215.2)
+ SQL Server 2019 CU32 GDR (15.00.4455.2)

Per elencare tutte le versioni del motore supportate per la creazione di Developer Edition CEV, usa il seguente comando: AWS CLI 

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}"
```

Il comando restituisce un output simile all'esempio seguente:

```
{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

Lo stato della versione del motore `requires_custom_engine_version` identifica le versioni del motore di modello supportate. Questi modelli mostrano quali versioni di SQL Server è possibile importare.

## Limitazioni
<a name="sqlserver-dev-edition.limitations"></a>

Le seguenti limitazioni si applicano a SQL Server Developer Edition su Amazon RDS:
+ Attualmente è supportato solo nelle classi di istanze M6i e R6i.
+ Le implementazioni Multi-AZ e le repliche di lettura non sono supportate.
+ È necessario fornire e gestire i propri supporti di installazione di SQL Server.
+ Le versioni personalizzate del motore per SQL Server Developer Edition (sqlserver-dev-ee) non possono essere condivise tra regioni o più account.

# Preparazione di un CEV per RDS per SQL Server
<a name="sqlserver-dev-edition.preparing"></a>

## Prerequisiti
<a name="sqlserver-dev-prerequisites"></a>

Prima di creare una versione personalizzata del motore, assicurati di aver completato i seguenti prerequisiti:

### Preparare i supporti di installazione di SQL Server Developer Edition
<a name="sqlserver-dev-prepare-media"></a>

È necessario ottenere il supporto di installazione di SQL Server Developer Edition da Microsoft e prepararlo per il caricamento su S3.

**Per scaricare i supporti di installazione da Microsoft**

1. **Opzione A:** usa l'[abbonamento a Visual Studio](https://visualstudio.microsoft.com/subscriptions/) per scaricare l'ISO della Developer Edition. È supportata solo la versione inglese.

1. **Opzione B: utilizzo di SQL Server Installer**

   1. Scarica il programma di [installazione di SQL Server Developer Edition](https://download.microsoft.com/download/c/c/9/cc9c6797-383c-4b24-8920-dc057c1de9d3/SQL2022-SSEI-Dev.exe).

   1. Esegui il programma di installazione e scegli **Scarica file multimediali** per scaricare l'ISO completo.

   1. Scegli **l'inglese** come lingua preferita.

   1. Scegli **ISO** come tipo di supporto.

   1. Scegli **Scarica**.

**Per scaricare aggiornamenti cumulativi**

1. Visita la pagina [Microsoft Catalog Update](https://www.catalog.update.microsoft.com/Home.aspx).

1. Trova una SQL Server Developer Edition supportata da RDS per SQL Server, ad esempio «SQL Server 2022 Cumulative Update».

1. Scarica l'ultimo file eseguibile CU supportato e salvalo sul tuo computer.

1. File di esempio: `SQLServer2022-KB5065865-x64.exe` (CU21 per SQL Server 2022)

**Importante**  
RDS per SQL Server supporta solo versioni Cumulative Update (CU) specifiche. È necessario utilizzare la versione esatta elencata nella tabella seguente. Non utilizzare versioni CU più recenti, anche se disponibili presso Microsoft, poiché potrebbero non essere compatibili con RDS.

In alternativa, puoi anche scaricare il file di aggiornamento cumulativo (CU) richiesto direttamente dal seguente sito:

La tabella seguente elenca la versione di SQL Server Developer Edition supportata e il corrispondente aggiornamento cumulativo da utilizzare con RDS:


| Versione SQL Server: | CPU supportata | Articolo KB | Scarica il nome del file | 
| --- | --- | --- | --- | 
|  SQL Server 2022  |  `CU21`  |  [KB5065865](https://learn.microsoft.com/en-us/troubleshoot/sql/releases/sqlserver-2022/cumulativeupdate21)  |  `SQLServer2022-KB5065865-x64.exe`  | 
|  SQL Server 2019  |  `CU32 GDR`  |  [KB5068404](https://support.microsoft.com/en-us/topic/kb5068404-description-of-the-security-update-for-sql-server-2019-cu32-november-11-2025-c203bfbf-036e-46d2-bc10-6c01200dc48a)  |  `SQLServer2019-KB5068404-x64.exe`  | 

# Creazione di una versione del motore personalizzata per RDS per SQL Server
<a name="sqlserver-dev-edition.creating-cev"></a>

Una versione del motore personalizzata (CEV) per RDS per SQL Server è costituita dai supporti di installazione di SQL Server Developer Edition importati in Amazon RDS. È necessario caricare il programma di installazione ISO di base e i file di aggiornamento cumulativo (.exe) nel bucket Amazon S3. Una volta caricato, devi fornire la posizione Amazon S3 a RDS affinché possa scaricare, convalidare e successivamente creare il tuo CEV.

## Limitazioni di denominazione
<a name="sqlserver-dev-edition.create-cev.naming-limitations"></a>

Quando si crea un CEV, è necessario seguire convenzioni di denominazione specifiche:
+ Il nome CEV deve seguire lo schema. `major-version.minor-version.customized-string`
+ `customized-string`può contenere da 1 a 50 caratteri alfanumerici, trattini bassi e punti. Ad esempio: per SQL Server 2022`16.00.4215.2.my-dev-cev`.

Per elencare tutte le versioni del motore supportate, utilizzare il seguente comando:

```
aws rds describe-db-engine-versions --engine sqlserver-dev-ee --output json --query "{DBEngineVersions: DBEngineVersions[?Status=='requires-custom-engine-version'].{Engine: Engine, EngineVersion: EngineVersion, Status: Status, DBEngineVersionDescription: DBEngineVersionDescription}}" 

{
    "DBEngineVersions": [
        {
            "Engine": "sqlserver-dev-ee",
            "EngineVersion": "16.00.4215.2.v1",
            "Status": "requires-custom-engine-version",
            "DBEngineDescription": "Microsoft SQL Server Enterprise Developer Edition",
            "DBEngineVersionDescription": "SQL Server 2022 16.00.4215.2.v1"
        }
    ]
}
```

## AWS CLI
<a name="sqlserver-dev-edition.create-cev.CLI"></a>

**Per creare la versione personalizzata del motore**
+ Utilizzate il comando [create-custom-db-engine-version](https://docs.aws.amazon.com/cli/latest/reference/rds/create-custom-db-engine-version.html).

  Sono richieste le seguenti opzioni:
  + `--engine`
  + `--engine-version`
  + `--database-installation-files-s3-bucket-name`
  + `--database-installation-files`
  + `--region`

  È anche possibile specificare le seguenti opzioni:
  + `--database-installation-files-s3-prefix`
  + `--description`
  + `--tags`

  ```
  aws rds create-custom-db-engine-version \
  --engine sqlserver-dev-ee \
  --engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
  --region us-west-2 \
  --database-installation-files-s3-bucket-name my-s3-installation-media-bucket \
  --database-installation-files-s3-prefix sqlserver-dev-media \
  --database-installation-files "SQLServer2022-x64-ENU-Dev.iso" "SQLServer2022-KB5065865-x64.exe"
  ```

La creazione di CEV richiede in genere 15-30 minuti. Per monitorare l'avanzamento della creazione del CEV, utilizzate il seguente comando:

```
# Check CEV status
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

## Ciclo di vita di un RDS per SQL Server CEV
<a name="sqlserver-dev-cev-lifecycle"></a>

Quando si utilizza SQL Server Developer Edition su RDS per SQL Server, le versioni personalizzate del motore passano attraverso diversi stati del ciclo di vita.


| Stato del ciclo di vita | Description | Quando si verifica | Operazioni disponibili | 
| --- | --- | --- | --- | 
|  convalida in sospeso  |  Stato iniziale al momento della creazione del CEV  |  Questo è lo stato iniziale dopo la creazione con il `create-custom-db-engine-version` comando.  |  Monitora lo stato tramite`describe-db-engine-version`.  | 
|  convalida  |  Stato di convalida CEV  |  Amazon RDS sta convalidando la versione del motore personalizzata (CEV). Il completamento di questo processo asincrono potrebbe richiedere del tempo.  |  Monitora lo stato fino al completamento della convalida.  | 
|  disponibile  |  La convalida della versione personalizzata del motore (CEV) è stata completata correttamente.  |  La versione Custom Engine (CEV) è ora disponibile. Amazon RDS ha convalidato con successo i file ISO e di aggiornamento cumulativo di SQL Server. Ora puoi creare istanze DB utilizzando questo CEV.  |  Crea istanze DB usando questo CEV  | 
|  Non riuscito  |  RDS per SQL Server non è in grado di creare la versione personalizzata del motore (CEV) perché il controllo di convalida non è riuscito.  |  La convalida ISO e cumulativa dei supporti non è riuscita.   |  La convalida ISO non è riuscita. Controlla il motivo dell'errore`describe-db-engine-version`, correggi eventuali problemi relativi ai file, ad esempio mancate corrispondenze di hash o contenuti danneggiati, quindi ricrea la versione del motore personalizzata (CEV).  | 
|  deleting (eliminazione in corso)  |  La versione personalizzata del motore (CEV) è in corso di eliminazione  |  Dopo le chiamate del cliente `delete-custom-db-engine-version` fino al completamento del flusso di lavoro di eliminazione.  |  Monitora lo stato tramite`describe-db-engine-version`.  | 
|  incompatible-installation-media  |  Amazon RDS non è riuscito a convalidare i supporti di installazione forniti per la versione personalizzata del motore (CEV)  |  La convalida della versione personalizzata del motore (CEV) non è riuscita. Si tratta di uno stato terminale.  |  Vedi FailureReason via `describe-db-engine-versions` per informazioni sul motivo per cui la convalida non è riuscita; elimina CEV.  | 

### Descrivi lo stato del CEV
<a name="sqlserver-dev-cev-status-check"></a>

Puoi vedere lo stato del tuo CEVs utilizzo diAWS CLI:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status}'
```

Output di esempio

```
| DescribeDBEngineVersions                     |
+------------+---------------------------------+
| Status | Version                             |
+------------+---------------------------------+
| available | 16.00.4215.2.cev-dev-ss2022-cu21    |
+------------+---------------------------------+
```

Quando un CEV mostra `failed` lo stato, è possibile determinarne il motivo utilizzando il seguente comando:

```
1. aws rds describe-db-engine-versions \
2. --engine sqlserver-dev-ee \
3. --engine-version 16.00.4215.2.my-dev-cev \
4. --region us-west-2 \
5. --query 'DBEngineVersions[0].{Version:EngineVersion,Status:Status,FailureReason:FailureReason}'
```

# Creazione di un'istanza DB RDS per SQL Server Developer Edition
<a name="sqlserver-dev-edition.creating-instance"></a>

L'avvio dell'istanza Developer Edition su RDS per SQL Server segue un processo in due fasi: innanzitutto crea un CEV con`create-custom-db-engine-version`, Una volta che la versione del motore personalizzato è disponibile, puoi creare istanze di database Amazon RDS utilizzando CEV.

**Principali differenze per la creazione di istanze Developer Edition**


| Parametro | Developer Edition | 
| --- | --- | 
|  `--engine`  |  sqlserver-dev-ee  | 
|  `--engine-version`  |  Versione del motore personalizzata (ad esempio, 16.00.4215.2. cev-dev-ss2022-cu21)  | 
|  `--license-model`  |  bring-your-own-license  | 

## AWS CLI
<a name="sqlserver-dev-edition.creating-instance.CLI"></a>

Per creare un'istanza DB di SQL Server Developer Edition, utilizzare il [create-db-instance](https://docs.aws.amazon.com//cli/latest/reference/rds/create-db-instance.html)comando con i seguenti parametri:

Sono richieste le seguenti opzioni:
+ `--db-instance-identifier` 
+ `--db-instance-class` 
+ `--engine` – `sqlserver-dev-ee`
+ `--region`

**Esempi:**

Per Linux, macOS o Unix:

```
aws rds create-db-instance \
--db-instance-identifier my-dev-sqlserver \
--db-instance-class db.m6i.xlarge \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--allocated-storage 200 \
--master-username admin \
--master-user-password changeThisPassword \
--license-model bring-your-own-license \
--no-multi-az \
--vpc-security-group-ids sg-xxxxxxxxx \
--db-subnet-group-name my-db-subnet-group \
--backup-retention-period 7 \
--region us-west-2
```

Per Windows:

```
aws rds create-db-instance ^
--db-instance-identifier my-dev-sqlserver ^
--db-instance-class db.m6i.xlarge ^
--engine sqlserver-dev-ee ^
--engine-version 16.00.4215.2.cev-dev-ss2022-cu21 ^
--allocated-storage 200 ^
--master-username admin ^
--master-user-password master_user_password ^
--license-model bring-your-own-license ^
--no-multi-az ^
--vpc-security-group-ids sg-xxxxxxxxx ^
--db-subnet-group-name my-db-subnet-group ^
--backup-retention-period 7 ^
--region us-west-2
```

Fare riferimento a [Creazione di un'istanza DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html#USER_CreateDBInstance.Creating) da creare utilizzando la AWS console.

# Applicazione degli aggiornamenti delle versioni secondarie del database
<a name="sqlserver-dev-edition.minor-version-upgrades"></a>

RDS per SQL Server Developer Edition richiede la creazione di una nuova versione del motore personalizzata (CEV) con l'ultimo aggiornamento cumulativo per applicare l'aggiornamento della versione secondaria del database. Gli aggiornamenti delle versioni secondarie del database per SQL Server Developer Edition prevedono i seguenti passaggi:

1. Prima dell'aggiornamento, verifica la versione corrente del motore sull'istanza, identifica la versione del motore di database di destinazione tra le versioni supportate da Amazon RDS. Per informazioni sulle versioni di SQL Server disponibili in Amazon RDS, consulta [Utilizzo di SQL Server Developer Edition su RDS per SQL Server](sqlserver-dev-edition.md).

1. Ottieni e carica i supporti di installazione (ISO e CU), quindi [crea una nuova](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/sqlserver-dev-edition.creating-cev.html) versione personalizzata del motore.

1. Applica l'aggiornamento della versione secondaria del database utilizzando Amazon RDS [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)con il nuovo CEV.

   ```
   aws rds modify-db-instance \
   --db-instance-identifier <instance-id> \
   --engine-version <new-cev-version> \
   --no-apply-immediately ## use --apply-immediately for immediate update
   ```
**Nota**  
`--no-apply-immediately`(impostazione predefinita) per applicare le modifiche durante la finestra di manutenzione successiva.

# Visualizzazione e gestione delle versioni personalizzate del motore
<a name="sqlserver-dev-edition.managing"></a>

Per visualizzare tutti i tuoi RDS per SQL Server Developer Edition CEVs, usa il `describe-db-engine-versions` comando con `--engine` input as`sqlserver-dev-ee`.

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--include-all \
--region us-west-2
```

Per visualizzare i dettagli di un CEV specifico, utilizzare il comando seguente:

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.cev-dev-ss2022-cu21 \
--region us-west-2
```

**Nota**  
Questo comando restituisce CEVs solo uno `available` stato. Per visualizzarlo CEVs in fase di convalida o in altri stati, includi il `--include-all` flag.

## Eliminazione di versioni personalizzate del motore
<a name="sqlserver-dev-deleting-cevs"></a>

Prima di eliminare una CEV, assicurati che non venga utilizzata da nessuno dei seguenti elementi:
+ Un'istanza database Amazon RDS
+ Uno snapshot di un'istanza database Amazon RDS
+ Un backup automatico di un'istanza database Amazon RDS

**Nota**  
Non puoi eliminare un CEV se contiene risorse ad esso associate.

Per eliminare una versione personalizzata del motore, utilizzate il comando [ delete-custom-db-engine-version](https://docs.aws.amazon.com//cli/latest/reference/rds/delete-custom-db-engine-version.html).
+ `--engine`: Specificare `sqlserver-dev-ee` per Developer Edition
+ `--engine-version`: L'identificatore esatto della versione CEV da eliminare
+ `--region`: Regione AWS dove esiste il CEV

```
aws rds delete-custom-db-engine-version \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

Per monitorare il processo di eliminazione del CEV, utilizzate il `describe-db-engine-versions` comando e specificate la versione del motore CEV di RDS for SQL Server

```
aws rds describe-db-engine-versions \
--engine sqlserver-dev-ee \
--engine-version 16.00.4215.2.my-dev-cev \
--region us-west-2
```

Valori di stato:
+ `deleting`: cancellazione CEV in corso
+ Nessun risultato restituito: CEV eliminato con successo

# Risoluzione dei problemi relativi a SQL Server Developer Edition per RDS per SQL Server
<a name="sqlserver-dev-edition.troubleshooting"></a>

Nella tabella seguente sono elencati alcuni errori comuni e le soluzioni corrispondenti quando si utilizza SQL Server Developer Edition for RDS per SQL Server


**Errori e soluzioni comuni**  

| Codice di errore | Description | Soluzione | 
| --- | --- | --- | 
| InvalidParameterValue | Parametri CEV o riferimenti a file non validi | Verificate i nomi dei file, i percorsi e la sintassi dei parametri | 
| DBSubnetGroupNotFound | Il gruppo di sottoreti non esiste | Crea un gruppo di sottoreti o verifica il nome | 
| Stato non valido VPCNetwork | Problema di configurazione del VPC | Controlla VPC, sottoreti e tabelle di routing | 
| InvalidEngineVersion | CEV non disponibile o non valido | Verifica lo stato e il nome del CEV | 
| Classe non valida DBInstance | Classe di istanza non supportata | Scegli la classe di istanza supportata | 
| Personalizzato DBEngine VersionQuotaExceededFault | Hai raggiunto il numero massimo di versioni del motore personalizzate | Se necessario, aumentare la quota di servizio, in alternativa eliminare le unità non utilizzate CEVs se necessario | 
| CreateCustomDBEngineVersionFault | Amazon RDS non è riuscito ad accedere al file di installazione specificato nel bucket Amazon S3. | Amazon RDS non può accedere ai file di installazione di SQL Server nella posizione Amazon S3 specificata. Concedi all'Amazon RDS service principal (rds.amazonaws.com) l'autorizzazione s3: nella GetObject tua policy sui bucket Amazon S3. Verifica che la regione del bucket Amazon S3 sia la stessa della regione in cui stai creando il CEV. | 

# Utilizzo di Active Directory con RDS per SQL Server
<a name="User.SQLServer.ActiveDirectoryWindowsAuth"></a>

È possibile aggiungere un'istanza database RDS per SQL Server a un dominio Microsoft Active Directory (AD). Il tuo dominio AD può essere ospitato su AWS Managed AD AWS within o su un AD autogestito in una posizione a tua scelta, compresi i data center aziendali AWS EC2, su o con altri provider di cloud.

Puoi autenticare gli utenti del dominio utilizzando l'autenticazione NTLM e l'autenticazione Kerberos con Active Directory autogestito e. AWS Managed Microsoft AD

Nelle sezioni seguenti, puoi trovare informazioni sull'utilizzo di Active Directory autogestito e AWS Managed Active Directory per Microsoft SQL Server su Amazon RDS.

**Topics**
+ [Utilizzo di Active Directory autogestito con un’istanza database Amazon RDS per SQL Server](USER_SQLServer_SelfManagedActiveDirectory.md)
+ [Utilizzo di Active Directory AWS gestita con RDS per SQL Server](USER_SQLServerWinAuth.md)

# Utilizzo di Active Directory autogestito con un’istanza database Amazon RDS per SQL Server
<a name="USER_SQLServer_SelfManagedActiveDirectory"></a>

Amazon RDS per SQL Server si integra perfettamente con il dominio Active Directory (AD) autogestito, indipendentemente da dove è ospitato Active Directory: nel data center, su Amazon EC2 o presso altri provider di servizi cloud. Questa integrazione consente l’autenticazione diretta degli utenti tramite i protocolli NTLM o Kerberos, eliminando la necessità di domini intermedi complessi o trust tra foreste. Quando ti connetti all’istanza database RDS SQL Server, le richieste di autenticazione vengono inoltrate in modo sicuro al dominio AD designato, mantenendo la struttura di gestione delle identità esistente e sfruttando al contempo le funzionalità del database gestito Amazon RDS.

**Topics**
+ [Disponibilità di regioni e versioni](#USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability)
+ [Requisiti](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md)
+ [Considerazioni](#USER_SQLServer_SelfManagedActiveDirectory.Limitations)
+ [Configurazione di Active Directory autogestito](USER_SQLServer_SelfManagedActiveDirectory.SettingUp.md)
+ [Unione di un’istanza database ad Active Directory autogestito](USER_SQLServer_SelfManagedActiveDirectory.Joining.md)
+ [Gestione di un'istanza database in un dominio Active Directory gestito dal cliente](USER_SQLServer_SelfManagedActiveDirectory.Managing.md)
+ [Informazioni sull'iscrizione al dominio Active Directory gestito dal cliente](#USER_SQLServer_SelfManagedActiveDirectory.Understanding)
+ [Risoluzione dei problemi di Active Directory gestito dal cliente](USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory.md)
+ [Ripristino e aggiunta di un'istanza di database SQL Server a un dominio Active Directory gestito dal cliente](#USER_SQLServer_SelfManagedActiveDirectory.Restore)

## Disponibilità di regioni e versioni
<a name="USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability"></a>

Amazon RDS supporta AD per SQL Server autogestito utilizzando NTLM e Kerberos in tutte le applicazioni commerciali e. Regioni AWS AWS GovCloud (US) Regions

# Requisiti
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements"></a>

Assicurati di soddisfare i seguenti requisiti prima di aggiungere un'istanza database RDS per SQL Server al tuo dominio AD gestito dal cliente.

**Topics**
+ [Configurazione di AD on-premise](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig)
+ [Configurazione della connettività di rete](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig)
+ [Configurazione dell'account del servizio di dominio AD](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig)
+ [Configurazione della comunicazione sicura tramite LDAPS](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS)

## Configurazione di AD on-premise
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig"></a>

Assicurati di disporre di un dominio Microsoft AD on-premise o gestito dal cliente a cui aggiungere l'istanza Amazon RDS per SQL Server. Il tuo dominio AD on-premise deve avere la seguente configurazione:
+ Se sono stati definiti siti AD, assicurati che le sottoreti nel VPC associato all’istanza database RDS per SQL Server siano definite nel sito AD. Verifica che non siano presenti conflitti tra le sottoreti del VPC e le sottoreti degli altri siti AD.
+ Il tuo controller di dominio AD ha un livello di funzionalità di dominio di Windows Server 2008 R2 o superiore.
+ Il nome di dominio AD non può essere nel formato Single Label Domain (SLD). RDS per SQL Server non supporta i domini SLD.
+ Il nome di dominio completo (FQDN) per AD non può contenere più di 47 caratteri.

## Configurazione della connettività di rete
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig"></a>

Assicurati di soddisfare le seguenti configurazioni di rete:
+ Configura la connettività tra l’Amazon VPC in cui desideri creare l’istanza database RDS per SQL Server e AD autogestito. È possibile configurare la connettività utilizzando AWS Direct Connect, AWS VPN, peering VPC o Transit Gateway AWS .
+ Per i gruppi di sicurezza VPC, il gruppo di sicurezza predefinito per Amazon VPC predefinito è già aggiunto all'istanza database RDS per SQL Server nella console. Assicurati che il gruppo di sicurezza e la rete VPC ACLs per le sottoreti in cui stai creando l'istanza DB RDS per SQL Server consentano il traffico sulle porte e nelle direzioni mostrate nel diagramma seguente.  
![\[Regole delle porte per la configurazione di rete per AD autogestito.\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQLServer_SelfManagedActiveDirectory_Requirements_NetworkConfig.png)

  Nella tabella seguente è indicato il ruolo di ciascuna porta.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/USER_SQLServer_SelfManagedActiveDirectory.Requirements.html)
+ In genere, i server DNS del dominio si trovano nei controller di dominio AD. Non è necessario configurare il set di opzioni DHCP nel VPC per utilizzare questa funzionalità. Per ulteriori informazioni, consulta [Set di opzioni DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) nella *Guida per l'utente di Amazon VPC*.

**Importante**  
Se utilizzi una rete VPC ACLs, devi anche consentire il traffico in uscita su porte dinamiche (49152-65535) dall'istanza DB di RDS per SQL Server. Assicurati che queste regole relative al traffico siano implementate anche nei firewall validi per ciascuno dei controller di dominio AD, per i server DNS e per le istanze database RDS per SQL Server.  
Sebbene i gruppi di sicurezza VPC richiedano l'apertura delle porte solo nella direzione di avvio del traffico di rete, la maggior parte dei firewall Windows e delle reti VPC richiedono che le porte siano aperte in ACLs entrambe le direzioni.

## Configurazione dell'account del servizio di dominio AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig"></a>

Assicurati di soddisfare i seguenti requisiti per un account del servizio di dominio AD:
+ Assicurati di disporre di un account del servizio di dominio nel dominio AD autogestito con autorizzazioni delegate per aggiungere computer al dominio. Un account del servizio di dominio è un account utente nel tuo dominio AD gestito dal cliente a cui è stata delegata l'autorizzazione per eseguire determinate attività.
+ All'account del servizio di dominio devono essere delegate le seguenti autorizzazioni nell'unità organizzativa (UO) a cui stai aggiungendo l'istanza database RDS per SQL Server:
  + Capacità convalidata di scrivere sul nome host DNS
  + Capacità convalidata di scrivere sul nome principale del servizio
  + Creazione ed eliminazione degli oggetti computer

  Rappresentano il set minimo di autorizzazioni necessarie per unire oggetti computer ad AD autogestito. Per ulteriori informazioni, consulta l'argomento relativo agli [errori durante il tentativo di aggiungere computer a un dominio](https://learn.microsoft.com/en-US/troubleshoot/windows-server/identity/access-denied-when-joining-computers) nella documentazione di Microsoft Windows Server.
+ Per utilizzare l'autenticazione Kerberos, devi fornire i nomi principali dei servizi (SPNs) e le autorizzazioni DNS all'account del servizio di dominio AD:
  + **SPN di scrittura**: delegare l’autorizzazione **SPN di scrittura** all’account del servizio di dominio AD nell’unità organizzativa in cui è necessario unire l’istanza database RDS per SQL Server. Queste autorizzazioni sono diverse dal nome SPN di scrittura convalidato.
  + **Autorizzazioni DNS**: fornire le seguenti autorizzazioni all’account del servizio di dominio AD nella gestione DNS a livello di server per il controller di dominio:
    + Elenca contenuti
    + Leggi tutte le proprietà
    + Autorizzazioni di lettura

**Importante**  
Non spostare gli oggetti computer creati da RDS per SQL Server nell'unità organizzativa dopo la creazione dell'istanza database. Lo spostamento degli oggetti associati creerà una configurazione errata dell'istanza database RDS per SQL Server. Se devi spostare gli oggetti informatici creati da Amazon RDS, utilizza l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API per modificare i parametri del dominio con la posizione desiderata degli oggetti del computer.

## Configurazione della comunicazione sicura tramite LDAPS
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS"></a>

La comunicazione tramite LDAPS è consigliata per consentire a RDS di interrogare e accedere agli oggetti del computer e al controller di dominio SPNs . Per utilizzare un protocollo LDAP sicuro, si utilizza un certificato SSL valido sul controller di dominio che soddisfi i requisiti del protocollo LDAPS sicuro. Se nel controller di dominio non esiste un certificato SSL valido, per impostazione predefinita l’istanza database RDS per SQL Server utilizza LDAP. Per ulteriori informazioni sulla validità del certificato, consultare [ Requirements for an LDAPS certificate](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/enable-ldap-over-ssl-3rd-certification-authority#requirements-for-an-ldaps-certificate).

## Considerazioni
<a name="USER_SQLServer_SelfManagedActiveDirectory.Limitations"></a>

Quando si aggiunge un’istanza database RDS per SQL Server ad Active Directory autogestito, occorre tenere presente quanto segue:
+ Le tue istanze DB si sincronizzano con AWS il servizio NTP e non con il time server del dominio AD. Per le connessioni al database tra istanze SQL Server collegate all’interno del dominio AD, è possibile utilizzare solo l’autenticazione SQL e non l’autenticazione Windows.
+ Le impostazioni di Group Policy Object del dominio AD autogestito non vengono propagate alle istanze di RDS per SQL Server.

# Configurazione di Active Directory autogestito
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp"></a>

Per configurare AD autogestito, si procede nel modo descritto di seguito.

**Topics**
+ [Fase 1: creazione di un'unità organizzativa in AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU)
+ [Fase 2: creazione un account del servizio di dominio AD in AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser)
+ [Fase 3: delega del controllo all’account del servizio di dominio AD](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl)
+ [Fase 4: Creare una chiave AWS KMS](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey)
+ [Passaggio 5: crea un AWS segreto](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret)

## Fase 1: creazione di un'unità organizzativa in AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU"></a>

**Importante**  
 Ti consigliamo di creare un'unità organizzativa dedicata e una credenziale di servizio con ambito a tale unità organizzativa per qualsiasi AWS account che possiede un'istanza DB RDS per SQL Server aggiunto al tuo dominio AD autogestito. Dedicando un'unità organizzativa e le credenziali di servizio, puoi evitare autorizzazioni in conflitto e seguire il principio del privilegio minimo. 

**Creazione di un'unità organizzativa in AD**

1. Stabilisci una connessione al dominio AD come amministratore del dominio.

1. Apri **Utenti e computer di Active Directory** e seleziona il dominio in cui desideri creare l'unità organizzativa.

1. Fai clic con il pulsante destro del mouse sul dominio e scegli **Nuovo**, quindi **Unità organizzativa**.

1. Inserisci un nome per l'unità operativa.

1. Mantieni selezionata la casella **Proteggi il container dall'eliminazione accidentale**.

1. Fai clic su **OK**. La nuova unità organizzativa apparirà sotto il dominio.

## Fase 2: creazione un account del servizio di dominio AD in AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser"></a>

Le credenziali dell'account del servizio di dominio verranno utilizzate per il segreto in AWS Secrets Manager.

**Per creare un account del servizio di dominio AD in AD**

1. Apri **Utenti e computer di Active Directory** e seleziona il dominio e l'unità organizzativa in cui desideri creare l'utente.

1. Fai clic con il pulsante destro del mouse sull'oggetto **Utenti**, scegli **Nuovo**, quindi **Utente**.

1. Immetti il nome, il cognome e il nome di accesso per l'utente. Fare clic su **Avanti**.

1. Immetti una password per l'utente. Non selezionare **"L'utente deve cambiare la password al prossimo accesso"**. Non selezionare **"L'account è disabilitato"**. Fare clic su **Avanti**.

1. Fai clic su **OK**. Il nuovo utente apparirà sotto il dominio.

## Fase 3: delega del controllo all’account del servizio di dominio AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl"></a>

**Per delegare il controllo all’account del servizio di dominio AD nel dominio**

1. Apri lo snap-in MMC **Utenti e computer di Active Directory** e seleziona il dominio e l'unità organizzativa in cui desideri creare l'utente.

1. Fai clic con il pulsante destro del mouse sull'unità organizzativa creata in precedenza e scegli **Controllo delegato**.

1. Nella pagina **Delega guidata del controllo**, fai clic su **Avanti**.

1. Nella sezione **Utenti o gruppi**, fai clic su **Aggiungi**.

1. Nella sezione **Seleziona utenti, computer o gruppi**, inserisci l’account del servizio di dominio AD creato in precedenza e fai clic su **Controlla nomi**. Se il controllo dell’account del servizio di dominio AD ha esito positivo, fai clic su **OK**.

1. Nella sezione **Utenti o gruppi**, verifica che l’account del servizio di dominio AD sia stato aggiunto e fai clic su **Avanti**.

1. Nella pagina **Operazioni da delegare**, seleziona **Crea un'operazione personalizzata da delegare**, quindi scegli **Avanti**.

1. Nella sezione **Tipo di oggetto Active Directory**:

   1. Seleziona **Solo i seguenti oggetti contenuti nella cartella**.

   1. Seleziona **Oggetti computer**.

   1. Seleziona **Crea oggetti selezionati in questa cartella**.

   1. Seleziona **Elimina gli oggetti selezionati in questa cartella** e fai clic su **Avanti**.

1. Nella sezione **Autorizzazioni**:

   1. Mantieni selezionata l'opzione **Generale**.

   1. Seleziona **Scrittura convalidata in nome host DNS**.

   1. Seleziona **Scrittura convalidata in nome principale servizio** e fai clic su **Avanti**.

   1. **Per abilitare l'autenticazione Kerberos, mantieni selezionata la **proprietà specifica** e seleziona Scrivi dall'elenco. servicePrincipalName**

1. Per **completare la procedura guidata di delega del controllo**, rivedi e conferma le impostazioni e fai clic su **Fine**.

1. Per l’autenticazione Kerberos, apri la gestione DNS e le proprietà del **server**.

   1. Nella finestra di dialogo Windows, digita `dnsmgmt.msc`.

   1. Aggiungi l’account del servizio di dominio AD nella scheda **Sicurezza**.

   1. Seleziona l’autorizzazione di **lettura** e applica le modifiche.

## Fase 4: Creare una chiave AWS KMS
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey"></a>

La chiave KMS viene utilizzata per crittografare il tuo AWS segreto.

**Per creare una chiave AWS KMS**
**Nota**  
 Per la **chiave di crittografia**, non utilizzare la chiave KMS AWS predefinita. Assicurati di creare la AWS KMS chiave nello stesso AWS account che contiene l'istanza DB di RDS per SQL Server a cui desideri aggiungere al tuo AD autogestito. 

1. Nella AWS KMS console, scegli **Crea** chiave.

1. In **Tipo di chiave**, scegli **Simmetrica**.

1. In **Utilizzo delle chiavi**, scegli **Crittografa e decrittografa**.

1. In **Advanced options (Opzioni avanzate)**:

   1. In **Origine materiale chiave**, scegli **KMS**.

   1. In **Regionalità**, scegli **Chiave a regione singola** e fai clic su **Avanti**.

1. In **Alias**, fornisci un nome per la chiave KMS.

1. (Facoltativo) In **Descrizione**, immetti una descrizione per la chiave KMS.

1. (Facoltativo) In **Tag**, inserisci un tag come chiave KMS e fai clic su **Avanti**.

1. In **Amministratori delle chiavi**, fornisci il nome di un utente IAM e selezionalo.

1. In **Eliminazione chiave**, mantieni selezionata la casella **Consenti agli amministratori delle chiavi di eliminare questa chiave** e fai clic su **Avanti**.

1. In **Utenti delle chiavi**, fornisci lo stesso utente IAM della fase precedente e selezionalo. Fare clic su **Avanti**.

1. Riesamina la configurazione.

1. In **Policy delle chiavi**, includi quanto segue nel campo **Dichiarazione** associato alla policy:

   ```
   {
       "Sid": "Allow use of the KMS key on behalf of RDS",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "rds.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*"
   }
   ```

1. Fare clic su **Fine**.

## Passaggio 5: crea un AWS segreto
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret"></a>

**Per creare un segreto**
**Nota**  
 Assicurati di creare il segreto nello stesso AWS account che contiene l'istanza DB di RDS per SQL Server che desideri aggiungere al tuo AD autogestito. 

1. In AWS Secrets Manager, scegli **Memorizza un nuovo segreto**.

1. Per **Secret type** (Tipo di segreto), scegli **Other type of secret** (Altro tipo di segreto).

1. In **Coppie chiave/valore**, aggiungi le due chiavi:

   1. Per la prima chiave, immetti `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`.

   1. Per il valore della prima chiave, immetti solo il nome utente (senza il prefisso di dominio) dell’utente AD. Non includere il nome di dominio in quanto impedisce la creazione dell’istanza.

   1. Per la seconda chiave, immetti `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`.

   1. Per il valore della seconda chiave, immetti la password creata per l'utente AD nel dominio.

1. In **Chiave di crittografia**, inserisci la chiave KMS creata in una delle fasi precedenti e fai clic su **Avanti**.

1. In **Nome del segreto**, inserisci un nome descrittivo che semplifichi l'individuazione del segreto in un secondo momento.

1. (Facoltativo) In **Descrizione**, inserisci una descrizione per il nome del segreto.

1. In **Autorizzazioni a livello di risorsa**, fai clic su **Modifica**.

1. Aggiungi la seguente policy alla policy dell'autorizzazione:
**Nota**  
Si consiglia di utilizzare le condizione `aws:sourceAccount` e `aws:sourceArn` nella policy per evitare problemi di tipo *confused deputy*. Usa il tuo Account AWS nome `aws:sourceAccount` e l'`aws:sourceArn`ARN dell'istanza DB di RDS per SQL Server. Per ulteriori informazioni, consulta [Prevenzione del problema "confused deputy" tra servizi](cross-service-confused-deputy-prevention.md).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Effect": "Allow",
               "Principal":
               {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "*",
               "Condition":
               {
                   "StringEquals":
                   {
                       "aws:sourceAccount": "123456789012"
                   },
                   "ArnLike":
                   {
                       "aws:sourceArn": "arn:aws:rds:us-west-2:123456789012:db:*"
                   }
               }
           }
       ]
   }
   ```

------

1. Fai clic su **Salva**, quindi su **Avanti**.

1. In **Configura impostazioni di rotazione**, non modificare i valori predefiniti e scegli **Avanti**.

1. Controlla le impostazioni relative al segreto e fai clic su **Archivio**.

1. Scegli il segreto creato e copia il valore in **ARN secreto**. Questa informazione verrà utilizzata nella fase successiva per configurare Active Directory gestito dal cliente.

# Unione di un’istanza database ad Active Directory autogestito
<a name="USER_SQLServer_SelfManagedActiveDirectory.Joining"></a>

Per unire l’istanza database RDS per SQL Server ad AD autogestito:

## Passaggio 1: creare o modificare un'istanza DB di SQL Server
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify"></a>

È possibile utilizzare la console, l'interfaccia della linea di comando o l'API RDS per associare un'istanza database RDS per SQL Server a un dominio AD gestito dal cliente. Questa operazione può essere eseguita in uno dei seguenti modi:
+ Crea una nuova istanza DB di SQL Server utilizzando la console, il comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)CLI o l'operazione [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API.

  Per istruzioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Modifica un'istanza DB di SQL Server esistente utilizzando la console, il comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)CLI o l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API.

  Per istruzioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).
+ [Ripristina un'istanza DB di SQL Server da uno snapshot DB utilizzando la console, il comando CLI [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) o l'operazione Restore From RDS API. DBInstance DBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)

  Per istruzioni, consulta [Ripristino in un’istanza database](USER_RestoreFromSnapshot.md).
+ Ripristina un'istanza DB di SQL Server point-in-time utilizzando la console, il comando [restore-db-instance-to- point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI o l'operazione [Restore DBInstance ToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API.

  Per istruzioni, consulta [Ripristino di un’istanza database a un punto temporale specifico per Amazon RDS](USER_PIT.md).

Quando si utilizza il AWS CLI, sono necessari i seguenti parametri affinché l'istanza DB possa utilizzare il dominio AD autogestito che è stato creato:
+ Per il parametro `--domain-fqdn`, utilizza il nome di dominio completo (FQDN) del dominio AD autogestito.
+ Per il parametro `--domain-ou`, utilizza l'unità organizzativa creata nel dominio AD gestito dal cliente.
+ Per il parametro `--domain-auth-secret-arn`, utilizza il valore riportato nel campo **ARN segreto** definito in una delle fasi precedenti.
+ Per il `--domain-dns-ips` parametro, utilizza gli IPv4 indirizzi primari e secondari dei server DNS per il tuo AD autogestito. Se non disponi di un indirizzo IP secondario del server DNS, inserisci l'indirizzo IP primario due volte.

I seguenti comandi CLI di esempio mostrano come creare, modificare e rimuovere un'istanza database RDS per SQL Server con un dominio AD gestito dal cliente.

**Importante**  
Se modifichi un'istanza database per aggiungerla o rimuoverla da un dominio AD gestito dal cliente, è necessario riavviare l'istanza database affinché la modifica abbia effetto. Puoi scegliere di applicare le modifiche subito o attendere fino alla prossima finestra di manutenzione. La selezione dell'opzione **Applica immediatamente** causerà tempi di inattività per le istanze database Single-AZ. Un'istanza database Multi-AZ eseguirà un failover prima di completare il riavvio. Per ulteriori informazioni, consulta [Utilizzo dell’impostazione della pianificazione delle modifiche](USER_ModifyInstance.ApplyImmediately.md). 

Il seguente comando CLI crea una nuova istanza database RDS per SQL Server e la aggiunge a un dominio AD gestito dal cliente.

Per Linux, macOS o Unix:

```
aws rds create-db-instance \
    --db-instance-identifier my-DB-instance \
    --db-instance-class db.m5.xlarge \
    --allocated-storage 50 \
    --engine sqlserver-se \
    --engine-version 15.00.4043.16.v1 \
    --license-model license-included \
    --master-username my-master-username \
    --master-user-password my-master-password \
    --domain-fqdn my_AD_domain.my_AD.my_domain \
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Per Windows:

```
aws rds create-db-instance ^
    --db-instance-identifier my-DB-instance ^
    --db-instance-class db.m5.xlarge ^
    --allocated-storage 50 ^
    --engine sqlserver-se ^
    --engine-version 15.00.4043.16.v1 ^
    --license-model license-included ^
    --master-username my-master-username ^
    --master-user-password my-master-password ^
    --domain-fqdn my-AD-test.my-AD.mydomain ^
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \ ^
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Il seguente comando CLI modifica un’istanza database RDS per SQL Server esistente in modo che utilizzi un dominio AD autogestito.

Per Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --domain-fqdn my_AD_domain.my_AD.my_domain \
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain \
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" \ 
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Per Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-DBinstance ^
    --domain-fqdn my_AD_domain.my_AD.my_domain ^
    --domain-ou OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:my-AD-test-secret-123456" ^ 
    --domain-dns-ips "10.11.12.13" "10.11.12.14"
```

Il seguente comando CLI rimuove un’istanza database RDS per SQL Server da un dominio AD autogestito.

Per Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --disable-domain
```

Per Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier my-DB-instance ^
    --disable-domain
```

## Fase 2: utilizzo dell’autenticazione Kerberos o NTLM
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM"></a>

### autenticazione NTLM
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM.NTLM"></a>

Ogni istanza database Amazon RDS dispone di un endpoint e ciascun endpoint è associato a un nome DNS e a un numero di porta per l’istanza database. Per connetterti all'istanza database tramite un'applicazione client SQL, devi conoscere il nome DNS e il numero di porta dell'istanza database. Per eseguire l’autenticazione NTLM, è necessario connettersi all’endpoint RDS o all’endpoint listener se si utilizza un’implementazione Multi-AZ.

Durante la manutenzione pianificata del database o l'interruzione non pianificata del servizio, Amazon RDS esegue automaticamente il failover sul database up-to-date secondario in modo che le operazioni possano riprendere rapidamente senza interventi manuali. Le istanze primarie e secondarie utilizzano lo stesso endpoint, il cui indirizzo di rete fisico passa alla replica secondaria come parte del processo di failover. Non è necessario riconfigurare l'applicazione quando si verifica un failover.

### Autenticazione Kerberos
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.Kerb"></a>

L’autenticazione basata su Kerberos per RDS per SQL Server richiede che vengano effettuate connessioni a uno specifico nome del principale del servizio (SPN). Tuttavia, dopo un evento di failover, l’applicazione potrebbe non essere a conoscenza del nuovo SPN. Per risolvere questo problema, RDS per SQL Server offre un endpoint basato su Kerberos.

L’endpoint basato su Kerberos segue un formato specifico. Se l’endpoint RDS è `rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com`, l’endpoint corrispondente basato su Kerberos sarebbe `rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN)`.

Ad esempio, se l’endpoint RDS è `ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com` e il nome di dominio è `corp-ad.company.com`, l’endpoint basato su Kerberos sarebbe `ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com`.

Questo endpoint basato su Kerberos può essere utilizzato per l’autenticazione con l’istanza SQL Server tramite Kerberos, anche dopo un evento di failover, poiché l’endpoint viene aggiornato automaticamente in modo che punti al nuovo SPN dell’istanza SQL Server primaria.

### Individuazione del CNAME
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CNAME"></a>

Per individuare il CNAME, ci si connette al controller di dominio e si apre **Gestione DNS**. Andare a **Inoltra zone di ricerca** e al FQDN.

Navigare in **awsrds**, **aws-region** e **hash specifico dell’account e della Regione**.

![\[Modifica della quantità di storage per un'istanza database\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/kerb-endpoint-selfManagedAD-RDSMS.png)


Se dopo aver connesso CNAME dal client remoto viene restituita una connessione NTLM, controllare se le porte richieste sono incluse nell’elenco delle porte consentite.

Per verificare che la connessione utilizzi Kerberos, eseguire la seguente query:

```
SELECT net_transport, auth_scheme
    FROM sys.dm_exec_connections
    WHERE session_id = @@SSPID;
```

Se l’istanza restituisce una connessione NTLM al momento della connessione a un endpoint Kerberos, verificare la configurazione della rete e le configurazioni utente. Per informazioni, consulta [Configurazione della connettività di rete](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig).

## Fase 3: Creare gli accessi a SQL Server per l'autenticazione di Windows
<a name="USER_SQLServer_SelfManagedActiveDirectory.CreateLogins"></a>

Utilizza le credenziali dell'utente master Amazon RDS per eseguire la connessione all'istanza database SQL Server analogamente a quanto avviene con qualsiasi altra istanza database. Poiché l'istanza database viene aggiunta al dominio AD gestito dal cliente, puoi eseguire il provisioning degli account di accesso e degli utenti di SQL Server. Puoi eseguire questa operazione dall'utilità Utenti e gruppi AD nel dominio AD gestito dal cliente. Le autorizzazioni per il database vengono gestite tramite le autorizzazioni standard di SQL Server concesse e revocate in base a questi account di accesso Windows.

Affinché un account del servizio di dominio AD autogestito possa autenticarsi con SQL Server, è necessario che esista un accesso Windows a SQL Server per l’account del servizio di dominio AD autogestito o un gruppo AD autogestito di cui l’utente è membro. Il controllo granulare degli accessi viene gestito assegnando o revocando le autorizzazioni per questi login di SQL Server. Un account del servizio di dominio AD autogestito che non dispone di un accesso a SQL Server o non appartiene a un gruppo AD autogestito con tale accesso non può accedere all’istanza database SQL Server.

È necessaria l'autorizzazione ALTER ANY LOGIN per creare un accesso AD gestito dal cliente per SQL Server. Se non hai ancora creato un accesso con questa autorizzazione, esegui la connessione come utente principale dell'istanza database utilizzando l'autenticazione di SQL Server e quindi crea gli accessi AD gestiti dal cliente per SQL Server nel contesto dell'utente principale.

È possibile eseguire un comando DDL (Data Definition Language) come il seguente per creare un accesso a SQL Server per un gruppo o un account del servizio di dominio AD autogestito.

**Nota**  
Specifica utenti o gruppi utilizzando il nome di accesso precedente a Windows 2000 nel formato `my_AD_domain\my_AD_domain_user`. Non puoi utilizzare un UPN (User Principle Name) nel formato *`my_AD_domain_user`*`@`*`my_AD_domain`*.

```
USE [master]
GO
CREATE LOGIN [my_AD_domain\my_AD_domain_user] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

Per maggiori informazioni, consulta [CREATE LOGIN (Transact-SQL)](https://msdn.microsoft.com/en-us/library/ms189751.aspx) nella documentazione di Microsoft Developer Network.

Gli utenti (persone e applicazioni) del dominio possono ora connettersi all'istanza RDS per SQL Server da un computer client associato al dominio AD gestito dal cliente utilizzando l'autenticazione Windows.

# Gestione di un'istanza database in un dominio Active Directory gestito dal cliente
<a name="USER_SQLServer_SelfManagedActiveDirectory.Managing"></a>

 Puoi utilizzare la console o l'API Amazon RDS per gestire la tua istanza DB e la sua relazione con il tuo dominio AD autogestito. AWS CLI Ad esempio, puoi spostare l'istanza database all'interno, al di fuori o tra domini. 

 Ad esempio, puoi utilizzare l'API Amazon RDS per effettuare quanto segue: 
+ Per tentare nuovamente l'accesso a un dominio autogestito per un'iscrizione non riuscita, utilizza l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API e specifica lo stesso set di parametri:
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ Per rimuovere un'istanza database da un dominio gestito dal cliente, utilizza l'operazione API `ModifyDBInstance` e specifica `--disable-domain` come parametro del dominio.
+ Per spostare un'istanza database da un dominio gestito dal cliente a un altro, utilizza l'operazione API `ModifyDBInstance` e specifica i parametri di dominio per il nuovo.
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ Per elencare l'appartenenza al dominio AD autogestita per ogni istanza DB, utilizza l'operazione [DBInstancesDescrivi](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) API.

## Informazioni sull'iscrizione al dominio Active Directory gestito dal cliente
<a name="USER_SQLServer_SelfManagedActiveDirectory.Understanding"></a>

Dopo aver creato o modificato l’istanza database specificando i dettagli di AD, l’istanza diventa membro del dominio AD autogestito. La AWS console indica lo stato dell'appartenenza al dominio Active Directory autogestito per l'istanza DB. Lo stato dell'istanza di database può essere uno dei seguenti: 
+  **Collegato**: l'istanza è un membro del dominio AD.
+  **Collegamento in corso**: l'istanza sta diventando un membro del dominio.
+  **pending-join (associazione in sospeso)** – L'associazione dell'istanza è in sospeso.
+  **pending-maintenance-join**— AWS tenterà di rendere l'istanza un membro del dominio AD durante la successiva finestra di manutenzione programmata.
+  **In attesa di rimozione**: la rimozione dell'istanza dal dominio AD è in sospeso.
+  **pending-maintenance-removal**— AWS tenterà di rimuovere l'istanza dal dominio AD durante la successiva finestra di manutenzione programmata.
+  **Non riuscito**: un problema di configurazione ha impedito il collegamento dell'istanza al dominio AD. Verifica e correggi la configurazione prima di eseguire nuovamente il comando di modifica dell'istanza.
+  **Rimozione in corso**: è in corso la rimozione dell'istanza dal dominio AD gestito dal cliente.

**Importante**  
Una richiesta di collegamento a un dominio AD gestito dal cliente potrebbe non riuscire a causa di un problema di connettività di rete. Ad esempio, è possibile che venga creata un'istanza database o modificata un'istanza esistente senza però che questa diventi un membro di un dominio AD gestito dal cliente. In questo caso, devi emettere nuovamente il comando per creare o modificare l'istanza database o modificare l'istanza appena creata per aggiungerla al dominio AD gestito dal cliente.

# Risoluzione dei problemi di Active Directory gestito dal cliente
<a name="USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory"></a>

Di seguito sono riportati i problemi che potresti riscontrare quando configuri o modifichi AD gestito dal cliente.


****  

| Codice di errore | Description | Cause comuni | Suggerimenti sulla risoluzione dei problemi | 
| --- | --- | --- | --- | 
| Errore 2/0x2 | Il sistema non trova il file specificato. | Il formato o la posizione dell'unità organizzativa (UO) specificati con il parametro `—domain-ou` non è valido. L'account del servizio di dominio specificato tramite AWS Secrets Manager non dispone delle autorizzazioni necessarie per accedere all'unità organizzativa. | Rivedi il parametro `—domain-ou`. Assicurati che l'account del servizio di dominio disponga delle autorizzazioni corrette per l'unità organizzativa. Per ulteriori informazioni, consulta [Configurazione dell'account del servizio di dominio AD](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig).  | 
| Errore 5/0x5 | Accesso negato. | Nel dominio esistono già autorizzazioni non configurate correttamente per l'account del servizio di dominio o per l'account del computer. | Controlla le autorizzazioni dell'account del servizio di dominio nel dominio e verifica che l'account del computer RDS non sia duplicato nel dominio. È possibile verificare il nome dell'account del computer RDS eseguendo `SELECT @@SERVERNAME` sull'istanza database RDS per SQL Server. Se utilizzi l'opzione Multi-AZ, prova a riavviare con il failover, quindi verifica nuovamente l'account del computer RDS. Per ulteriori informazioni, consulta [Riavvio di un'istanza DB DB](USER_RebootInstance.md). | 
| Errore 87/0x57 | Il parametro non è corretto. | L'account del servizio di dominio specificato tramite AWS Secrets Manager non dispone delle autorizzazioni corrette. È anche possibile che il profilo utente sia danneggiato. | Verifica i requisiti per l'account del servizio di dominio. Per ulteriori informazioni, consulta [Configurazione dell'account del servizio di dominio AD](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig).  | 
| Errore 234/0xEA | L'unità organizzativa (UO) specificata non esiste. | L'unità organizzativa specificata con il parametro `—domain-ou` non esiste nel dominio AD gestito dal cliente. | Rivedi il parametro `—domain-ou` e assicurati che l'unità organizzativa specificata esista in AD gestito dal cliente. | 
| Errore 1326/0x52E | Il nome utente o la password sono errati. | Le credenziali dell'account del servizio di dominio fornite in AWS Secrets Manager contengono un nome utente sconosciuto o una password errata. L'account di dominio può anche essere disabilitato in AD gestito dal cliente. | Assicurati che le credenziali fornite in AWS Secrets Manager siano corrette e che l’account di dominio sia abilitato in AD autogestito. | 
| Errore 1355/0x54B | Il nome di dominio specificato non esiste o non può essere contattato. | Il dominio non è attivo, il set di DNS IPs specificato non è raggiungibile o il nome di dominio completo specificato non è raggiungibile. | Controlla i parametri `—domain-dns-ips` e `—domain-fqdn` per assicurarti che siano corretti. Verifica la configurazione di rete dell'istanza database RDS per SQL Server e assicurati che il dominio AD gestito dal cliente sia raggiungibile. Per ulteriori informazioni, consulta [Configurazione della connettività di rete](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig).  | 
| Errore 1.722/0x6BA | Il server RPC non è disponibile. | Si è verificato un problema durante la connessione al servizio RPC del dominio AD. Questo errore potrebbe essere causato da un problema di rete. | Verifica che il servizio RPC sia in esecuzione sui controller di dominio e che le porte TCP `135` e `49152-65535` siano raggiungibili sul dominio dall'istanza database RDS per SQL Server. | 
|  Errore 1727/0x6BF  |  La chiamata della procedura remota non è riuscita e non è stata eseguita.  |  Problema di connettività di rete o restrizione del firewall che blocca la comunicazione RPC con il controller di dominio.  |  Se utilizzi l’unione di domini tra VPC, verifica che la comunicazione tra VPC sia configurata correttamente con il peering VPC o il gateway di transito. Assicurati che le porte con numero elevato TCP `49152-65535` siano raggiungibili sul dominio dall’istanza database RDS per SQL Server, comprese eventuali restrizioni del firewall.  | 
| Errore 2224/0x8B0 | L'account utente esiste già. | L'account del computer che sta tentando di essere aggiunto al dominio AD gestito dal cliente esiste già. | Identifica l'account del computer eseguendo `SELECT @@SERVERNAME` sull'istanza database RDS per SQL Server, quindi rimuovilo con attenzione da dominio AD gestito dal cliente. | 
| Errore 2242/0x8c2 | La password di questo utente è scaduta. | La password per l'account del servizio di dominio specificato tramite AWS Secrets Manager è scaduta. | Aggiorna la password per l'account del servizio di dominio utilizzato per aggiungere l'istanza database RDS per SQL Server al dominio AD gestito dal cliente. | 

Dopo aver unito l’istanza database a un dominio Active Directory autogestito, potresti ricevere eventi RDS relativi all’integrità del dominio.

```
Unhealthy domain state detected while attempt to verify or 
configure your Kerberos endpoint in your domain on 
node node_n. message
```

Per le istanze Multi-AZ, potresti notare la segnalazione di errori sia per node1 sia per node2, il che indica che la configurazione Kerberos dell’istanza non è pronta per il failover. In caso di failover, potrebbero verificarsi problemi di autenticazione utilizzando Kerberos. Risolvi i problemi di configurazione per garantire che la configurazione di Kerberos sia valida e aggiornata. Per le istanze Multi-AZ, non è necessaria alcuna azione per utilizzare l’autenticazione Kerberos sul nuovo host primario, dato che tutte le configurazioni di rete e di autorizzazione sono presenti.

Per le istanze Single-AZ, node1 è il nodo primario. Se l’autenticazione Kerberos non funziona come previsto, controlla gli eventi dell’istanza e risolvi i problemi di configurazione per garantire che la configurazione di Kerberos sia valida e aggiornata.

## Ripristino e aggiunta di un'istanza di database SQL Server a un dominio Active Directory gestito dal cliente
<a name="USER_SQLServer_SelfManagedActiveDirectory.Restore"></a>

È possibile ripristinare un'istantanea del DB o eseguire il point-in-time ripristino (PITR) per un'istanza DB di SQL Server e quindi aggiungerla a un dominio Active Directory autogestito. Dopo aver ripristinato l'istanza database, modificala utilizzando il processo illustrato in [Passaggio 1: creare o modificare un'istanza DB di SQL Server](USER_SQLServer_SelfManagedActiveDirectory.Joining.md#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify) per aggiungere l'istanza a un dominio Active Directory gestito dal cliente.

# Utilizzo di Active Directory AWS gestita con RDS per SQL Server
<a name="USER_SQLServerWinAuth"></a>

Puoi utilizzarlo AWS Managed Microsoft AD per autenticare gli utenti con l'autenticazione di Windows quando si connettono alla tua istanza DB di RDS per SQL Server. L'istanza DB funziona con AWS Directory Service for Microsoft Active Directory, chiamata anche AWS Managed Microsoft AD, per abilitare l'autenticazione di Windows. Quando gli utenti eseguono l'autenticazione su un'istanza di database di SQL Server unita al dominio trusting, le richieste di autenticazione vengono inviate alla directory di dominio create con Directory Service. 

## Disponibilità di regioni e versioni
<a name="USER_SQLServerWinAuth.RegionVersionAvailability"></a>

Amazon RDS supporta l'utilizzo solo AWS Managed Microsoft AD per l'autenticazione di Windows. RDS non supporta l'utilizzo di AD Connector. Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Politica di compatibilità delle applicazioni per AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_app_compatibility.html)
+ [Policy di compatibilità delle applicazioni per AD connector](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ad_connector_app_compatibility.html)

Per ulteriori informazioni sulla disponibilità di versioni e regioni, consulta [Autenticazione Kerberos con Amazon RDS per SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.html#Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.sq).

## Panoramica sulla configurazione dell'autenticazione di Windows
<a name="USER_SQLServerWinAuth.overview"></a>

Amazon RDS utilizza la modalità mista per l'autenticazione Windows. In base a questo approccio, l'*utente master* (il nome e la password utilizzati per creare l'istanza di database SQL Server) utilizza l'autenticazione SQL. Poiché l'account utente master dispone di credenziali privilegiate, è necessario limitare l'accesso a tale account.

Per ottenere l'autenticazione di Windows utilizzando un Microsoft Active Directory in locale o autogestito, crea un trust tra foreste. La fiducia può essere a senso unico o bidirezionale. Per ulteriori informazioni sulla configurazione dei trust forestali utilizzando Directory Service, vedere [Quando creare una relazione di trust](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html) nella *Guida all'AWS Directory Service amministrazione*.

Per configurare l'autenticazione di Windows per un'istanza database SQL Server, esegui la procedura riportata di seguito, illustrata in maggiore dettaglio in [Configurazione dell'autenticazione di Windows per le istanze di database di SQL Server](USER_SQLServerWinAuth.SettingUp.md):

1.  AWS Managed Microsoft AD Utilizzatelo, dall' Directory Service API Console di gestione AWS o dall'API, per creare una AWS Managed Microsoft AD directory. 

1. Se utilizzi l'API AWS CLI o Amazon RDS per creare la tua istanza DB di SQL Server, crea un ruolo AWS Identity and Access Management (IAM). Questo ruolo utilizza la policy IAM gestita `AmazonRDSDirectoryServiceAccess` e consente a Amazon RDS di effettuare chiamate alla directory. Se utilizzi la console per creare l'istanza database di SQL Server, AWS crea automaticamente il ruolo IAM. 

   Affinché il ruolo consenta l'accesso, l'endpoint AWS Security Token Service (AWS STS) deve essere attivato nella AWS regione del tuo AWS account. AWS STS gli endpoint sono attivi per impostazione predefinita in tutte le AWS regioni e puoi utilizzarli senza ulteriori azioni. Per ulteriori informazioni, consulta la sezione [Gestione di AWS STS in una Regione AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) nella *Guida per l'utente di IAM*.

1. Crea e configura utenti e gruppi nella AWS Managed Microsoft AD directory utilizzando gli strumenti di Microsoft Active Directory. Per ulteriori informazioni sulla creazione di utenti in Active Directory, consulta [Gestione di utenti e gruppi in AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html) nella *Guida all’amministrazione di AWS Directory Service *.

1. Se prevedi di localizzare la directory e l'istanza DB in modo diverso VPCs, abilita il traffico cross-VPC.

1. Usa Amazon RDS per creare una nuova istanza DB di SQL Server dalla console o dall' AWS CLI API Amazon RDS. Nella richiesta di creazione, fornisci l'identificatore di dominio ("`d-*`") generato durante la creazione della directory e il nome del ruolo creato. Puoi inoltre modificare un'istanza database di SQL Server per utilizzare l'autenticazione di Windows impostando i parametri dominio e ruolo IAM per l'istanza database.

1. Utilizza le credenziali dell'utente master Amazon RDS per eseguire la connessione all'istanza database di SQL Server analogamente a quanto avviene con qualsiasi altra istanza database. Poiché l'istanza DB è aggiunta al AWS Managed Microsoft AD dominio, è possibile effettuare il provisioning degli accessi e degli utenti di SQL Server dagli utenti e dai gruppi di Active Directory del relativo dominio. (noti come account di accesso "Windows" di SQL Server) Le autorizzazioni per il database vengono gestite tramite le autorizzazioni standard di SQL Server concesse e revocate in base a questi account di accesso Windows. 

Quando crei un'istanza DB RDS per SQL Server connessa al dominio utilizzando la console Amazon RDS, crea AWS automaticamente il ruolo IAM. `rds-directoryservice-access-role` Questo ruolo è essenziale per la gestione delle istanze connesse al dominio ed è necessario per le seguenti operazioni:
+ Applicazione di modifiche alla configurazione delle istanze SQL Server connesse al dominio
+ Gestione delle impostazioni di integrazione di Active Directory
+ Esecuzione di operazioni di manutenzione su istanze aggiunte al dominio

**Importante**  
Se si elimina il ruolo IAM `rds-directoryservice-access-role`, non è possibile apportare modifiche all’istanza SQL Server connessa al dominio tramite la console o l’API Amazon RDS. Il tentativo di modificare l'istanza genera un messaggio di errore che indica: Non hai l'autorizzazione per iam:. CreateRole Per richiedere l'accesso, copia il testo seguente e invialo al tuo AWS amministratore.  
Questo errore si verifica perché Amazon RDS deve ricreare il ruolo per gestire la connessione del dominio, ma non dispone delle autorizzazioni necessarie. Inoltre, questo errore non viene registrato CloudTrail, il che può rendere più difficile la risoluzione dei problemi.

Se si elimina accidentalmente il `rds-directoryservice-access-role`, è necessario disporre delle autorizzazioni `iam:CreateRole` per ricrearlo prima di poter apportare modifiche all’istanza SQL Server connessa al dominio. Per ricrearlo manualmente, il ruolo deve essere collegato alla policy gestita `AmazonRDSDirectoryServiceAccess` e alla relazione di trust appropriata per consentire al servizio RDS di assumere il ruolo.

# Creazione di un endpoint per l'autenticazione Kerberos
<a name="USER_SQLServerWinAuth.KerberosEndpoint"></a>

L'autenticazione basata su Kerberos richiede che l'endpoint includa il nome host specificato dal cliente, un punto e quindi il nome di dominio completo (FQDN). Il seguente esempio illustra un endpoint che può essere utilizzato con l'autenticazione basata su Kerberos. In questo caso, il nome host dell'istanza database di SQL Server è `ad-test` e il nome di dominio è `corp-ad.company.com`: 

```
ad-test.corp-ad.company.com
```

Per accertarti che la connessione utilizzi Kerberos, esegui la seguente query: 

```
1. SELECT net_transport, auth_scheme 
2.   FROM sys.dm_exec_connections 
3.  WHERE session_id = @@SPID;
```

# Configurazione dell'autenticazione di Windows per le istanze di database di SQL Server
<a name="USER_SQLServerWinAuth.SettingUp"></a>

Si usa AWS Directory Service for Microsoft Active Directory, chiamata anche AWS Managed Microsoft AD, per configurare l'autenticazione di Windows per un'istanza DB di SQL Server. Per configurare l'autenticazione di Windows, attieniti alla seguente procedura. 

## Passaggio 1: creare una directory utilizzando AWS Directory Service for Microsoft Active Directory
<a name="USER_SQLServerWinAuth.SettingUp.CreateDirectory"></a>

Directory Service crea una Microsoft Active Directory nel AWS cloud completamente gestita. Quando crei una AWS Managed Microsoft AD directory, Directory Service crea due controller di dominio e server DNS (Domain Name Service) per tuo conto. I server di directory vengono creati in due sottoreti in due diverse zone di disponibilità all'interno di un VPC. Questa ridondanza assicura che la directory rimanga accessibile anche se si verifica un errore.

 Quando crei una AWS Managed Microsoft AD directory, Directory Service esegue le seguenti attività per tuo conto: 
+ Configura una Microsoft Active Directory nel VPC. 
+ Crea un account amministratore della directory con nome utente Admin e la password specificata. Puoi utilizzare questo account per gestire le directory.
+ Crea un gruppo di sicurezza per i controller della directory.

Quando si avvia una AWS Directory Service for Microsoft Active Directory, AWS crea un'unità organizzativa (OU) che contiene tutti gli oggetti della directory. Questa unità organizzativa, che ha lo stesso nome NetBIOS che hai digitato al momento della creazione della directory, si trova nella radice del dominio. La radice del dominio è di proprietà e gestita da AWS. 

 L'account *admin* creato con la directory AWS Managed Microsoft AD dispone delle autorizzazioni per le attività amministrative più comuni per l'unità organizzativa: 
+ Creazione, aggiornamento o eliminazione di utenti, gruppi e computer. 
+ Aggiunta di risorse al tuo dominio, come file o server di stampa, quindi assegnazione delle autorizzazioni per tali risorse a utenti e gruppi dell'UO; 
+ Crea contenitori aggiuntivi OUs e.
+ delega dell'autorità; 
+ creazione e collegamento policy di gruppo; 
+ ripristino degli oggetti eliminati dal cestino riciclaggio di Active Directory; 
+ Esegui i PowerShell moduli Windows AD e DNS sul servizio Web Active Directory. 

L'account admin dispone inoltre dei diritti per eseguire le seguenti attività estese a tutto il dominio: 
+ gestione delle configurazioni DNS (aggiunta, eliminazione o aggiornamento di record, zone e server d'inoltro); 
+ visualizzazione di log di eventi DNS; 
+ visualizzazione di log di eventi di sicurezza. 

**Per creare una directory con AWS Managed Microsoft AD**

1. Nel riquadro di navigazione della [console Directory Service](https://console.aws.amazon.com/directoryservicev2/), scegliere **Directories (Directory)**, quindi selezionare **Set up directory (Configurazione della directory)**.

1. Scegliere **AWS Managed Microsoft AD**. Attualmente questa è la sola opzione supportata per l'uso con Amazon RDS.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Enter directory information (Inserisci le informazioni sulla directory)** inserisci le seguenti informazioni:   
**Edizione**  
 Scegliere l'edizione più adatta alle proprie esigenze.  
**Nome DNS directory**  
Il nome completo della directory, ad esempio `corp.example.com`. I nomi più lunghi di 47 caratteri non sono supportati da SQL Server.  
**Nome NetBIOS della directory**  
Nome breve opzionale della directory, ad esempio `CORP`.   
**Descrizione della directory**  
Descrizione opzionale della directory.   
**Password amministratore**  
La password dell'amministratore della directory. Con il processo di creazione della directory viene generato un account amministratore con il nome utente Admin e questa password.   
La password dell'amministratore della directory non può includere il termine `admin`. La password distingue tra maiuscole e minuscole e la lunghezza deve essere compresa tra 8 e 64 caratteri. Deve anche contenere un carattere di almeno tre delle seguenti quattro categorie:   
   + Lettere minuscole (a-z)
   + Lettere maiuscole (A-Z)
   + Numeri (0-9)
   + Caratteri non alfanumerici (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirm password (Conferma password)**  
Digitare di nuovo la password dell'amministratore. 

1. Scegli **Next (Successivo)**.

1. Nella pagina **Choose VPC and subnets (Scegli VPC e sottoreti)** fornire le seguenti informazioni:  
**VPC**  
Scegliere il VPC per la directory.  
Puoi localizzare la directory e l'istanza DB in modo diverso VPCs, ma se lo fai, assicurati di abilitare il traffico cross-VPC. Per ulteriori informazioni, consulta [Fase 4: abilitazione del traffico tra VPC tra la directory e l'istanza database](#USER_SQLServerWinAuth.SettingUp.VPC-Peering).  
**Sottoreti**  
Seleziona le sottoreti per i server di directory. Le due sottoreti devono trovarsi in diverse zone di disponibilità.

1. Seleziona **Next** (Successivo).

1. Verificare le informazioni della directory Se sono necessarie modifiche, selezionare **Previous (Precedente)**. Quando le informazioni sono corrette, scegli **Create Directory (Crea directory)**.   
![\[Revisione e creazione della pagina\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

Per creare la directory sono necessari alcuni minuti. Una volta creata correttamente la directory, il valore **Status (Stato)** viene modificato in **Active (Attivo)**.

Per consultare le informazioni sulla directory, selezionare l’ID della directory nell'elenco di directory. Prendere nota del valore **Directory ID (ID directory)**. Questo valore è necessario per creare o modificare l'istanza database SQL Server.

![\[Pagina dei dettagli della directory\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## Fase 2: creazione del ruolo IAM per l'utilizzo da parte di Amazon RDS
<a name="USER_SQLServerWinAuth.SettingUp.CreateIAMRole"></a>

Se utilizzi la console per creare l'istanza database SQL Server, puoi saltare questa fase. Se utilizzi CLI o l'API RDS per creare l'istanza database SQL Server, devi creare un ruolo IAM che utilizza la policy IAM gestita `AmazonRDSDirectoryServiceAccess`. Questo ruolo consente ad Amazon RDS di effettuare chiamate al posto Directory Service tuo. 

Se utilizzi una politica personalizzata per l'aggiunta a un dominio, anziché utilizzare la `AmazonRDSDirectoryServiceAccess` politica AWS-managed, assicurati di consentire l'azione`ds:GetAuthorizedApplicationDetails`. Questo requisito è valido a partire da luglio 2019, a causa di una modifica dell' Directory Service API.

La seguente policy IAM, `AmazonRDSDirectoryServiceAccess`, fornisce l'accesso ad Directory Service.

**Example Politica IAM per fornire l'accesso a Directory Service**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
            "ds:DescribeDirectories", 
            "ds:AuthorizeApplication", 
            "ds:UnauthorizeApplication",
            "ds:GetAuthorizedApplicationDetails"
        ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

Si consiglia di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Puoi usare le chiavi di contesto delle condizioni globali e avere il valore `aws:SourceArn` che contiene l'ID dell'account. In questo caso, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione.
+ Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa.
+ Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

Nella relazione di trust, assicurati di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'Amazon Resource Name (ARN) completo delle risorse che accedono al ruolo. Per l'autenticazione Windows, assicurati di includere le istanze database, come mostrato nell'esempio seguente.

**Example relazione di affidabilità con la chiave di contesto delle condizioni globali per l'autenticazione di Windows**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                    ]
                }
            }
        }
    ]
}
```

Crea un ruolo IAM utilizzando questa policy IAM e una relazione di affidabilità. Per ulteriori informazioni sulla creazione di ruoli IAM, consulta [Creazione di policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console) nella *Guida per l'utente di IAM*.

## Fase 3: creazione e configurazione di utenti e gruppi
<a name="USER_SQLServerWinAuth.SettingUp.CreateUsers"></a>

Puoi creare utenti e gruppi con lo strumento Utenti Active Directory e computer. Questo è uno degli strumenti Active Directory Domain Services e Active Directory Lightweight Directory Services. Gli utenti possono essere individui singoli o entità che hanno accesso alla tua directory. I gruppi sono molto utili per concedere o negare privilegi ai gruppi di utenti, piuttosto che dover applicare tali privilegi a ogni singolo utente.

Per creare utenti e gruppi in una Directory Service directory, devi essere connesso a un'istanza Windows EC2 che fa parte della Directory Service directory. Devi anche essere connesso come un utente che dispone dei privilegi per creare utenti e gruppi. Per ulteriori informazioni, consulta [Aggiungere utenti e gruppi (Simple AD e AWS Managed Microsoft AD)](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/creating_ad_users_and_groups.html) nella *Guida all'AWS Directory Service amministrazione*.

## Fase 4: abilitazione del traffico tra VPC tra la directory e l'istanza database
<a name="USER_SQLServerWinAuth.SettingUp.VPC-Peering"></a>

Se prevedi di individuare la directory e l'istanza database nello stesso VPC, ignora questa fase e passa a [Fase 5: creazione o modifica di un'istanza database SQL Server](#USER_SQLServerWinAuth.SettingUp.CreateModify).

[Se prevedi di localizzare la directory e l'istanza DB in modo diverso VPCs, configura il traffico cross-VPC utilizzando il peering VPC o il Transit Gateway.AWS](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)

La procedura seguente abilita il traffico tra un VPCs utilizzo e l'altro del peering VPC. Segui le istruzioni in [Che cos'è il peering di VPC?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) nella *Amazon Virtual Private Cloud Peering Guide*.

**Per abilitare il traffico tra VPC utilizzando il peering di VPC**

1. Configurare le regole di routing VPC appropriate per garantire che il traffico di rete possa scorrere in entrambe le direzioni.

1. Assicurarsi che il gruppo di protezione dell'istanza database possa ricevere traffico in entrata dal gruppo di sicurezza della directory.

1. Assicurati che non sia presente una regola della lista di controllo accessi (ACL) di rete per bloccare il traffico.

Se la directory è di proprietà di un altro AWS account, è necessario condividerla.

**Per condividere la cartella tra AWS account**

1. *Inizia a condividere la directory con l' AWS account in cui verrà creata l'istanza DB seguendo le istruzioni riportate nel [Tutorial: Sharing your AWS Managed Microsoft AD directory for seamless EC2 domain-join](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) nella Administration Guide.Directory Service *

1. Accedi alla Directory Service console utilizzando l'account per l'istanza DB e assicurati che il dominio abbia lo stato prima di procedere. `SHARED`

1. Dopo aver effettuato l'accesso alla Directory Service console utilizzando l'account per l'istanza DB, annota il valore **Directory ID**. Utilizzare questo ID directory per aggiungere l'istanza database al dominio.

## Fase 5: creazione o modifica di un'istanza database SQL Server
<a name="USER_SQLServerWinAuth.SettingUp.CreateModify"></a>

Crea o modifica un'istanza database SQL Server per l'utilizzo con la directory. Puoi utilizzare la console, CLI o l'API RDS per associare un'istanza database a una directory. Questa operazione può essere eseguita in uno dei seguenti modi:
+ Crea una nuova istanza DB di SQL Server utilizzando la console, il comando [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)CLI o l'operazione [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API.

  Per istruzioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Modifica un'istanza DB di SQL Server esistente utilizzando la console, il comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)CLI o l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API.

  Per istruzioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).
+ [Ripristina un'istanza DB di SQL Server da uno snapshot DB utilizzando la console, il comando CLI [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) o l'operazione Restore From RDS API. DBInstance DBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)

  Per istruzioni, consulta [Ripristino in un’istanza database](USER_RestoreFromSnapshot.md).
+ Ripristina un'istanza DB di SQL Server point-in-time utilizzando la console, il comando [restore-db-instance-to- point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI o l'operazione [Restore DBInstance ToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API.

  Per istruzioni, consulta [Ripristino di un’istanza database a un punto temporale specifico per Amazon RDS](USER_PIT.md).

 L'autenticazione di Windows è supportata solo per istanze database di SQL Server in un VPC. 

 Affinché l'istanza database sia in grado di utilizzare la directory del dominio creata, è richiesto quanto segue: 
+  Per **Directory**, devi scegliere l'identificatore di dominio (`d-ID`) generato durante la creazione della directory.
+  Assicurati che il gruppo di protezione VPC disponga di una regola in uscita che consente all'istanza DB di comunicare con la directory.

![\[Directory di autenticazione Microsoft SQL Server Windows\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/WinAuth1.png)


Quando si utilizza il AWS CLI, sono necessari i seguenti parametri affinché l'istanza DB possa utilizzare la directory creata:
+ Per il parametro `--domain`, utilizza l'identificatore di dominio (`d-ID`) generato durante la creazione della directory.
+ Per il parametro `--domain-iam-role-name`, utilizza il ruolo creato che utilizza la policy IAM gestita `AmazonRDSDirectoryServiceAccess`.

Ad esempio, il comando CLI seguente modifica un'istanza database per utilizzare una directory.

Per Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --domain d-ID \
    --domain-iam-role-name role-name
```

Per Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**Importante**  
Se modifichi un'istanza database per abilitare l'autenticazione Kerberos, riavvia l'istanza database dopo aver apportato la modifica.

## Fase 6: creazione di account di accesso di SQL Server per l'autenticazione di Windows
<a name="USER_SQLServerWinAuth.CreateLogins"></a>

Utilizza le credenziali dell'utente master Amazon RDS per eseguire la connessione all'istanza database di SQL Server analogamente a quanto avviene con qualsiasi altra istanza database. Poiché l'istanza DB è aggiunta al AWS Managed Microsoft AD dominio, è possibile effettuare il provisioning degli accessi e degli utenti di SQL Server. Questa operazione viene eseguita dagli utenti e dai gruppi Active Directory nel dominio. Le autorizzazioni per il database vengono gestite tramite le autorizzazioni standard di SQL Server concesse e revocate in base a questi account di accesso Windows.

Affinché un utente di Active Directory possa autenticarsi su SQL Server, deve essere disponibile un account di accesso Windows SQL Server per l'utente o un gruppo di cui l'utente è membro. Il controllo granulare degli accessi viene gestito assegnando o revocando le autorizzazioni per questi login di SQL Server. Un utente che non dispone di un account di accesso SQL Server o appartiene a un gruppo con tale account di accesso, non può accedere all'istanza database SQL Server.

È necessaria l'autorizzazione ALTER ANY LOGIN per creare una connessione SQL Server Active Directory. Se non hai ancora creato account di accesso con questa autorizzazione, esegui la connessione come utente principale dell'istanza database utilizzando l'autenticazione di SQL Server.

Esegui il comando DDL (Data Definition Language) seguente per creare un accesso per SQL Server per un utente o un gruppo di Active Directory.

**Nota**  
Specifica utenti o gruppi utilizzando il nome di accesso precedente a Windows 2000 nel formato `domainName\login_name`. Non puoi utilizzare un UPN (User Principle Name) nel formato *`login_name`*`@`*`DomainName`*.  
È possibile creare un accesso con autenticazione Windows su un’istanza RDS per SQL Server solo utilizzando istruzioni T-SQL. Non è possibile utilizzare SQL Server Management Studio per creare un accesso con autenticazione Windows.

```
USE [master]
GO
CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

Per maggiori informazioni, consulta [CREATE LOGIN (Transact-SQL)](https://msdn.microsoft.com/en-us/library/ms189751.aspx) nella documentazione di Microsoft Developer Network.

Gli utenti (persone e applicazioni) del tuo dominio possono ora connettersi all'istanza RDS for SQL Server da un computer client associato al dominio utilizzando l'autenticazione Windows.

# Gestione di un'istanza database in un dominio
<a name="USER_SQLServerWinAuth.Managing"></a>

 Puoi utilizzare la console o l'API Amazon RDS per gestire la tua istanza DB e la sua relazione con il tuo dominio. AWS CLI Ad esempio, puoi spostare l'istanza database all'interno, al di fuori o tra domini. 

 Ad esempio, puoi utilizzare l'API Amazon RDS per effettuare quanto segue: 
+  Per ripetere l'accesso a un dominio per un'iscrizione non riuscita, utilizza l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API e specifica l'ID di directory dell'appartenenza corrente. 
+  Per aggiornare il nome del ruolo IAM dell'appartenenza, utilizza l'operazione API `ModifyDBInstance` e specifica l'ID della directory dell'appartenenza corrente e il nuovo ruolo IAM. 
+  Per rimuovere un'istanza database da un dominio, utilizza l'operazione API `ModifyDBInstance` e specifica `none` come il parametro del dominio. 
+  Per spostare un'istanza database da un dominio a un altro, utilizza l'operazione API `ModifyDBInstance` e specifica l'identificatore di dominio del nuovo dominio come parametro del dominio. 
+  Per elencare le appartenenze per ogni istanza DB, usa l'operazione [Descrivi DBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) API. 

## Appartenenza al dominio
<a name="USER_SQLServerWinAuth.Understanding"></a>

 Quando l'istanza di database viene creata o modificata diventa membro del dominio. La AWS console indica lo stato dell'appartenenza al dominio per l'istanza DB. Lo stato dell'istanza di database può essere uno dei seguenti: 
+  **joined (associata)** – L'istanza è membro del dominio.
+  **joining (in fase di associazione)** – L'istanza sta diventando membro del dominio.
+  **pending-join (associazione in sospeso)** – L'associazione dell'istanza è in sospeso.
+  **pending-maintenance-join**— AWS tenterà di rendere l'istanza un membro del dominio durante la successiva finestra di manutenzione programmata.
+  **pending-removal (rimozione in sospeso)** – La rimozione dell'istanza dal dominio è in sospeso.
+  **pending-maintenance-removal**— AWS tenterà di rimuovere l'istanza dal dominio durante la successiva finestra di manutenzione programmata.
+  **failed (non riuscita)** – Un problema di configurazione ha impedito l'associazione dell'istanza al dominio. Verifica e correggi la configurazione prima di eseguire nuovamente il comando di modifica dell'istanza.
+  **removing (rimozione)** – È in corso la rimozione dell'istanza dal dominio.

Una richiesta di associazione a un dominio potrebbe non riuscire a causa di un problema di connettività di rete o di un ruolo IAM non corretto. Ad esempio, è possibile che venga creata un'istanza database o modificata un'istanza esistente senza però che questa diventi un membro di un dominio. In questo caso, emettere nuovamente il comando per creare o modificare l'istanza database o modificare l'istanza appena creata per aggiungerla al dominio.

# Connessione a SQL Server mediante autenticazione di Windows
<a name="USER_SQLServerWinAuth.Connecting"></a>

Per eseguire la connessione a SQL Server tramite l'autenticazione di Windows, devi aver effettuato il login al computer che è stato associato al dominio come utente di dominio. Dopo aver avviato SQL Server Management Studio, scegli il tipo di autenticazione **Windows Authentication (Autenticazione di Windows)** come mostrato di seguito.

![\[Connessione a SQL Server mediante l'autenticazione di Windows\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/WinAuth4.png)


## Ripristino di un'istanza di database di SQL Server e aggiunta a un dominio
<a name="USER_SQLServerWinAuth.Restore"></a>

È possibile ripristinare un'istantanea del DB o eseguire point-in-time il ripristino (PITR) per un'istanza DB di SQL Server e quindi aggiungerla a un dominio. Dopo aver ripristinato l'istanza di database, modificala utilizzando il processo illustrato in [Fase 5: creazione o modifica di un'istanza database SQL Server](USER_SQLServerWinAuth.SettingUp.md#USER_SQLServerWinAuth.SettingUp.CreateModify) per aggiungere l'istanza a un dominio.

# Aggiornamenti del motore di database Microsoft SQL Server
<a name="USER_UpgradeDBInstance.SQLServer"></a>

Quando Amazon RDS supporta una nuova versione di un motore di database, puoi effettuare l'aggiornamento delle istanze database alla nuova versione. Sono disponibili due tipi di aggiornamenti per le istanze database SQL Server: per la versione principale e per la versione secondaria. 

Gli *aggiornamenti di versione principali* possono contenere modifiche al database non compatibili con le versioni precedenti delle applicazioni esistenti. Ne risulta che è necessario eseguire *manualmente* gli aggiornamenti a versioni principali per le proprie istanze database. Puoi avviare manualmente un aggiornamento principale a una versione modificando l'istanza. Tuttavia, prima di eseguire un aggiornamento alla versione principale, è consigliabile testarlo seguendo i passaggi descritti in [Test di un aggiornamento di RDS per SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md). 

*Gli aggiornamenti a versioni secondarie* includono solo modifiche compatibili con le versioni precedenti delle applicazioni esistenti. È possibile aggiornare la versione secondaria dell’istanza database in due modi:
+ *Manualmente*: modifica l’istanza database per avviare l’aggiornamento.
+ *Automaticamente*: abilita gli aggiornamenti automatici a versioni secondarie per l’istanza database in uso.

Quando abiliti gli aggiornamenti automatici a versioni secondarie, RDS per SQL Server aggiorna automaticamente l’istanza database in uso durante le finestre di manutenzione programmata quando sono disponibili aggiornamenti di sicurezza critici in una versione secondaria più recente.

Per le versioni secondarie del motore successive a `16.00.4120.1`, `15.00.4365.2`, `14.00.3465.1` e `13.00.6435.1`, i seguenti protocolli di sicurezza sono disabilitati per impostazione predefinita:
+ `rds.tls10` (protocollo TLS 1.0)
+ `rds.tls11` (protocollo TLS 1.1)
+ `rds.rc4`(RC4 codice)
+ `rds.curve25519` (crittografia Curve25519)
+ `rds.3des168` (crittografia Triple DES)

Per le versioni precedenti del motore, Amazon RDS abilita questi protocolli di sicurezza per impostazione predefinita.

```
...

"ValidUpgradeTarget": [
    {
        "Engine": "sqlserver-se",
        "EngineVersion": "14.00.3281.6.v1",
        "Description": "SQL Server 2017 14.00.3281.6.v1",
        "AutoUpgrade": false,
        "IsMajorVersionUpgrade": false
    }
...
```

Per ulteriori informazioni sull'esecuzione degli aggiornamenti, consulta [Aggiornamento di un'istanza database SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading). Per informazioni sulle versioni di SQL Server disponibili in Amazon RDS, consulta [Amazon RDS per Microsoft SQL Server](CHAP_SQLServer.md).

Amazon RDS supporta anche la politica di implementazione degli aggiornamenti per gestire gli aggiornamenti automatici delle versioni secondarie su più risorse di database e. Account AWS Per ulteriori informazioni, consulta [Utilizzo della politica di implementazione degli AWS Organizations aggiornamenti per gli aggiornamenti automatici delle versioni secondarie](RDS.Maintenance.AMVU.UpgradeRollout.md).

**Topics**
+ [Aggiornamenti a versioni principali per RDS per SQL Server](USER_UpgradeDBInstance.SQLServer.Major.md)
+ [Considerazioni sugli aggiornamenti di SQL Server](USER_UpgradeDBInstance.SQLServer.Considerations.md)
+ [Test di un aggiornamento di RDS per SQL Server](USER_UpgradeDBInstance.SQLServer.UpgradeTesting.md)
+ [Aggiornamento di un'istanza database SQL Server](#USER_UpgradeDBInstance.SQLServer.Upgrading)
+ [Aggiornamento di istanze database obsolete prima del termine del supporto](#USER_UpgradeDBInstance.SQLServer.DeprecatedVersions)

# Aggiornamenti a versioni principali per RDS per SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Major"></a>

Amazon RDS attualmente supporta gli aggiornamenti delle versioni principali seguenti per un'istanza database Microsoft SQL Server.

Puoi ora aggiornare l'istanza database esistente a SQL Server 2017 o 2019 da qualsiasi versione, ad eccezione di SQL Server 2008. Per eseguire l'aggiornamento da SQL Server 2008, prima di tutto aggiorna l'istanza a una delle altre versioni.


****  

| Versione corrente | Versioni supportate per l'aggiornamento | 
| --- | --- | 
|  SQL Server 2019  |  SQL Server 2022  | 
|  SQL Server 2017  |  SQL Server 2022 SQL Server 2019  | 
|  SQL Server 2016  |  SQL Server 2022 SQL Server 2019 SQL Server 2017  | 

Puoi utilizzare una query AWS CLI, ad esempio nell'esempio seguente, per trovare gli aggiornamenti disponibili per una particolare versione del modulo di gestione di database.

**Example**  
Per Linux, macOS o Unix:  

```
aws rds describe-db-engine-versions \
    --engine sqlserver-se \
    --engine-version 14.00.3281.6.v1 \
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" \
    --output table
```
Per Windows:  

```
aws rds describe-db-engine-versions ^
    --engine sqlserver-se ^
    --engine-version 14.00.3281.6.v1 ^
    --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
    --output table
```
L'output mostra che è possibile aggiornare la versione 14.00.3281.6 alle versioni più recente di SQL Server 2017 o 2019.  

```
--------------------------
|DescribeDBEngineVersions|
+------------------------+
|      EngineVersion     |
+------------------------+
|  14.00.3294.2.v1       |
|  14.00.3356.20.v1      |
|  14.00.3381.3.v1       |
|  14.00.3401.7.v1       | 
|  14.00.3421.10.v1      |
|  14.00.3451.2.v1       |
|  15.00.4043.16.v1      |
|  15.00.4073.23.v1      |
|  15.00.4153.1.v1       |
|  15.00.4198.2.v1       |
|  15.00.4236.7.v1       |
+------------------------+
```

## Livello di compatibilità del database
<a name="USER_UpgradeDBInstance.SQLServer.Major.Compatibility"></a>

È possibile utilizzare i livelli di compatibilità del database Microsoft SQL Server per modificare alcuni comportamenti del database in modo da emulare versioni precedenti di SQL Server. Per ulteriori informazioni, consulta [Livello di compatibilità](https://msdn.microsoft.com/en-us/library/bb510680.aspx) nella documentazione Microsoft. Quando aggiorni l'istanza database, tutti i database esistenti rimangono impostati sul livello di compatibilità originale. 

È possibile modificare il livello di compatibilità di un database tramite il comando ALTER DATABASE. Per modificare, ad esempio, un database denominato `customeracct` in modo che sia compatibile con SQL Server 2016, utilizza il comando seguente: 

```
1. ALTER DATABASE customeracct SET COMPATIBILITY_LEVEL = 130
```

# Considerazioni sugli aggiornamenti di SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Considerations"></a>

Durante il processo di aggiornamento, Amazon RDS acquisisce due snapshot DB. Il primo snapshot DB è relativo all’istanza database prima delle modifiche legate all’aggiornamento. Il secondo snapshot DB viene acquisito al termine dell’aggiornamento.

**Nota**  
Amazon RDS acquisisce gli snapshot DB solo se hai impostato il periodo di retention dei backup per l’istanza database su un valore maggiore di 0. Per cambiare il periodo di retention dei backup, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

Al completamento di un aggiornamento, non puoi ripristinare la versione precedente del motore di database. Se desideri tornare alla versione precedente, ripristina dallo snapshot DB acquisito prima dell’aggiornamento per creare una nuova istanza database. 

Durante un aggiornamento di una versione principale o secondaria di SQL Server, per i parametri **Free Storage Space (Spazio di storage libero)** e **Disk Queue Depth (Profondità coda disco)** viene visualizzato `-1`. Al completamento dell’aggiornamento, entrambi i parametri vengono ripristinati al valore normale.

Prima di aggiornare l’istanza SQL Server, esamina le informazioni riportate di seguito.

**Topics**
+ [Best practice prima dell’avvio di un aggiornamento](#USER_UpgradeDBInstance.SQLServer.BestPractices)
+ [Considerazioni sul Multi-AZ](#USER_UpgradeDBInstance.SQLServer.MAZ)
+ [Considerazioni sulle repliche di lettura](#USER_UpgradeDBInstance.SQLServer.readreplica)
+ [Considerazioni su gruppi di opzioni](#USER_UpgradeDBInstance.SQLServer.OGPG.OG)
+ [Considerazioni sui gruppi di parametri](#USER_UpgradeDBInstance.SQLServer.OGPG.PG)

## Best practice prima dell’avvio di un aggiornamento
<a name="USER_UpgradeDBInstance.SQLServer.BestPractices"></a>

Prima di iniziare il processo di aggiornamento, implementa i seguenti passaggi preparatori per consentire prestazioni di aggiornamento ottimali e ridurre al minimo i potenziali problemi:

Gestione delle tempistiche e del carico di lavoro  
+ Pianifica gli aggiornamenti durante i periodi di basso volume di transazioni.
+ Riduci al minimo le operazioni di scrittura durante la finestra di aggiornamento.
Ciò consente ad Amazon RDS di completare gli aggiornamenti più rapidamente riducendo il numero di file di backup dei log delle transazioni che RDS deve ripristinare durante l'associazione. secondary-to-primary

Gestione delle transazioni  
+ Identifica e termina le transazioni di lunga durata.
+ Assicurati che tutte le transazioni critiche vengano eseguite prima di iniziare l’aggiornamento.
+ Evita transazioni di lunga durata durante la finestra di aggiornamento.

Ottimizzazione dei file di log  
Rivedi e ottimizza i file di log delle transazioni:  
+ Riduci i file di log di grandi dimensioni.
+ Riduci i modelli a elevato consumo di log.
+ Gestisci i file di log virtuali (). VLFs
+ Mantieni uno spazio libero adeguato per le normali operazioni.

## Considerazioni sul Multi-AZ
<a name="USER_UpgradeDBInstance.SQLServer.MAZ"></a>

Amazon RDS supporta implementazioni Multi-AZ per istanze DB che eseguono Microsoft SQL Server utilizzando SQL Server Database Mirroring (DBM) o Always On Availability Groups (). AGs Per ulteriori informazioni, consulta [Implementazioni Multi-AZ per Amazon RDS for Microsoft SQL Server](USER_SQLServerMultiAZ.md).

In una distribuzione Multi-AZ (Mirroring/AlwaysOn), quando viene richiesto un aggiornamento, RDS segue una strategia di aggiornamento continuo per le istanze primarie e secondarie. Gli aggiornamenti continui garantiscono che almeno un’istanza sia disponibile per le transazioni mentre l’istanza secondaria viene aggiornata. Si prevede che l’interruzione duri solo per la durata di un failover.

Durante l’aggiornamento, RDS rimuove l’istanza secondaria dalla configurazione Multi-AZ, esegue un aggiornamento dell’istanza secondaria e ripristina tutti i backup dei log delle transazioni dal primario eseguito durante la disconnessione. Dopo il ripristino di tutti i backup dei log, RDS unisce il sistema secondario aggiornato a quello primario. Quando tutti i database sono in uno stato sincronizzato, RDS esegue un failover sull’istanza secondaria aggiornata. Una volta completato il failover, RDS procede con l’aggiornamento della vecchia istanza primaria, ripristina tutti i backup dei log delle transazioni e lo associa alla nuova istanza primaria.

Per ridurre al minimo la durata del failover, si consiglia di utilizzare l'endpoint del listener del gruppo di AlwaysOn AGs disponibilità quando si utilizzano librerie client che supportano l'opzione di connessione nella stringa di connessione. `MultiSubnetFailover` Quando si utilizza l’endpoint listener del gruppo di disponibilità, i tempi di failover sono in genere inferiori a 10 secondi, tuttavia questa durata non include alcun tempo di ripristino aggiuntivo in caso di arresto anomalo.

## Considerazioni sulle repliche di lettura
<a name="USER_UpgradeDBInstance.SQLServer.readreplica"></a>

Durante l’aggiornamento della versione del database, Amazon RDS aggiorna anche tutte le repliche di lettura insieme all’istanza database primaria. Amazon RDS non supporta gli aggiornamenti della versione del database sulle repliche di lettura separatamente. Per ulteriori informazioni sulle repliche di lettura, consultare [Utilizzo di repliche di lettura per Microsoft SQL Server in Amazon RDS](SQLServer.ReadReplicas.md).

Quando aggiorni la versione del database dell’istanza database primaria, tutte le relative repliche di lettura vengono aggiornate automaticamente. Amazon RDS aggiornerà tutte le repliche di lettura contemporaneamente prima di aggiornare l’istanza database di origine. Le repliche di lettura potrebbero non essere disponibili fino al completamento dell’aggiornamento della versione del database sull’istanza DB primaria.

## Considerazioni su gruppi di opzioni
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.OG"></a>

Se l’istanza database utilizza un gruppo DB di opzioni personalizzato, in alcuni casi Amazon RDS non può assegnare automaticamente all’istanza database un nuovo gruppo di opzioni. Ad esempio, quando esegui l’aggiornamento a una nuova versione principale, devi specificare un nuovo gruppo di opzioni. Ti consigliamo di creare un nuovo gruppo di opzioni e di aggiungere le stesse opzioni presenti nel gruppo di opzioni personalizzato esistente.

Per ulteriori informazioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) o [Copia di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy).

## Considerazioni sui gruppi di parametri
<a name="USER_UpgradeDBInstance.SQLServer.OGPG.PG"></a>

Se l’istanza database utilizza un gruppo di parametri del database personalizzato:
+ Amazon RDS riavvia automaticamente l’istanza database dopo un aggiornamento.
+ In alcuni casi, RDS non è in grado di assegnare automaticamente un nuovo gruppo di parametri all’istanza database.

  Ad esempio, quando esegui l’aggiornamento a una nuova versione principale, devi specificare un nuovo gruppo di parametri. Ti consigliamo di creare un nuovo gruppo di parametri e di configurare i parametri in modo analogo al gruppo di parametri personalizzato esistente.

Per ulteriori informazioni, consulta [Creazione di un gruppo di parametri database in Amazon RDS](USER_WorkingWithParamGroups.Creating.md) o [Copia di un gruppo di parametri database in Amazon RDS](USER_WorkingWithParamGroups.Copying.md).

# Test di un aggiornamento di RDS per SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.UpgradeTesting"></a>

Prima di eseguire l'aggiornamento di una versione principale nell'istanza database, testa a fondo il database e tutte le applicazioni che accedono a esso per verificarne la compatibilità con la nuova versione. È consigliabile utilizzare la procedura seguente.

**Per testare un aggiornamento di una versione principale**

1. Esaminare [Upgrade del Server SQL](https://docs.microsoft.com/en-us/sql/database-engine/install-windows/upgrade-sql-server) nella documentazione Microsoft per la nuova versione del motore di database per verificare se vi sono problemi di compatibilità che potrebbero interessare il database o le applicazioni:

1. Se l'istanza database utilizza un gruppo di opzioni personalizzato, creare un nuovo gruppo di opzioni compatibile con la nuova versione a cui si sta eseguendo l'aggiornamento. Per ulteriori informazioni, consulta [Considerazioni su gruppi di opzioni](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.OG).

1. Se l'istanza database utilizza un gruppo di parametri personalizzato, creare un nuovo gruppo di parametri compatibile con la nuova versione a cui si sta eseguendo l'aggiornamento. Per ulteriori informazioni, consulta [Considerazioni sui gruppi di parametri](USER_UpgradeDBInstance.SQLServer.Considerations.md#USER_UpgradeDBInstance.SQLServer.OGPG.PG).

1. Creare uno snapshot DB dell'istanza database da aggiornare. Per ulteriori informazioni, consulta [Creazione di uno snapshot del database per un’istanza database Single-AZ per Amazon RDS](USER_CreateSnapshot.md).

1. Ripristinare lo snapshot DB per creare una nuova istanza database di test. Per ulteriori informazioni, consulta [Ripristino in un’istanza database](USER_RestoreFromSnapshot.md).

1. Modificare la nuova istanza database di test per aggiornarla alla nuova versione, utilizzando uno dei metodi seguenti:
   + [Console](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.Console)
   + [AWS CLI](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.CLI)
   + [API RDS](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.API)

1. Valutare lo storage utilizzato dall'istanza aggiornata per determinare se l'aggiornamento richiede storage aggiuntivo. 

1. Eseguire quanti più test di controllo qualità possibili per l'istanza database aggiornata come necessario per assicurare che il database e l'applicazione funzionino correttamente con la nuova versione. Implementare qualsiasi nuovo test necessario per valutare l'impatto dei problemi di compatibilità identificati nella fase 1. Testare tutte le stored procedure e le funzioni. Indirizzare le versioni di test delle applicazioni all'istanza database aggiornata. 

1. Se tutti i test vengono superati, eseguire l'aggiornamento nell'istanza database di produzione. È consigliabile non permettere le operazioni di scrittura nell'istanza database fino a quando non si è certi che tutto funzioni correttamente. 

## Aggiornamento di un'istanza database SQL Server
<a name="USER_UpgradeDBInstance.SQLServer.Upgrading"></a>

Per informazioni sull'aggiornamento manuale o automatico di un'istanza database di SQL Server, consulta quanto segue:
+ [Aggiornamento della versione del motore di di un'istanza database](USER_UpgradeDBInstance.Upgrading.md)
+ [Best practice per l'aggiornamento di SQL Server 2008 R2 a SQL Server 2016 su Amazon RDS for SQL Server](https://aws.amazon.com/blogs/database/best-practices-for-upgrading-sql-server-2008-r2-to-sql-server-2016-on-amazon-rds-for-sql-server/)

**Importante**  
Se disponi di istantanee crittografate utilizzando AWS KMS, ti consigliamo di avviare un aggiornamento prima della fine del supporto. 

## Aggiornamento di istanze database obsolete prima del termine del supporto
<a name="USER_UpgradeDBInstance.SQLServer.DeprecatedVersions"></a>

Quando una versione principale diventa obsoleta, non puoi installarla su nuove istanze database. RDS proverà ad aggiornare automaticamente tutte le istanze database esistenti. 

Se devi ripristinare un'istanza DB obsoleta, puoi eseguire il point-in-time ripristino (PITR) o ripristinare un'istantanea. In questo modo avrai temporaneamente accesso a un'istanza database che utilizza la versione diventata obsoleta. Tuttavia, quando una versione principale diventa totalmente obsoleta, anche queste istanze database saranno automaticamente aggiornate a una versione supportata. 

# Utilizzo dello storage in RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseStorage"></a>

Con RDS per SQL Server, puoi allegare fino a tre volumi aggiuntivi all'istanza di RDS per SQL Server, ciascuno mappato su una lettera di unità Windows univoca. Ciò consente di distribuire i file di database su più volumi oltre all'unità predefinita. `D:` Quando si aggiunge un volume di archiviazione, si ottiene una maggiore flessibilità per la gestione dei file di database e l'ottimizzazione dello storage.

I vantaggi includono:
+ **Distribuzione flessibile dei file**: distribuisci i file di dati del database e i file di registro su più volumi per migliorare le prestazioni di I/O.
+ **Ottimizzazione dello storage**: utilizza diversi tipi e configurazioni di storage per diversi requisiti di carico di lavoro.
+ **Scalabilità**: aggiungi capacità di archiviazione senza modificare i volumi esistenti.

**Topics**
+ [Considerazioni sull'utilizzo di volumi di archiviazione aggiuntivi con RDS per SQL Server](#SQLServer.ASV.Considerations)
+ [Aggiungi, rimuovi o modifica i volumi di archiviazione con RDS per SQL Server](#SQLServer.ASV.Management)
+ [Operazioni di ripristino per volumi di archiviazione aggiuntivi con RDS per SQL Server](#SQLServer.ASV.Restore)
+ [Casi d'uso per volumi di archiviazione aggiuntivi con RDS per SQL Server](#SQLServer.ASV.UseCases)

## Considerazioni sull'utilizzo di volumi di archiviazione aggiuntivi con RDS per SQL Server
<a name="SQLServer.ASV.Considerations"></a>

Prendi nota delle seguenti funzionalità e limitazioni quando utilizzi volumi di archiviazione aggiuntivi con RDS per SQL Server:
+ È possibile aggiungere volumi di archiviazione solo su SQL Server Standard Edition (SE), Enterprise Edition (EE) e Developer Edition (DEV-EE).
+ È possibile aggiungere fino a 3 volumi di storage aggiuntivi per istanza.
+ I nomi dei volumi vengono mappati automaticamente alle lettere delle unità Windows nel modo seguente:
  + `rdsdbdata2`— unità `H:`
  + `rdsdbdata3`— `I:` guidare
  + `rdsdbdata4`— `J:` guidare
+ I file temPDB continuano a utilizzare l'unità quando NVMe si utilizza `T:` l'archiviazione delle istanze. I file di SQL Server Audit e i file Microsoft Business Intelligence (MSBI) rimangono sull'`D:`unità.
+ È possibile aggiungere solo tipi di storage General Purpose SSD (gp3) e Provisioned IOPS SSD (io2).
+ La dimensione minima di archiviazione dei volumi di archiviazione aggiuntivi è uguale al limite impostato per l'unità predefinita. `D:` La dimensione massima di storage per l'istanza DB è di 256 TiB totali su tutti i volumi.
+ L'aggiunta di volumi di storage alle istanze con repliche di lettura o alla lettura di istanze di replica non è supportata.
+ L'aggiunta di volumi di storage alle istanze abilitate per il backup automatico tra regioni non è supportata.
+ La configurazione di volumi di archiviazione aggiuntivi per la scalabilità automatica dello storage non è supportata.
+ Lo spostamento di file tra volumi dopo la creazione non è supportato.
+ Non puoi eliminare il `D:` volume, ma puoi eliminare altri volumi di archiviazione purché siano vuoti.
+ La modifica delle dimensioni dei volumi esistenti durante il ripristino o point-in-time il ripristino delle istantanee (PITR) non è supportata. Tuttavia, è possibile aggiungere nuovi volumi di storage durante le operazioni di ripristino.

## Aggiungi, rimuovi o modifica i volumi di archiviazione con RDS per SQL Server
<a name="SQLServer.ASV.Management"></a>

È possibile aggiungere, modificare e rimuovere volumi di archiviazione aggiuntivi utilizzando AWS CLI o Console di gestione AWS. Tutte le operazioni utilizzano l'operazione `modify-db-instance` API con il `additional-storage-volumes` parametro.

**Importante**  
L'aggiunta o la rimozione di volumi di archiviazione aggiuntivi crea un'azione di backup in sospeso e una finestra di blackout di point-in-time ripristino. Questa finestra si chiude al termine del flusso di lavoro di backup.

**Topics**
+ [Aggiungere volumi di archiviazione](#SQLServer.ASV.Adding)
+ [Scalabilità di volumi di storage aggiuntivi](#SQLServer.ASV.Scaling)
+ [Rimozione di volumi di archiviazione aggiuntivi](#SQLServer.ASV.Removing)

### Aggiungere volumi di archiviazione
<a name="SQLServer.ASV.Adding"></a>

È possibile aggiungere fino a tre volumi di archiviazione oltre all'`D:`unità predefinita. Per aggiungere un nuovo volume di archiviazione all'istanza di RDS per SQL Server, usa il `modify-db-instance` comando con il `additional-storage-volumes` parametro.

L'esempio seguente aggiunge un nuovo volume General Purpose SSD (gp3) da 4.000 GiB denominato. `rdsdbdata4`

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":4000}]' \
  --apply-immediately
```

### Scalabilità di volumi di storage aggiuntivi
<a name="SQLServer.ASV.Scaling"></a>

È possibile modificare qualsiasi impostazione di archiviazione per i volumi aggiuntivi ad eccezione delle dimensioni di archiviazione. L'esempio seguente modifica l'impostazione IOPS per il `rdsdbdata2` volume.

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":4000}]' \
  --apply-immediately
```

### Rimozione di volumi di archiviazione aggiuntivi
<a name="SQLServer.ASV.Removing"></a>

Non puoi eliminare il `D:` volume, ma puoi eliminare altri volumi di archiviazione quando sono vuoti.

**avvertimento**  
Prima di rimuovere un volume di archiviazione aggiuntivo, assicurati che nessun file di database sia archiviato nel volume.

L'esempio seguente rimuove il `rdsdbdata4` volume.

```
aws rds modify-db-instance \
  --db-instance-identifier my-sql-server-instance \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","SetForDelete":true}]' \
  --apply-immediately
```

## Operazioni di ripristino per volumi di archiviazione aggiuntivi con RDS per SQL Server
<a name="SQLServer.ASV.Restore"></a>

Quando ripristini il database, puoi aggiungere volumi di archiviazione. È inoltre possibile modificare le impostazioni di archiviazione dei volumi esistenti.

**Topics**
+ [Ripristino da snapshot](#SQLServer.ASV.SnapshotRestore)
+ [Point-in-time ripristino](#SQLServer.ASV.PITR)
+ [Ripristino nativo del database](#SQLServer.ASV.NativeRestore)

### Ripristino da snapshot
<a name="SQLServer.ASV.SnapshotRestore"></a>

Quando si esegue il ripristino da un'istantanea, è possibile aggiungere nuovi volumi di storage aggiuntivi o modificare le impostazioni di IOPS, velocità effettiva e tipo di archiviazione dei volumi esistenti.

L'esempio seguente ripristina un'istanza DB da un'istantanea e modifica l'impostazione IOPS per il volume: `rdsdbdata2`

```
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-restored-instance \
  --db-snapshot-identifier my-snapshot \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":5000}]'
```

### Point-in-time ripristino
<a name="SQLServer.ASV.PITR"></a>

Durante il point-in-time ripristino (PITR), è possibile aggiungere nuovi volumi di archiviazione aggiuntivi con configurazioni personalizzate.

L'esempio seguente esegue PITR e aggiunge un nuovo volume SSD General Purpose (gp3) da 5.000 GiB:

```
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier my-source-instance \
  --target-db-instance my-pitr-instance \
  --use-latest-restorable-time \
  --region us-east-1 \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":5000,"IOPS":5000,"StorageThroughput":200}]'
```

### Ripristino nativo del database
<a name="SQLServer.ASV.NativeRestore"></a>

È possibile utilizzare la `rds_restore_database` stored procedure per ripristinare i database su specifici volumi di archiviazione aggiuntivi. Due nuovi parametri supportano la selezione del volume:

**`data_file_volume`**  
Speciifica la lettera di unità per i file di dati del database

**`log_file_volume`**  
Speciifica la lettera di unità per i file di registro del database

L'esempio seguente ripristina un database con file di dati sull'`H:`unità e file di registro sull'`I:`unità:

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak',
    @data_file_volume='H:',
    @log_file_volume='I:';
```

Se non si specificano i parametri di volume o se si specifica l'`D:`unità per entrambi i parametri, i file del database vengono ripristinati nell'`D:`unità predefinita:

```
EXEC msdb.dbo.rds_restore_database    
    @restore_db_name='my_database',
    @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak';
```

## Casi d'uso per volumi di archiviazione aggiuntivi con RDS per SQL Server
<a name="SQLServer.ASV.UseCases"></a>

I volumi di storage aggiuntivi supportano vari scenari di gestione dei database. Le sezioni seguenti descrivono i casi d'uso e gli approcci di implementazione più comuni.

**Topics**
+ [Creazione di database su volumi di archiviazione aggiuntivi](#SQLServer.ASV.NewDatabase)
+ [Estensione della capacità di archiviazione](#SQLServer.ASV.ExtendStorage)
+ [Spostamento dei database tra i volumi](#SQLServer.ASV.MoveDatabase)
+ [Archiviazione dei dati in uno storage conveniente](#SQLServer.ASV.ArchiveData)

### Creazione di database su volumi di archiviazione aggiuntivi
<a name="SQLServer.ASV.NewDatabase"></a>

È possibile creare nuovi database direttamente su volumi di archiviazione aggiuntivi utilizzando istruzioni `CREATE DATABASE` SQL Server standard.

L'esempio seguente crea un database con file di dati sull'`H:`unità e file di registro sull'`I:`unità:

```
CREATE DATABASE MyDatabase
ON (
    NAME = 'MyDatabase_Data',
    FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data.mdf',
    SIZE = 100MB,
    FILEGROWTH = 10MB
)
LOG ON (
    NAME = 'MyDatabase_Log',
    FILENAME = 'I:\rdsdbdata\data\MyDatabase_Log.ldf',
    SIZE = 10MB,
    FILEGROWTH = 10%
);
```

### Estensione della capacità di archiviazione
<a name="SQLServer.ASV.ExtendStorage"></a>

Quando l'`D:`unità predefinita raggiunge la capacità massima, è possibile aggiungere volumi di storage aggiuntivi, scalare i volumi esistenti e creare nuovi file di dati o file di registro sui nuovi volumi.

**Per estendere la capacità di archiviazione**

1. Aggiungi un volume di archiviazione all'istanza utilizzando il `modify-db-instance` comando.

1. Aggiungi un nuovo file di dati al volume di archiviazione aggiuntivo:

   ```
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'MyDatabase_Data2',
       FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data2.ndf',
       SIZE = 500MB,
       FILEGROWTH = 50MB
   );
   ```

### Spostamento dei database tra i volumi
<a name="SQLServer.ASV.MoveDatabase"></a>

Per spostare un database su un volume diverso, utilizzate l'approccio di backup e ripristino con le procedure `rds_backup_database` e `rds_restore_database` memorizzate. Per ulteriori informazioni, consulta [Uso di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Using.md).

**Per spostare un database in un volume diverso**

1. Esegui il backup del database utilizzando`rds_backup_database`:

   ```
   EXEC msdb.dbo.rds_backup_database 
       @source_db_name='MyDatabase',
       @s3_arn_to_backup_to='arn:aws:s3:::my-bucket/database-backup.bak';
   ```

1. Ripristina il database sul volume di destinazione:

   ```
   EXEC msdb.dbo.rds_restore_database    
       @restore_db_name='MyDatabase_New',
       @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/database-backup.bak',
       @data_file_volume='H:',
       @log_file_volume='I:';
   ```

1. Elimina il database dalla vecchia unità per liberare spazio. Per ulteriori informazioni, consulta [Eliminazione di un database in un’istanza database Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md).

### Archiviazione dei dati in uno storage conveniente
<a name="SQLServer.ASV.ArchiveData"></a>

Per le tabelle partizionate, è possibile archiviare i dati più vecchi in volumi di storage aggiuntivi con caratteristiche prestazionali diverse.

**Per archiviare i dati partizionati**

1. Aggiungi un volume di archiviazione con tipo e capacità di archiviazione appropriati.

1. Crea un nuovo filegroup sul volume di archiviazione aggiuntivo:

   ```
   ALTER DATABASE MyDatabase
   ADD FILEGROUP ArchiveFileGroup;
   
   ALTER DATABASE MyDatabase
   ADD FILE (
       NAME = 'Archive_Data',
       FILENAME = 'H:\rdsdbdata\data\Archive_Data.ndf',
       SIZE = 1GB,
       FILEGROWTH = 100MB
   ) TO FILEGROUP ArchiveFileGroup;
   ```

1. Sposta le partizioni nel nuovo filegroup utilizzando i comandi di gestione delle partizioni di SQL Server.

# Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi
<a name="SQLServer.Procedural.Importing"></a>

Amazon RDS supporta il backup nativo e il ripristino dei database Microsoft SQL Server tramite file di backup completi (file .bak). Quanto utilizzi RDS, puoi accedere ai file archiviati in Amazon S3 invece di utilizzare il file system locale sul server del database.

Ad esempio, puoi creare un backup completo dal server locale, archiviarlo in S3 e quindi ripristinarlo in un'istanza database Amazon RDS esistente. Puoi anche eseguire i backup da RDS, archiviarli in S3 e quindi ripristinarli quando lo desideri.

Il backup e il ripristino nativi sono disponibili in tutte le AWS regioni per le istanze DB Single-AZ e Multi-AZ, incluse le istanze DB Multi-AZ con repliche di lettura. Backup e ripristino nativi sono disponibili per tutte le edizioni di Microsoft SQL Server supportate su Amazon RDS.

Il seguente schema mostra gli scenari supportati.

![\[Architettura di backup e ripristino nativi\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQL-bak-file.png)


L'utilizzo di file .bak nativi per effettuare il backup e il ripristino di database è in genere il modo più veloce per compiere queste operazioni. Vi sono molteplici vantaggi aggiuntivi con l'utilizzo di backup e ripristino nativi. Ad esempio, puoi eseguire le operazioni seguenti:
+ Migrare i database a o da Amazon RDS.
+ Spostare i database tra le istanze database RDS for SQL Server.
+ Migrare dati, schemi, procedure archiviate, trigger e altri codici di database in file .bak.
+ Eseguire backup e ripristino di singoli database invece che di intere istanze database.
+ Creare copie di database per sviluppo, attività di test, formazione e dimostrazioni.
+ Archiviare e trasferire i file di backup con Amazon S3, per un ulteriore livello di protezione per il disaster recovery.
+ Creare backup nativi di database con Transparent Data Encryption (TDE) attivato e ripristinare tali backup nei database on-premise. Per ulteriori informazioni, consulta [Supporto per Transparent Data Encryption in SQL Server](Appendix.SQLServer.Options.TDE.md).
+ Ripristinare i backup nativi dei database on-premise con TDE attivato in istanze database di RDS per SQL Server. Per ulteriori informazioni, consulta [Supporto per Transparent Data Encryption in SQL Server](Appendix.SQLServer.Options.TDE.md).

**Contents**
+ [Limitazioni e consigli](#SQLServer.Procedural.Importing.Native.Limitations)
+ [Configurazione di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md)
  + [Creazione manuale di un ruolo IAM per backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
+ [Uso di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Using.md)
  + [Backup di un database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Syntax)
    + [Esempi](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Backup.Examples)
  + [Ripristino di un database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Syntax)
    + [Esempi](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Examples)
  + [Ripristino di un log](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Syntax)
    + [Esempi](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Restore.Log.Examples)
  + [Completamento di un ripristino del database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax)
  + [Utilizzo di database parzialmente ripristinati](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Partially.Restored)
    + [Rimozione di un database parzialmente ripristinato](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Drop.Partially.Restored)
    + [Comportamento di ripristino e point-in-time ripristino delle istantanee per database parzialmente ripristinati](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Snapshot.Restore)
  + [Annullamento di un'attività](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Cancel)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Cancel.Syntax)
  + [Monitoraggio dello stato delle attività](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking)
    + [Utilizzo](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Syntax)
    + [Esempi](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Examples)
    + [Risposta](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Tracking.Response)
+ [Compressione dei file di backup](SQLServer.Procedural.Importing.Native.Compression.md)
+ [Risoluzione dei problemi](SQLServer.Procedural.Importing.Native.Troubleshooting.md)
+ [Importazione ed esportazione di dati SQL Server mediante altri metodi](SQLServer.Procedural.Importing.Snapshots.md)
  + [Importazione di dati in Amazon RDS per SQL Server utilizzando uno snapshot](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Importing.Procedure)
    + [Importazione dei dati](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.Import)
      + [Procedura guidata Genera e pubblica script](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ScriptWizard)
      + [Importazione/Esportazione guidata](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.ImportExportWizard)
      + [Copia bulk](SQLServer.Procedural.Importing.Snapshots.md#ImportData.SQLServer.MgmtStudio.BulkCopy)
  + [Esportazione di dati da Amazon RDS per SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting)
    + [Importazione/Esportazione guidata di SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSIEW)
    + [Procedura guidata Genera e pubblica script e utilità bcp di SQL Server](SQLServer.Procedural.Importing.Snapshots.md#SQLServer.Procedural.Exporting.SSGPSW)
+ [Utilizzo dell’utilità BCP di Linux per importare ed esportare dati](SQLServer.Procedural.Importing.BCP.Linux.md)
  + [Prerequisiti](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Prerequisites)
  + [Installazione degli strumenti a riga di comando di SQL Server su Linux](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Installing)
  + [Esportazione di dati da Amazon RDS per SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting)
    + [Sintassi di base per l’esportazione](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic)
    + [Esempio di esportazione](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example)
  + [Importazione di dati in RDS per SQL Server](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing)
    + [Sintassi di base per l’importazione](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic)
    + [Esempio di importazione](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Importing.Example)
  + [Opzioni di BCP comuni](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Options)
  + [Best practice e considerazioni](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.BestPractices)
  + [Risoluzione dei problemi comuni](SQLServer.Procedural.Importing.BCP.Linux.md#SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting)

## Limitazioni e consigli
<a name="SQLServer.Procedural.Importing.Native.Limitations"></a>

Le limitazioni all'utilizzo di backup e ripristino nativi sono le seguenti: 
+ Non puoi eseguire il backup o il ripristino da un bucket Amazon S3 in una AWS regione diversa dalla tua istanza database Amazon RDS.
+ Non è possibile ripristinare un database se esiste già un database con lo stesso nome. I nomi dei database sono univoci.
+ Consigliamo vivamente di non ripristinare backup da un fuso orario in un fuso orario diverso. Se ripristini backup da un fuso orario in un fuso orario diverso, devi controllare le query e le applicazioni per verificare gli effetti del cambiamento di fuso orario.
+ RDS per Microsoft SQL Server ha un limite di dimensione di 5 TB per file. Per i backup nativi di database di grandi dimensioni, è possibile utilizzare il backup con più file.
+ La dimensione massima del database di cui è possibile eseguire il backup su S3 dipende dalla memoria, dalla CPU, dall'I/O e dalle risorse di rete disponibili nell'istanza del DB. Più grande è il database, maggiore è la quantità di memoria utilizzata dall'agente di backup.
+ Non puoi eseguire il backup o il ripristino da più di 10 file di backup alla volta.
+ Il backup differenziale si basa sull'ultimo backup completo. Per completare i backup differenziali non puoi effettuare una snapshot tra l'ultimo backup completo e il backup differenziale. Se si desidera effettuare un backup differenziale, ma esiste uno snapshot, effettua un altro backup completo prima di procedere con il backup differenziale.
+ I ripristini differenziali e di log non sono supportati per i database con file in cui il relativo file\$1guid (identificatore univoco) è impostato su `NULL`.
+ Puoi eseguire fino a due attività di backup o ripristino contemporaneamente.
+ Non è possibile eseguire backup dei log nativi da SQL Server Amazon RDS.
+ RDS supporta ripristini nativi di database fino a 64 TiB. I ripristini nativi di database su SQL Server Express Edition sono limitati a 10 GB.
+ Non puoi effettuare un backup nativo durante la finestra di manutenzione o quando Amazon RDS è impegnato ad acquisire uno snapshot del database. Se un'attività di backup nativa si sovrappone alla finestra di backup giornaliero di Servizi RDS, l'attività di backup nativa viene annullata.
+ Nelle istanze database Multi-AZ è possibile ripristinare in modo nativo solo i database con backup nel modello di ripristino "Full" (Completo).
+ Non è supportata la chiamata delle procedure RDS per backup e ripristino nativi in una transazione.
+ Utilizza una crittografia AWS KMS key simmetrica per crittografare i backup. Amazon RDS non supporta le chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Creazione di chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.
+ I file di backup nativi sono crittografati con la chiave KMS specifica utilizzando la modalità di crittografia "Solo crittografia". Quando vengono ripristinati i file di backup crittografati, tieni presente che sono crittografati con modalità di crittografia "Solo crittografia".
+ Non è possibile ripristinare un database che contiene un gruppo di file FILESTREAM.
+ La crittografia lato server di Amazon S3 con AWS KMS (SSE-KMS) è supportata tramite la configurazione di crittografia predefinita del bucket S3 quando si passa alla procedura di backup storage. `@enable_bucket_default_encryption=1` Per impostazione predefinita, il ripristino supporta la crittografia lato server dell'oggetto S3.

  Quando fornisci una chiave KMS a una procedura archiviata, tutti i backup e i ripristini nativi vengono crittografati e decrittografati sul lato client con la chiave KMS. AWS archivia i backup nel bucket S3 con SSE-S3 quando o con la chiave di crittografia predefinita configurata del bucket S3 quando. `@enable_bucket_default_encryption=0` `@enable_bucket_default_encryption=1`
+ Quando si utilizzano punti di accesso S3, il punto di accesso non può essere configurato per utilizzare un VPC interno RDS.
+ Per le massime prestazioni, consigliamo di utilizzare bucket di directory o punti di accesso per i bucket di directory, se disponibili nella propria regione.

Ti consigliamo di utilizzare backup e ripristino nativi per migrare il tuo database in RDS se il database può essere offline quando il file di backup viene creato, copiato e ripristinato. Se il database locale non può essere offline, ti consigliamo di utilizzare il AWS Database Migration Service per migrare il database su Amazon RDS. [Per ulteriori informazioni, consulta Cos'è? AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

Backup e ripristino nativi non hanno lo scopo di sostituire le funzionalità di ripristino dei dati della funzione di copia di snapshot tra regioni. Ti consigliamo di utilizzare la copia istantanea per copiare lo snapshot del database in un'altra AWS regione per il disaster recovery tra regioni in Amazon RDS. Per ulteriori informazioni, consulta [Copia di uno snapshot del database per Amazon RDS](USER_CopySnapshot.md).

# Configurazione di backup e ripristino nativi
<a name="SQLServer.Procedural.Importing.Native.Enabling"></a>

Per configurare backup e ripristino nativi, sono necessari tre componenti:

1. Un bucket Amazon S3 per archiviare i file di backup.

   Devi disporre di un bucket S3 per utilizzare i file di backup e quindi caricare i backup che desideri migrare su RDS. Se disponi già di un bucket Amazon S3, puoi utilizzarlo. Se non hai già un bucket, puoi [ crearne uno nuovo](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). In alternativa, puoi scegliere che venga creato automaticamente un nuovo bucket quando aggiungi l'opzione `SQLSERVER_BACKUP_RESTORE` usando la Console di gestione AWS.

   Per ulteriori informazioni, consulta la [Guida per l'utente di Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Un ruolo AWS Identity and Access Management (IAM) per accedere al bucket.

   Se disponi già di un ruolo IAM, puoi utilizzarlo. In alternativa, puoi scegliere che venga creato automaticamente un nuovo ruolo IAM quando aggiungi l'opzione `SQLSERVER_BACKUP_RESTORE` usando la Console di gestione AWS. In alternativa, è possibile crearne uno nuovo manualmente.

   Se vuoi creare un nuovo ruolo IAM manualmente, segui l'approccio illustrato nella sezione successiva. Eseguire la stessa operazione se si desidera associare le relazioni di trust e i criteri di autorizzazione a un ruolo IAM esistente.

1. L'opzione `SQLSERVER_BACKUP_RESTORE` aggiunta a un gruppo di opzioni nella tua istanza database.

   Per abilitare backup e ripristino nativi sulla tua istanza database, devi aggiungere l'opzione `SQLSERVER_BACKUP_RESTORE` a un gruppo di opzioni sulla tua istanza database. Per ulteriori informazioni e istruzioni, consulta [Supporto per backup nativo e ripristino in SQL Server](Appendix.SQLServer.Options.BackupRestore.md).

## Creazione manuale di un ruolo IAM per backup e ripristino nativi
<a name="SQLServer.Procedural.Importing.Native.Enabling.IAM"></a>

Se lo desideri, puoi creare manualmente un nuovo ruolo IAM da utilizzare con il backup e il ripristino nativi. In tal caso, crea un ruolo da cui delegare le autorizzazioni del servizio Amazon RDS al bucket Amazon S3. Quando si crea un ruolo IAM, si allegano una relazione di trust e un criterio di autorizzazioni. La policy di attendibilità consente a Servizi RDS di assumere questo ruolo. La policy di autorizzazione definisce le operazioni che questo ruolo può eseguire. Per ulteriori informazioni sulla creazione del ruolo, consulta la pagina [Creazione di un ruolo per delegare le autorizzazioni a un servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Per la funzione di backup e ripristino nativi, utilizza le policy di attendibilità e autorizzazione simili agli esempi presenti in questa sezione. Nell'esempio che segue utilizziamo il nome del servizio `rds.amazonaws.com` come alias per tutti gli account di servizio. Negli altri esempi specifichiamo un Amazon Resource Name (ARN) per identificare un altro account, un altro utente o un altro ruolo al quale concediamo l'accesso nella policy di attendibilità.

Si consiglia di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Puoi usare le chiavi di contesto delle condizioni globali e avere il valore `aws:SourceArn` che contiene l'ID dell'account. In questo caso, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione.
+ Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa.
+ Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

Nella relazione di attendibilità, assicurati di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'ARN completo delle risorse che accedono al ruolo. Per il backup e il ripristino nativi, assicurati di includere sia il gruppo di opzioni database che le istanze database, come illustrato nell'esempio seguente.

**Example di relazione di attendibilità con chiave di contesto delle condizioni globali per backup e ripristino nativi**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:0123456789:db:db_instance_identifier",
                        "arn:aws:rds:Region:0123456789:og:option_group_name"
                    ],
                    "aws:SourceAccount": "0123456789"
                }
            }
        }
    ]
}
```

Nell'esempio che segue viene utilizzato un ARN per specificare la risorsa. Per ulteriori informazioni sull'utilizzoARNs, consulta [Amazon resource names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example di policy di autorizzazione per backup e ripristino nativi senza supporto della crittografia**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

**Example Policy di autorizzazione per backup e ripristino nativi con supporto della crittografia**  
Se desideri crittografare i tuoi file di backup, includi una chiave di crittografia nella policy di autorizzazione. Per ulteriori informazioni sulle chiavi di crittografia, consulta [Nozioni di base](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) nella *Guida per gli sviluppatori di AWS Key Management Service *.  
Per crittografare i backup è necessario utilizzare una chiave KMS di crittografia simmetrica. Amazon RDS non supporta le chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Creazione di chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.  
Il ruolo IAM deve inoltre essere un utente chiave e un amministratore chiave per la chiave KMS, ovvero deve essere specificato nel criterio chiave. Per ulteriori informazioni, consulta [Creazione di chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToKey",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey",
        "kms:Encrypt",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
    },
    {
      "Sid": "AllowAccessToS3",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
    },
    {
      "Sid": "GetS3Info",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAttributes",
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

**Example politica di autorizzazioni per il backup e il ripristino nativi utilizzando punti di accesso senza supporto per la crittografia**  
Le azioni richieste per utilizzare i punti di accesso S3 sono le stesse dei bucket S3. Il percorso della risorsa viene aggiornato in modo che corrisponda al pattern ARN del punto di accesso S3.  
I punti di accesso devono essere configurati per utilizzare **Network origin: Internet** as RDS does not public private. VPCs Il traffico S3 proveniente dalle istanze RDS non passa attraverso la rete Internet pubblica poiché passa attraverso la rete privata. VPCs  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
                ],
            "Resource": [
            "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap",
            "arn:aws:s3:::underlying-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAttributes",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
                ],
                "Resource": [
                "arn:aws:s3:us-east-1:111122223333:accesspoint/amzn-s3-demo-ap/*",
                    "arn:aws:s3:::underlying-bucket/*"
                    ]
                }
            ]   
}
```

**Example politica di autorizzazioni per il backup e il ripristino nativi utilizzando punti di accesso per i bucket di directory senza supporto per la crittografia**  
I bucket di directory utilizzano un [meccanismo di autorizzazione diverso, basato sulla sessione](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-authenticating-authorizing.html), rispetto ai bucket generici, pertanto l'unica autorizzazione richiesta per il ripristino del backup nativo è l'autorizzazione «s3express:» a livello di bucket. CreateSession [Per configurare l'accesso a livello di oggetto, è necessario utilizzare i punti di accesso per i bucket di directory.](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-points-directory-buckets-policies.html)  
I punti di accesso devono essere configurati per utilizzare **Network Origin: Internet** as RDS does not publishing private. VPCs Il traffico S3 proveniente dalle istanze RDS non passa attraverso la rete Internet pubblica poiché passa attraverso la rete privata. VPCs  
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
        "Effect": "Allow",
        "Action": "s3express:CreateSession",
        "Resource": 
            [
                "arn:aws:s3express:us-east-1:111122223333:accesspoint/amzn-s3-demo-accesspoint--use1-az6--xa-s3",
                "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--use1-az6--x-s3"
            ]
        }
    ]
}
```

# Uso di backup e ripristino nativi
<a name="SQLServer.Procedural.Importing.Native.Using"></a>

Dopo aver abilitato e configurato backup e ripristino nativi, puoi iniziare a utilizzarli. Per farlo, devi innanzitutto connetterti al database Microsoft SQL Server e poi chiamare una stored procedure Amazon RDS per eseguire il lavoro. Per istruzioni sulla connessione al tuo database, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

Alcune delle stored procedure richiedono di fornire un Amazon Resource Name (ARN) al tuo file e bucket Amazon S3. Il formato per l'ARN è `arn:aws:s3:::bucket_name/file_name.extension`. Amazon S3 non richiede un numero di account o una AWS regione in. ARNs

Se fornisci anche una chiave KMS opzionale, il formato per l'ARN della chiave è `arn:aws:kms:region:account-id:key/key-id`. Per ulteriori informazioni, consulta [Amazon resource names (ARNs) e AWS service namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). Per crittografare i backup è necessario utilizzare una chiave KMS di crittografia simmetrica. Amazon RDS non supporta le chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Creazione di chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.

**Nota**  
Indipendentemente dal fatto che utilizzi o meno una chiave KMS, le attività di backup e ripristino native abilitano la crittografia Advanced Encryption Standard (AES) a 256 bit sul lato server tramite SSE-S3 per impostazione predefinita per i file caricati su S3. Il passaggio `@enable_bucket_default_encryption=1` alla procedura di backup storage utilizza la chiave di crittografia predefinita configurata del bucket S3.

Per istruzioni su come chiamare ciascuna stored procedure, consulta i seguenti argomenti:
+ [Backup di un database](#SQLServer.Procedural.Importing.Native.Using.Backup)
+ [Ripristino di un database](#SQLServer.Procedural.Importing.Native.Using.Restore)
+ [Ripristino di un log](#SQLServer.Procedural.Importing.Native.Restore.Log)
+ [Completamento di un ripristino del database](#SQLServer.Procedural.Importing.Native.Finish.Restore)
+ [Utilizzo di database parzialmente ripristinati](#SQLServer.Procedural.Importing.Native.Partially.Restored)
+ [Annullamento di un'attività](#SQLServer.Procedural.Importing.Native.Using.Cancel)
+ [Monitoraggio dello stato delle attività](#SQLServer.Procedural.Importing.Native.Tracking)

## Backup di un database
<a name="SQLServer.Procedural.Importing.Native.Using.Backup"></a>

Per eseguire il backup del tuo database, utilizza la stored procedure `rds_backup_database`.

**Nota**  
Non puoi effettuare il backup di un database durante la finestra di manutenzione o quando Amazon RDS è impegnato ad acquisire uno snapshot. 

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Backup.Syntax"></a>

```
exec msdb.dbo.rds_backup_database
	@source_db_name='database_name',
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n],
	[@enable_bucket_default_encryption=0|1];
```

I parametri seguenti sono obbligatori:
+ `@source_db_name` – Nome del database di cui eseguire il backup.
+ `@s3_arn_to_backup_to`— L'ARN che indica il bucket Amazon S3, il punto di accesso, il bucket di directory o il punto di accesso per il bucket di directory da utilizzare per il backup, più il nome del file di backup.

  Il file può avere qualsiasi estensione, ma di norma è `.bak`. Tieni presente che il punto di accesso ARNs deve essere del formato indicato. `arn:aws:s3:us-east-1:111122223333:access-point-name/object/key`

I parametri seguenti sono facoltativi:
+ `@kms_master_key_arn`: l'ARN per la chiave KMS di crittografia simmetrica da utilizzare per crittografare l'elemento.
  + Non è possibile utilizzare la chiave di crittografia predefinita. Se si utilizza la chiave predefinita, non verrà eseguito il backup del database.
  +  Se non si specifica un identificatore della chiave KMS, il file di backup non verrà crittografato. Per ulteriori informazioni, consulta [Crittografia delle risorse Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html).
  + Quando si specifica una chiave KMS, viene utilizzata la crittografia lato client.
  + Amazon RDS non supporta le chiavi KMS asimmetriche. Per ulteriori informazioni, consulta [Creazione di chiavi KMS di crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.
+ `@overwrite_s3_backup_file` – Un valore che indica se sovrascrivere un file di backup esistente.
  + `0` – Il file esistente non viene sovrascritto. Questo è il valore predefinito.

    L'impostazione di `@overwrite_s3_backup_file` su 0 restituisce un errore se il file esiste già.
  + `1` – Il file esistente con il nome specificato viene sovrascritto, anche se non è un file di backup.
+ `@type` – Tipo di backup.
  + `DIFFERENTIAL` – Viene eseguito un backup differenziale.
  + `FULL` – Viene eseguito un backup completo. Questo è il valore predefinito.

  Il backup differenziale si basa sull'ultimo backup completo. Per completare i backup differenziali non puoi effettuare una snapshot tra l'ultimo backup completo e il backup differenziale. Per effettuare un backup differenziale ed esiste uno snapshot, effettua un altro backup completo prima di procedere con il backup differenziale.

  Puoi cercare l'ultimo backup completo o snapshot utilizzando la seguente query SQL di esempio.

  ```
  select top 1
  database_name
  , 	backup_start_date
  , 	backup_finish_date
  from    msdb.dbo.backupset
  where   database_name='mydatabase'
  and     type = 'D'
  order by backup_start_date desc;
  ```
+ `@number_of_files` – Numero di file in cui verrà diviso il backup (blocchi). Il numero massimo è 10.
  + Il backup a più file è supportato per backup completi e differenziali.
  + Se immetti un valore pari a 1 o ometti il parametro, viene creato un singolo file di backup.

  Fornisci il prefisso in comune dei file, quindi il suffisso con un asterisco (`*`). L'asterisco può trovarsi in qualsiasi punto dell'*file\$1name*ARN S3. L'asterisco viene sostituito da una serie di stringhe alfanumeriche nei file generati, a partire da `1-of-number_of_files`.

  Ad esempio, se i nomi dei file nell'ARN S3 sono `backup*.bak` e imposti `@number_of_files=4`, i file di backup generati sono `backup1-of-4.bak`, `backup2-of-4.bak`, `backup3-of-4.bak` e `backup4-of-4.bak`.
  + Se uno dei nomi di file esiste già e `@overwrite_s3_backup_file` è 0, viene restituito un errore.
  + I backup con più file possono avere un solo asterisco nella *file\$1name* parte dell'ARN S3.
  + I backup a file singolo possono avere un numero qualsiasi di asterischi nella *file\$1name* parte dell'ARN S3. Gli asterischi non vengono rimossi dal nome file generato.
+ `@block_size`: la dimensione del blocco (in byte) che specifica la dimensione fisica del blocco per le operazioni di backup. I valori validi sono 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768, e 65.536.
+ `@max_transfer_size`— La dimensione massima di trasferimento indica il limite superiore del volume di dati (in byte) trasmesso per operazione durante il processo di backup. I/O I valori validi sono multipli di 65.536 byte (64 KB) fino a 4.194.304 byte (4 MB). 
+ `@buffer_count`— Numero totale di I/O buffer da utilizzare per il processo di backup.
+ `@enable_bucket_default_encryption`— Un valore che indica se utilizzare la configurazione di crittografia predefinita del bucket S3 per la crittografia lato server in S3. I bucket di directory utilizzano sempre la configurazione di crittografia predefinita del bucket indipendentemente da questa impostazione.
  + `0`— La crittografia lato server utilizza la crittografia Advanced Encryption Standard (AES) a 256 bit tramite SSE-S3.
  + `1`[— La crittografia lato server utilizza la crittografia predefinita configurata del bucket S3.](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-encryption.html) 

### Esempi
<a name="SQLServer.Procedural.Importing.Native.Backup.Examples"></a>

**Example di backup differenziale**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@overwrite_s3_backup_file=1,
@type='DIFFERENTIAL';
```

**Example di backup completo con crittografia lato client**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example di backup di più file**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4;
```

**Example di backup differenziale di più file**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
```

**Example di backup di più file con crittografia**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE',
@number_of_files=4;
```

**Example di backup di più file con sovrascrittura S3**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@number_of_files=4;
```

**Example di backup con dimensione del blocco**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@block_size=512;
```

**Example di backup di più file con `@max_transfer_size` e `@buffer_count`**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=4,
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example di backup di file singolo con il parametro @number\$1of\$1files**  
Questo esempio genera un file di backup denominato `backup*.bak`.  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@number_of_files=1;
```

**Example di backup completo con crittografia lato server**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@enable_bucket_default_encryption=1;
```

**Example di backup completo utilizzando un punto di accesso**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

**Example del backup completo utilizzando un punto di accesso per un bucket di directory**  

```
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3express:us-east-1:123456789012:accesspoint/my-access-point--use1-az6--xa-s3/object/backup1.bak',
@overwrite_s3_backup_file=1,
@type='FULL';
```

## Ripristino di un database
<a name="SQLServer.Procedural.Importing.Native.Using.Restore"></a>

Per eseguire il ripristino del tuo database devi chiamare la stored procedure `rds_restore_database`. Amazon RDS crea uno snapshot iniziale del database dopo che l'attività di ripristino è stata completata e il database è aperto.

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Restore.Syntax"></a>

```
exec msdb.dbo.rds_restore_database
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension',
	@with_norecovery=0|1,
	[@keep_cdc=0|1],
	[@data_file_volume='D:|H:|I:|J:'],
	[@log_file_volume='D:|H:|I:|J:'],
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
        [@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n],
	[@type='DIFFERENTIAL|FULL'];
```

I parametri seguenti sono obbligatori:
+ `@restore_db_name` – Il nome del database da ripristinare. I nomi dei database sono univoci. Non è possibile ripristinare un database se esiste già un database con lo stesso nome.
+ `@s3_arn_to_restore_from` – L'ARN che indica il prefisso e i nomi Amazon S3 dei file di backup utilizzati per ripristinare il database.
  + Per il backup di un file singolo, fornisci l'intero nome file.
  + Per eseguire un backup a più file, fornisci il prefisso in comune dei file, quindi il suffisso con un asterisco (`*`).
    + Se si utilizza un bucket di directory, l'ARN deve terminare `/*` con [a causa delle differenze tra i bucket di](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html) directory.
  + Se `@s3_arn_to_restore_from` è vuoto, viene restituito il seguente errore: S3 ARN prefix cannot be empty (Il prefisso ARN di S3 non può essere vuoto).

Il seguente parametro è obbligatorio per i ripristini differenziali, ma facoltativo per i ripristini completi:
+ `@with_norecovery` – La clausola di ripristino da utilizzare per l'operazione di ripristino.
  + Impostala su `0` per ripristinare con RECOVERY. In questo caso, il database è online dopo il ripristino.
  + Impostala su `1` per ripristinare con NORECOVERY. In questo caso, il database rimane nello stato RESTORING dopo il completamento dell'attività di ripristino. Con questo approccio puoi eseguire ripristini differenziali successivi.
  + Per i ripristini DIFFERENTIAL, specifica `0` o `1`.
  + Per i ripristini `FULL`, per impostazione predefinita questo valore è `0`.

I parametri seguenti sono facoltativi:
+ `@keep_cdc`— Indica se mantenere la configurazione Change Data Capture (CDC) sul database ripristinato. Impostato su per `1` abilitare KEEP\$1CDC, per disabilitare. `0` Il valore predefinito è `0`.
+ `@data_file_volume`— specifica la lettera di unità per i file di dati del database. Il valore predefinito è `D:`.
+ `@log_file_volume`— Speciifica la lettera di unità per i file di registro del database. Il valore predefinito è. `D:`
+ `@kms_master_key_arn`: la chiave KMS da usare per decrittografare il file di backup, se è stato crittografato.

  Quando si specifica una chiave KMS, viene utilizzata la crittografia lato client.
+ `@type` – Tipo di ripristino. I tipi validi sono `DIFFERENTIAL` e `FULL`. Il valore predefinito è `FULL`.
+ `@block_size`: la dimensione del blocco (in byte) che specifica la dimensione fisica del blocco per le operazioni di backup. I valori validi sono 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768, e 65.536.
+ `@max_transfer_size`— La dimensione massima di trasferimento indica il limite superiore del volume di dati (in byte) trasmesso per I/O operazione durante il processo di backup. I valori validi sono multipli di 65.536 byte (64 KB) fino a 4.194.304 byte (4 MB). 
+ `@buffer_count`— Numero totale di I/O buffer da utilizzare per il processo di backup.

**Nota**  
Per i ripristini differenziali, il database deve trovarsi nello stato RESTORING oppure deve già esistere un'attività che ripristina con NORECOVERY.  
Non è possibile ripristinare i backup differenziali successivi mentre il database è online.  
Non è possibile inviare un'attività di ripristino per un database che ha già un'attività di ripristino in sospeso con RECOVERY.  
I ripristini completi con NORECOVERY e KEEP\$1CDC non sono supportati.  
Tutti i ripristini nativi non sono supportati sulle istanze con repliche di lettura tra regioni.  
Per le configurazioni supportate, il ripristino di un database in un’istanza Multi-AZ con repliche di lettura è simile al ripristino di un database in un’istanza Multi-AZ. Non è necessario eseguire ulteriori azioni per ripristinare un database in una replica.

### Esempi
<a name="SQLServer.Procedural.Importing.Native.Restore.Examples"></a>

**Example di ripristino di un singolo file**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

**Example di ripristino di più file**  
Per evitare errori durante il ripristino di più file, assicurati che tutti i file di backup abbiano lo stesso prefisso e che nessun altro file utilizzi tale prefisso.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
```

**Example di ripristino completo del database con RECOVERY**  
I seguenti tre esempi eseguono la stessa attività di ripristino completo con RECOVERY.  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
[@type='DIFFERENTIAL|FULL'];
```

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=0;
```

**Example di ripristino completo del database con crittografia**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example di ripristino con dimensione del blocco**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@block_size=512;
```

**Example di ripristino di più file con @max\$1transfer\$1size e @buffer\$1count**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*',
@max_transfer_size=4194304,
@buffer_count=10;
```

**Example di ripristino completo del database con NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='FULL',
@with_norecovery=1;
```

**Example di ripristino differenziale con NORECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
```

**Example di ripristino differenziale con RECOVERY**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=0;
```

**Example del ripristino completo del database con RECOVERY utilizzando un punto di accesso**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/object/backup1.bak',
@with_norecovery=0;
```

**Example del ripristino completo del database con KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Ripristino di un log
<a name="SQLServer.Procedural.Importing.Native.Restore.Log"></a>

Per ripristinare il log chiama la stored procedure `rds_restore_log`.

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Syntax"></a>

```
exec msdb.dbo.rds_restore_log 
	@restore_db_name='database_name',
	@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],
	[@with_norecovery=0|1],
	[@keep_cdc=0|1],
	[@stopat='datetime'],
	[@block_size=512|1024|2048|4096|8192|16384|32768|65536],
        [@max_transfer_size=n],
        [@buffer_count=n];
```

I parametri seguenti sono obbligatori:
+ `@restore_db_name` – Il nome del database di cui vuoi ripristinare il log.
+ `@s3_arn_to_restore_from` – L'ARN che indica il prefisso e i nomi Amazon S3 dei file di log utilizzati per ripristinare il log. Il file può avere qualsiasi estensione, ma di norma è `.trn`.

  Se `@s3_arn_to_restore_from` è vuoto, viene restituito il seguente errore: S3 ARN prefix cannot be empty (Il prefisso ARN di S3 non può essere vuoto).

I parametri seguenti sono facoltativi:
+ `@keep_cdc`— Indica se mantenere la configurazione Change Data Capture (CDC) sul database ripristinato. Impostato su 1 per abilitare KEEP\$1CDC, 0 per disabilitare. Il valore predefinito è 0.
+ `@kms_master_key_arn`: la chiave KMS da usare per decrittografare il registro, se è stato crittografato.
+ `@with_norecovery` – La clausola di ripristino da utilizzare per l'operazione di ripristino. Il valore predefinito è `1`.
  + Impostala su `0` per ripristinare con RECOVERY. In questo caso, il database è online dopo il ripristino. Non è possibile ripristinare i backup di log successivi mentre il database è online.
  + Impostala su `1` per ripristinare con NORECOVERY. In questo caso, il database rimane nello stato RESTORING dopo il completamento dell'attività di ripristino. Con questo approccio puoi eseguire ripristini di log successivi.
+ `@stopat` – Un valore che specifica che lo stato del database viene ripristinato alla data e all'ora specificate (nel formato datetime). Solo i record del log delle transazioni scritti prima della data e dell'ora specificate vengono applicati al database.

  Se questo parametro non viene specificato (è NULL), viene ripristinato il log completo.
+ `@block_size`: la dimensione del blocco (in byte) che specifica la dimensione fisica del blocco per le operazioni di backup. I valori validi sono 512, 1.024, 2.048, 4.096, 8.192, 16.384, 32.768, e 65.536.
+ `@max_transfer_size`— La dimensione massima di trasferimento indica il limite superiore del volume di dati (in byte) trasmesso per I/O operazione durante il processo di backup. I valori validi sono multipli di 65.536 byte (64 KB) fino a 4.194.304 byte (4 MB). 
+ `@buffer_count`— Numero totale di I/O buffer da utilizzare per il processo di backup.

**Nota**  
Per i ripristini di log, il database deve trovarsi nello stato RESTORING oppure deve già esistere un'attività che ripristina con NORECOVERY.  
Non è possibile ripristinare i backup di log mentre il database è online.  
Non è possibile inviare un'attività di ripristino di log per un database che ha già un'attività di ripristino in sospeso con RECOVERY.

### Esempi
<a name="SQLServer.Procedural.Importing.Native.Restore.Log.Examples"></a>

**Example di ripristino di log**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example di ripristino di log con crittografia**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

**Example di ripristino di log con NORECOVERY**  
I seguenti due esempi eseguono la stessa attività di ripristino di log con NORECOVERY.  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=1;
```

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
```

**Example di ripristino con dimensione del blocco**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@block_size=512;
```

**Example di ripristino di log con RECOVERY**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0;
```

**Example di ripristino di log con la clausola STOPAT**  

```
exec msdb.dbo.rds_restore_log
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn',
@with_norecovery=0,
@stopat='2019-12-01 03:57:09';
```

**Example del ripristino dei log con KEEP\$1CDC**  

```
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@keep_cdc=1;
```

## Completamento di un ripristino del database
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore"></a>

Se l'ultima attività di ripristino sul database è stata eseguita utilizzando `@with_norecovery=1`, il database è ora nello stato RESTORING. Apri il database per il normale funzionamento utilizzando la stored procedure `rds_finish_restore`.

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Finish.Restore.Syntax"></a>

```
exec msdb.dbo.rds_finish_restore @db_name='database_name';
```

**Nota**  
Per utilizzare questo approccio, il database deve trovarsi nello stato RESTORING senza attività di ripristino in sospeso.  
Per completare il ripristino del database, utilizza l'accesso master. In alternativa, utilizza l'accesso utente che ha ripristinato più di recente il database o il log con NORECOVERY.

## Utilizzo di database parzialmente ripristinati
<a name="SQLServer.Procedural.Importing.Native.Partially.Restored"></a>

### Rimozione di un database parzialmente ripristinato
<a name="SQLServer.Procedural.Importing.Native.Drop.Partially.Restored"></a>

Per rimuovere un database parzialmente ripristinato (lasciato nello stato RESTORING), utilizza la stored procedure `rds_drop_database`.

```
exec msdb.dbo.rds_drop_database @db_name='database_name';
```

**Nota**  
Non è possibile inviare una richiesta DROP per un database che ha già un'attività di ripristino in sospeso o in completamento.  
Per rimuovere il database, utilizza l'accesso master. In alternativa, utilizza l'accesso utente che ha ripristinato più di recente il database o il log con NORECOVERY.

### Comportamento di ripristino e point-in-time ripristino delle istantanee per database parzialmente ripristinati
<a name="SQLServer.Procedural.Importing.Native.Snapshot.Restore"></a>

I database parzialmente ripristinati nell'istanza di origine (lasciati nello stato RESTORING) vengono eliminati dall'istanza di destinazione durante il ripristino e il ripristino delle istantanee. point-in-time

## Annullamento di un'attività
<a name="SQLServer.Procedural.Importing.Native.Using.Cancel"></a>

Per annullare un'attività di backup o ripristino, chiama la stored procedure `rds_cancel_task`.

**Nota**  
Non puoi annullare un'attività FINISH\$1RESTORE.

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Cancel.Syntax"></a>

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

Il parametro seguente è obbligatorio:
+ `@task_id` – L'ID dell'attività da annullare. L'ID attività si ottiene chiamando `rds_task_status`. 

## Monitoraggio dello stato delle attività
<a name="SQLServer.Procedural.Importing.Native.Tracking"></a>

Per monitorare lo stato delle tue attività di backup e ripristino, chiama la stored procedure `rds_task_status`. Se non fornisci alcun parametro, la stored procedure restituisce lo stato di tutte le attività. Lo stato delle attività viene aggiornato all'incirca ogni due minuti. La cronologia delle operazioni viene conservata per 36 giorni.

### Utilizzo
<a name="SQLServer.Procedural.Importing.Native.Tracking.Syntax"></a>

```
exec msdb.dbo.rds_task_status
	[@db_name='database_name'],
	[@task_id=ID_number];
```

I parametri seguenti sono facoltativi: 
+ `@db_name` – Il nome del database per il quale visualizzare lo stato dell'attività.
+ `@task_id` – L'ID dell'attività per la quale visualizzare lo stato.

### Esempi
<a name="SQLServer.Procedural.Importing.Native.Tracking.Examples"></a>

**Example di elenco dello stato per un'attività specifica**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example di elenco dello stato per un'attività e un database specifici**  

```
exec msdb.dbo.rds_task_status
@db_name='my_database',
@task_id=5;
```

**Example di elenco di tutte le attività e relativi stati per un database specifico**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example di elenco di tutte le attività e relativi stati per l'istanza corrente**  

```
exec msdb.dbo.rds_task_status;
```

### Risposta
<a name="SQLServer.Procedural.Importing.Native.Tracking.Response"></a>

La stored procedure `rds_task_status` restituisce le seguenti colonne.


****  

| Colonna | Descrizione | 
| --- | --- | 
| `task_id` |  L'ID dell'attività.   | 
| `task_type` |  Tipo di attività in base ai parametri di input, come segue: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html) Amazon RDS crea uno snapshot iniziale del database dopo che è stato aperto al completamento delle seguenti attività di ripristino: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `database_name` |  Il nome del database al quale l'attività è associata.   | 
| `% complete` |  L'avanzamento dell'attività espresso in percentuale.   | 
| `duration (mins)` |  La quantità di tempo dedicato all'attività, in minuti.   | 
| `lifecycle` |  Lo stato dell'attività. I possibili stati sono i seguenti:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Using.html)  | 
| `task_info` |  Ulteriori informazioni sull'attività.  Se si verifica un errore durante il backup o il ripristino di un database, questa colonna contiene informazioni sull'errore. Per l'elenco dei possibili errori e le strategie di mitigazione, consulta [Risoluzione dei problemi](SQLServer.Procedural.Importing.Native.Troubleshooting.md).   | 
| `last_updated` |  La data e l'ora dell'ultimo aggiornamento dello stato dell'attività. Lo stato viene aggiornato dopo ogni 5% di avanzamento.  | 
| `created_at` | La data e l'ora di creazione dell'attività. | 
| S3\$1object\$1arn | L'ARN che indica il prefisso e il nome Amazon S3 del file di cui viene eseguito il backup o il ripristino. | 
| `overwrite_s3_backup_file` |  Il valore del parametro `@overwrite_s3_backup_file` specificato quando chiami un'attività di backup. Per ulteriori informazioni, consulta [Backup di un database](#SQLServer.Procedural.Importing.Native.Using.Backup).  | 
| KMS\$1master\$1key\$1arn | L'ARN per la chiave KMS utilizzata per la crittografia (per il backup) e la decrittografia (per il ripristino). | 
| filepath | Non applicabile ad attività di backup e ripristino nativi. | 
| overwrite\$1file | Non applicabile ad attività di backup e ripristino nativi. | 

# Compressione dei file di backup
<a name="SQLServer.Procedural.Importing.Native.Compression"></a>

Per risparmiare spazio nel tuo bucket Amazon S3 puoi comprimere i tuoi file di backup. Per ulteriori informazioni sulla compressione dei file di backup, consulta [Compressione backup](https://msdn.microsoft.com/en-us/library/bb964719.aspx) nella documentazione di Microsoft. 

La compressione dei file di backup è supportata per le seguenti edizioni dei database: 
+ Microsoft SQL Server Enterprise Edition 
+ Microsoft SQL Server Standard Edition 

Per verificare l’opzione di compressione per i file di backup è necessario eseguire il seguente codice:

```
1. exec rdsadmin.dbo.rds_show_configuration 'S3 backup compression';
```

Per attivare la compressione per i file di backup è necessario eseguire il seguente codice:

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'true';
```

Per disattivare la compressione per i file di backup è necessario eseguire il seguente codice: 

```
1. exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'false';
```

# Risoluzione dei problemi
<a name="SQLServer.Procedural.Importing.Native.Troubleshooting"></a>

Di seguito sono elencati i problemi che si potrebbero riscontrare quando si utilizzano backup e ripristino nativi.


****  

| Problema | Suggerimenti sulla risoluzione dei problemi | 
| --- | --- | 
|  L'opzione di backup/ripristino del database non è ancora abilitata o è in fase di abilitazione. Please try again later. (Per favore, riprova più tardi)  |  Accertarsi di aver aggiunto l’opzione `SQLSERVER_BACKUP_RESTORE` al gruppo di opzioni DB associato all'istanza database. Per ulteriori informazioni, consulta [Aggiunta dell'opzione Native Backup and Restore (Backup nativo e ripristino)](Appendix.SQLServer.Options.BackupRestore.md#Appendix.SQLServer.Options.BackupRestore.Add).  | 
|  Autorizzazione EXECUTE negata per l’oggetto ‘*rds\$1backup\$1database*’ del database ‘msdb’ con schema ‘dbo’.  |  Durante l’esecuzione della stored procedure, accertarti di utilizzare l’utente principale. Se questo errore si verifica anche dopo aver effettuato l’accesso come utente principale, potrebbe essere dovuto al disallineamento delle autorizzazioni dell’utente amministratore. Per reimpostare l’utente principale, utilizza la Console di gestione AWS. Consultare [Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Autorizzazione EXECUTE negata per l’oggetto ‘*rds\$1restore\$1database*’, del database ‘msdb’ con schema ‘dbo’.  |  Durante l’esecuzione della stored procedure, accertarti di utilizzare l’utente principale. Se questo errore si verifica anche dopo aver effettuato l’accesso come utente principale, potrebbe essere dovuto al disallineamento delle autorizzazioni dell’utente amministratore. Per reimpostare l’utente principale, utilizza la Console di gestione AWS. Consultare [Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   | 
|  Accesso negato  | Il processo di backup o ripristino non può accedere al file di backup. Ciò è in genere dovuto a problemi di questo tipo: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.Native.Troubleshooting.html)  | 
|  BACKUP DATABASE WITH COMPRESSION (BACKUP di DATABASE CON COMPRESSIONE) non è supportato nell'edizione <edition\$1name>  |  La compressione dei file di backup è supportata solo per Microsoft SQL Server Enterprise Edition e Standard Edition. Per ulteriori informazioni, consulta [Compressione dei file di backup](SQLServer.Procedural.Importing.Native.Compression.md).   | 
|  La chiave <ARN> non esiste  |  Hai tentato di ripristinare un backup crittografato ma non hai fornito una chiave di crittografia valida. Controlla la chiave di crittografia e riprova. Per ulteriori informazioni, consulta [Ripristino di un database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore).   | 
|  Riemetti l'attività con il tipo corretto e la proprietà di sovrascrivere  |  Se tenti di effettuare il backup del tuo database e indichi il nome di un file che già esiste, ma imposti la proprietà di sovrascrittura su falso, l'operazione di salvataggio non viene completata. Pre risolvere l'errore, indica il nome di un file che non esiste oppure imposta la proprietà di sovrascrittura su vero. Per ulteriori informazioni, consulta [Backup di un database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Backup). È anche possibile che, nonostante volessi ripristinare il tuo database, hai chiamato la stored procedure `rds_backup_database` per errore. In questo caso, chiama piuttosto la stored procedure `rds_restore_database`. Per ulteriori informazioni, consulta [Ripristino di un database](SQLServer.Procedural.Importing.Native.Using.md#SQLServer.Procedural.Importing.Native.Using.Restore). Se avevi l'intenzione di ripristinare il tuo database e hai chiamato la stored procedure `rds_restore_database`, verifica di aver indicato il nome di un file di backup valido. Per ulteriori informazioni, consulta [Uso di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  Specifica un bucket che si trova nella stessa regione dell'istanza di RDS  |  Non puoi eseguire il backup o il ripristino in o da un bucket Amazon S3 in una regione AWS diversa da quella dell'istanza database di Amazon RDS. Puoi utilizzare la replica Amazon S3 per copiare il file di backup nella regione AWS corretta. Per ulteriori informazioni, consulta la sezione [Replica tra regioni](https://docs.aws.amazon.com/AmazonS3/latest/userguide/crr.html) nella documentazione di Amazon S3.  | 
|  Il bucket specificato non esiste.  | Verifica di aver indicato l'ARN corretto per il bucket e il file, nel formato corretto.  Per ulteriori informazioni, consulta [Uso di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Using.md).  | 
|  L'utente <ARN> non è autorizzato ad eseguire <kms action> sulla risorsa <ARN>  |  Hai richiesto un'operazione crittografata ma non hai fornito le autorizzazioni AWS KMS corrette. Verifica di disporre delle autorizzazioni corrette o aggiungile.  Per ulteriori informazioni, consulta [Configurazione di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md).  | 
|  L'attività di ripristino non è in grado di eseguire il ripristino da più di 10 file di backup). Ridurre il numero di file corrispondenti e riprovare.  |  Ridurre il numero di file di cui stai provando a effettuare il ripristino. Se necessario, puoi rendere ogni singolo file più grande.   | 
|  Il database '*nome\$1database*' esiste già. Non sono consentiti due database che differiscono solo per maiuscole e minuscole o accento. Scegli un nome di database diverso.  |  Non è possibile ripristinare un database se esiste già un database con lo stesso nome. I nomi dei database sono univoci.  | 

# Importazione ed esportazione di dati SQL Server mediante altri metodi
<a name="SQLServer.Procedural.Importing.Snapshots"></a>

Di seguito, è possibile trovare informazioni relative all'utilizzo di snapshot per importare i dati Microsoft SQL Server in Amazon RDS. È anche possibile trovare informazioni relative all'utilizzo di snapshot per esportare i dati da un'istanza database RDS che esegue SQL Server. 

Se lo scenario lo consente, è più semplice spostare i dati da e in Amazon RDS utilizzando la funzionalità di backup e di ripristino nativa. Per ulteriori informazioni, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md). 

**Nota**  
Amazon RDS per Microsoft SQL Server non supporta l'importazione di dati nel database `msdb`. 

## Importazione di dati in Amazon RDS per SQL Server utilizzando uno snapshot
<a name="SQLServer.Procedural.Importing.Procedure"></a>

**Per importare dati in un'istanza database SQL Server utilizzando uno snapshot**

1. Creare un'Istanza database. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

1. Negare alle applicazioni l'accesso all'istanza database di destinazione. 

   Se si impedisce l'accesso all'istanza database durante l'importazione di dati, il trasferimento di dati sarà più veloce. Inoltre, non ci si dovrà preoccupare di eventuali conflitti durante il caricamento dei dati se altre applicazioni non possono scrivere sull'istanza database nello stesso momento. Se si verificano dei problemi ed è necessario eseguire il rollback a uno snapshot di database precedente, le sole modifiche che si perderanno sono i dati importati. Sarà possibile importare nuovamente tali dati dopo la risoluzione del problema. 

   Per informazioni sul controllo accessi all'istanza database, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md). 

1. Creare uno snapshot del database di destinazione. 

   Se il database di destinazione è già popolato con dati, è consigliabile creare uno snapshot del database prima di importare i dati. Se si verificano dei problemi nell'importazione dei dati o si desidera eliminare le modifiche, è possibile ripristinare lo stato precedente del database utilizzando lo snapshot. Per informazioni sugli snapshot di database, consulta [Creazione di uno snapshot del database per un’istanza database Single-AZ per Amazon RDS](USER_CreateSnapshot.md). 
**Nota**  
Quando si crea uno snapshot di database, le operazioni I/O per il database vengono sospese per un momento (millisecondi) durante l'esecuzione del backup. 

1. Disabilitare i backup automatici sul database di destinazione. 

   La disabilitazione dei backup automatici sull'istanza database di destinazione migliora le prestazioni durante l'importazione dei dati in quanto Amazon RDS non registra le transazioni se i backup automatici sono disabilitati. È tuttavia necessario considerare vari aspetti. I backup automatici sono necessari per eseguire un ripristino point-in-time. Pertanto, non è possibile ripristinare il database a uno specifico point-in-time durante l'importazione dei dati. Inoltre, qualsiasi backup automatico creato sull'istanza database viene eliminato, a meno che non si scelga di conservarlo. 

   La scelta di conservare i backup automatici può contribuire a proteggere dall'eliminazione accidentale dei dati. Amazon RDS insieme a ciascun backup automatico salva anche le proprietà dell'istanza database per facilitarne il recupero. L’utilizzo di questa opzione consente di ripristinare un’istanza database eliminata in un momento specifico del periodo di conservazione dei backup anche dopo averla eliminata. I backup automatici vengono automaticamente eliminati alla fine della finestra di backup specificata, così come accade per un'istanza database attiva. 

   È possibile anche utilizzare snapshot precedenti per ripristinare il database e tutti gli snapshot creati restano disponibili. Per informazioni sui backup automatici, consulta [Introduzione ai backup](USER_WorkingWithAutomatedBackups.md). 

1. Disabilitare i vincoli di chiave esterna, se applicabile. 

    Se è necessario disabilitare tali vincoli, è possibile farlo con lo script seguente. 

   ```
   --Disable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' NOCHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
       
       GO
   ```

1. Eliminare gli indici, se applicabile. 

1. Disabilitare i trigger, se applicabile. 

    Se è necessario disabilitare i trigger, è possibile farlo con lo script seguente. 

   ```
   --Disable triggers on all tables
       DECLARE @enable BIT = 0;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
       
       GO
   ```

1. Eseguire una query sull'istanza SQL Server di origine per tutti gli account di accesso che si intende importare nell'istanza database di destinazione. 

   SQL Server archivia account di accesso e password nel database `master`. Poiché Amazon RDS non concede l'accesso al database `master`, non è possibile importare direttamente account di accesso e password nell'istanza database di destinazione. È necessario invece eseguire una query sul database `master` sull'istanza SQL Server di origine per generare un file DDL (Data Definition Language). Il file deve includere tutti gli accessi e le password che si desidera aggiungere all'istanza database di destinazione. Il file deve includere anche le appartenenze ai ruoli e le autorizzazioni che si desidera trasferire. 

   Per informazioni sull’esecuzione di query sul database `master`, consulta [Trasferire account di accesso e password tra istanze di SQL Server](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/security/transfer-logins-passwords-between-instances) nella Knowledge Base di Microsoft.

   L'output dello script è un altro script che è possibile eseguire sull'istanza database di destinazione. Il codice dello script nell'articolo della Knowledge Base è il seguente: 

   ```
   p.type IN 
   ```

   Sostituire ogni occorrenza di `p.type` con il codice seguente: 

   ```
   p.type = 'S' 
   ```

1. Importare i dati utilizzando il metodo in [Importazione dei dati](#ImportData.SQLServer.Import). 

1. Concedere alle applicazioni l'accesso all'istanza database di destinazione. 

   Al termine dell'importazione dei dati, è possibile concedere l'accesso all'istanza database alle applicazioni bloccate durante l'importazione. Per informazioni sul controllo accessi all'istanza database, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md). 

1. Abilitare i backup automatici sull'istanza database di destinazione. 

   Per informazioni sui backup automatici, consulta [Introduzione ai backup](USER_WorkingWithAutomatedBackups.md). 

1. Abilitare i vincoli di chiave esterna. 

    Se i vincoli di chiave esterna sono stati disabilitati in precedenza, è possibile abilitarli con lo script seguente. 

   ```
   --Enable foreign keys on all tables
       DECLARE @table_name SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE table_cursor CURSOR FOR SELECT name FROM sys.tables;
       
       OPEN table_cursor;
       FETCH NEXT FROM table_cursor INTO @table_name;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         SELECT @cmd = 'ALTER TABLE '+QUOTENAME(@table_name)+' CHECK CONSTRAINT ALL';
         EXEC (@cmd);
         FETCH NEXT FROM table_cursor INTO @table_name;
       END
       
       CLOSE table_cursor;
       DEALLOCATE table_cursor;
   ```

1. Abilitare gli indici, se applicabile.

1. Abilitare i trigger, se applicabile.

    Se i trigger sono stati disabilitati in precedenza, è possibile abilitarli con lo script seguente. 

   ```
   --Enable triggers on all tables
       DECLARE @enable BIT = 1;
       DECLARE @trigger SYSNAME;
       DECLARE @table SYSNAME;
       DECLARE @cmd NVARCHAR(MAX);
       DECLARE trigger_cursor CURSOR FOR SELECT trigger_object.name trigger_name,
        table_object.name table_name
       FROM sysobjects trigger_object
       JOIN sysobjects table_object ON trigger_object.parent_obj = table_object.id
       WHERE trigger_object.type = 'TR';
       
       OPEN trigger_cursor;
       FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       
       WHILE @@FETCH_STATUS = 0 BEGIN
         IF @enable = 1
            SET @cmd = 'ENABLE ';
         ELSE
            SET @cmd = 'DISABLE ';
       
         SET @cmd = @cmd + ' TRIGGER dbo.'+QUOTENAME(@trigger)+' ON dbo.'+QUOTENAME(@table)+' ';
         EXEC (@cmd);
         FETCH NEXT FROM trigger_cursor INTO @trigger, @table;
       END
       
       CLOSE trigger_cursor;
       DEALLOCATE trigger_cursor;
   ```

### Importazione dei dati
<a name="ImportData.SQLServer.Import"></a>

Microsoft SQL Server Management Studio è un client SQL Server grafico incluso in tutte le edizioni di Microsoft SQL Server ad eccezione di Express Edition. SQL Server Management Studio Express è fornito da Microsoft come download gratuito. Per trovare questo download, consulta [il sito Web di Microsoft](https://www.microsoft.com/en-us/download). 

**Nota**  
SQL Server Management Studio è disponibile solo come applicazione basata su Windows.

SQL Server Management Studio include i seguenti strumenti, utili nell'importazione di dati in un'istanza database SQL Server: 
+ Procedura guidata Genera e pubblica script
+ Importazione/Esportazione guidata
+ Copia bulk

#### Procedura guidata Genera e pubblica script
<a name="ImportData.SQLServer.MgmtStudio.ScriptWizard"></a>

La procedura guidata Genera e pubblica script crea uno script che contiene lo schema di un database, i dati o entrambi. È possibile generare uno script per un database nella distribuzione SQL Server locale. È quindi possibile eseguire lo script per trasferire le informazioni in esso contenute in un'istanza database Amazon RDS. 

**Nota**  
Per database di dimensioni di 1 GiB o superiori, è più efficace eseguire lo script del solo schema di database. Si utilizza quindi l'Importazione/Esportazione guidata della caratteristica copia bulk di SQL Server per il trasferimento dei dati.

Per informazioni dettagliate sulla procedura guidata Genera e pubblica script, consulta la [documentazione di Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms178078%28v=sql.105%29.aspx). 

Nella procedura guidata, presta particolare attenzione alle opzioni avanzate nella pagina **Opzioni di creazione script** per assicurarti che tutti gli elementi da includere nello script siano selezionati. Ad esempio, per impostazione predefinita, i trigger di database non sono inclusi nello script.

Quando lo script viene generato e salvato, puoi utilizzare SQL Server Management Studio per la connessione all'istanza database e quindi eseguire lo script.

#### Importazione/Esportazione guidata
<a name="ImportData.SQLServer.MgmtStudio.ImportExportWizard"></a>

Importazione/Esportazione guidata crea un pacchetto Integration Services speciale, che puoi utilizzare per copiare i dati dal database SQL Server locale nell'istanza database di destinazione. La procedura guidata può filtrare le tabelle e persino le tuple in una tabella da copiare nell'istanza database di destinazione.

**Nota**  
Importazione/Esportazione guidata è una soluzione appropriata per i set di dati di grandi dimensioni, ma forse non la più rapida per esportare dati a distanza dalla distribuzione locale. Una soluzione più rapida è la funzionalità di copia bulk di SQL Server.

Per ulteriori informazioni su Importazione/Esportazione guidata, consulta la [documentazione di Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms140052%28v=sql.105%29.aspx).

Nella pagina **Choose a Destination (Seleziona destinazione)** della procedura guidata, procedere come segue:
+ In **Nome server**, digitare il nome dell'endpoint per l'istanza database.
+ Per la modalità di autenticazione del server, scegliere **Usa autenticazione di SQL Server**.
+ Per **Nome utente** e **Password**, digitare le credenziali per l'utente master creato per l'istanza database.

#### Copia bulk
<a name="ImportData.SQLServer.MgmtStudio.BulkCopy"></a>

La funzionalità di copia bulk di SQL Server è una soluzione efficace per copiare dati da un database di origine all'istanza database. La copia bulk scrive i dati specificati in un file di dati, ad esempio un file ASCII. In seguito, puoi eseguire la copia bulk per scrivere il contenuto del file sull'istanza database di destinazione. 

Questa sezione utilizza l'utilità **bcp** inclusa in tutte le edizioni di SQL Server. Per informazioni dettagliate sulle operazioni di importazione ed esportazione bulk, consulta la [documentazione di Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx). 

**Nota**  
Prima di utilizzare la funzionalità di copia bulk, devi dapprima importare lo schema del database nell'istanza database di destinazione. La procedura guidata Genera e pubblica script, descritta precedentemente in questo argomento, è uno strumento eccellente per questo scopo. 

Il comando seguente esegue la connessione all'istanza SQL Server locale. Genera un file delimitato da tabulazioni di una tabella specificata nella directory principale C:\$1 della distribuzione SQL Server esistente. La tabella è specificata dal relativo nome completo e il file di testo ha lo stesso nome della tabella che viene copiata. 

```
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000 
```

Il codice precedente include le seguenti opzioni:
+ `-n` specifica che la copia bulk utilizza i tipi di dati nativi dei dati da copiare.
+ `-S` specifica l'istanza SQL Server a si collega l'utilità *bcp*.
+ `-U` specifica il nome utente dell'account utilizzato per il login all'istanza SQL Server.
+ `-P` specifica la password per l'utente specificato da `-U`.
+ `-b` specifica il numero di righe per batch di dati importati.

**Nota**  
Potrebbero esserci altri parametri importanti per la tua operazione di importazione. Ad esempio, potresti avere bisogno del parametro `-E` relativo ai valori di identità. Per ulteriori informazioni, consulta la descrizione completa della sintassi della riga di comando per l'utilità **bcp** nella [documentazione di Microsoft SQL Server](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.105%29.aspx). 

Ad esempio, supponiamo che un database denominato `store` che utilizza lo schema predefinito `dbo` contenga una tabella denominata `customers`. L'account utente `admin`, con la password `insecure`, copia 10.000 righe della tabella `customers` in un file denominato `customers.txt`. 

```
bcp store.dbo.customers out C:\customers.txt -n -S localhost -U admin -P insecure -b 10000 
```

Dopo aver generato il file di dati, è possibile caricare i dati nell'istanza database utilizzando un comando simile. Prima di procedere, crea il database e lo schema nell'istanza database di destinazione. Utilizza quindi l'argomento `in` per specificare un file di input anziché `out` per specificare un file di output. Invece di utilizzare localhost per specificare l'istanza SQL Server locale, specifica l'endpoint dell'istanza database. Se utilizzi una porta differente dalla porta 1433, specifica anche quella. Il nome utente e la password sono la password e l'utente master dell'istanza database. La sintassi è esposta di seguito. 

```
bcp dbname.schema_name.table_name 
					in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
```

Per continuare l'esempio precedente, supponiamo che il nome utente master sia `admin` e che la password sia `insecure`. L'endpoint per l'istanza database è `rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com` e si utilizza la porta 4080. Il comando è il seguente. 

```
bcp store.dbo.customers in C:\customers.txt -n -S rds.ckz2kqd4qsn1.us-east-1.rds.amazonaws.com,4080 -U admin -P insecure -b 10000 
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

## Esportazione di dati da Amazon RDS per SQL Server
<a name="SQLServer.Procedural.Exporting"></a>

Puoi scegliere una delle seguenti opzioni per esportare dati da un'istanza database RDS for SQL Server:
+ **Backup di database nativo con file di backup completo (.bak)** – L'utilizzo di file .bak per il backup di database è estremamente ottimizzato ed è in genere il modo più rapido per esportare dati. Per ulteriori informazioni, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md). 
+ **Procedura guidata di importazione ed esportazione di SQL Server** – Per ulteriori informazioni, consulta [Importazione/Esportazione guidata di SQL Server](#SQLServer.Procedural.Exporting.SSIEW). 
+ **Procedura guidata di generazione e pubblicazione di script di SQL Server e utilità bcp** – Per ulteriori informazioni, consulta [Procedura guidata Genera e pubblica script e utilità bcp di SQL Server](#SQLServer.Procedural.Exporting.SSGPSW). 

### Importazione/Esportazione guidata di SQL Server
<a name="SQLServer.Procedural.Exporting.SSIEW"></a>

Puoi utilizzare Importazione/Esportazione guidata di SQL Server per copiare una o più tabelle, viste o query dall'istanza database RDS for SQL Server in un altro datastore. Questa scelta è la migliore se il datastore di destinazione non è SQL Server. Per ulteriori informazioni, consulta [Importazione ed esportazione guidata di SQL Server](http://msdn.microsoft.com/en-us/library/ms141209%28v=sql.110%29.aspx) nella documentazione di SQL Server. 

L'Importazione/Esportazione guidata di SQL Server è disponibile come parte di Microsoft SQL Server Management Studio. Il client SQL Server grafico è incluso in tutte le edizioni di Microsoft SQL Server ad eccezione di Express Edition. SQL Server Management Studio è disponibile solo come applicazione basata su Windows. SQL Server Management Studio Express è fornito da Microsoft come download gratuito. Per trovare questo download, consulta [il sito Web di Microsoft](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Per esportare dati con Importazione/Esportazione guidata di SQL Server**

1. In SQL Server Management Studio, connettersi all'istanza database RDS for SQL Server. Per informazioni dettagliate su come eseguire questa operazione, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. In **Esplora oggetti**, espandere **Database**, aprire il menu contestuale (fare clic con il pulsante destro del mouse) del database di origine, scegliere **Attività**, quindi scegliere **Esporta dati**. Viene visualizzata la procedura guidata. 

1. Nella pagina **Seleziona origine dati**, procedere come segue:

   1. Per **Origine dati** scegliere **SQL Server Native Client 11.0**. 

   1. Verifica che la casella **Nome server** riporti l'endpoint dell'istanza database RDS for SQL Server.

   1. Selezionare **Usa autenticazione di SQL Server**. In **Nome utente** e **Password** specifica il nome utente master e la password dell'istanza database.

   1. Verificare che nella casella **Database** sia visualizzato il database da cui esportare i dati.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Seleziona destinazione**, procedere come segue:

   1. Per **Destinazione** scegliere **SQL Server Native Client 11.0**. 
**Nota**  
Sono disponibili altre origini dati di destinazione. Queste includono i provider di dati .NET Framework, i provider OLE DB, SQL Server Native Client e ADO.NET, Microsoft Office Excel, Microsoft Office Access e l'origine del file flat. Se si sceglie come destinazione una di queste origini dati, ignorare la parte restante della fase 4. Per i dettagli delle informazioni di connessione da fornire successivamente, consultare l'argomento relativo alla [scelta di una destinazione](http://msdn.microsoft.com/en-us/library/ms178430%28v=sql.110%29.aspx) nella documentazione di SQL Server. 

   1. In **Nome server**, digitare il nome di server dell'istanza database SQL Server di destinazione. 

   1. Scegliere il tipo di autenticazione appropriato. Digitare un nome utente e una password, se necessario. 

   1. Per **Database**, scegliere il nome del database di destinazione, oppure scegliere **Nuovo** per creare un nuovo database per i dati esportati. 

      Se si sceglie **Nuovo**, consultare [Crea database](http://msdn.microsoft.com/en-us/library/ms183323%28v=sql.110%29.aspx) nella documentazione di SQL Server per dettagli sulle informazioni di database da fornire.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Copia tabella o query**, scegliere **Copia i dati da una o più tabelle o viste** oppure **Scrivi una query per specificare i dati da trasferire**. Scegli **Next (Successivo)**. 

1. Se si sceglie **Scrivi una query per specificare i dati da trasferire**, viene visualizzata la pagina **Impostazione query di origine**. Digitare o incollare una query SQL, quindi scegliere **Analizza** per verificarla. Dopo la convalida della query, scegliere **Avanti**. 

1. Nella pagina **Seleziona tabelle e viste di origine**, procedere come segue:

   1. Selezionare le tabelle e le viste da esportare oppure verificare che la query fornita sia selezionata.

   1. Scegliere **Modifica mapping** e specificare le informazioni di mapping delle colonne e di database. Per ulteriori informazioni, consulta [Mapping colonne](http://msdn.microsoft.com/en-us/library/ms189660%28v=sql.110%29.aspx) nella documentazione di SQL Server. 

   1. (Facoltativo) Per visualizzare un'anteprima dei dati da esportare, selezionare la tabella, la vista o la query, quindi scegliere **Anteprima**.

   1. Scegli **Next (Successivo)**.

1. Nella pagina **Esegui pacchetto**, verificare che **Esegui immediatamente** sia selezionato. Scegli **Next (Successivo)**. 

1. Nella pagina **Completamento della procedura guidata**, verificare che le informazioni di esportazione dei dati siano quelle previste. Scegli **Fine**. 

1. Nella pagina **Esecuzione completata**, scegliere **Chiudi**. 

### Procedura guidata Genera e pubblica script e utilità bcp di SQL Server
<a name="SQLServer.Procedural.Exporting.SSGPSW"></a>

Puoi utilizzare la procedura guidata Genera e pubblica script di SQL Server per creare script per un intero database o per soltanto alcuni oggetti selezionati. Puoi eseguire questi script su un'istanza database SQL Server di destinazione per ricreare gli oggetti con script. Successivamente, puoi utilizzare l'utilità bcp per esportare in bulk i dati degli oggetti selezionati nell'istanza database di destinazione. Questa scelta è preferibile se intendi spostare un intero database (con oggetti che non siano tabelle) o grandi quantità di dati tra due istanze database SQL Server. Per una descrizione completa della sintassi della riga di comando di bcp, consulta [Utilità bcp](http://msdn.microsoft.com/en-us/library/ms162802%28v=sql.110%29.aspx) nella documentazione di Microsoft SQL Server. 

La procedura guidata Genera e pubblica script di SQL Server è disponibile come parte di Microsoft SQL Server Management Studio. Il client SQL Server grafico è incluso in tutte le edizioni di Microsoft SQL Server ad eccezione di Express Edition. SQL Server Management Studio è disponibile solo come applicazione basata su Windows. SQL Server Management Studio Express è fornito da Microsoft come [download gratuito](http://www.microsoft.com/en-us/search/Results.aspx?q=sql%20server%20management%20studio). 

**Per esportare dati mediante la procedura guidata Genera e pubblica script e l'utilità bcp di SQL Server**

1. In SQL Server Management Studio, connettersi all'istanza database RDS for SQL Server. Per informazioni dettagliate su come eseguire questa operazione, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

1. In **Esplora oggetti**, espandere il nodo **Database** e selezionare il database di cui si intende creare lo script. 

1. Seguire le istruzioni in [Procedura guidata Genera e pubblica script](http://msdn.microsoft.com/en-us/library/bb895179%28v=sql.110%29.aspx) nella documentazione di SQL Server per creare un file di script.

1. In SQL Server Management Studio, connettersi all'istanza database SQL Server di destinazione.

1. Con l'istanza database SQL Server di destinazione selezionata in **Object Explorer** (Esplora oggetti), seleziona **Open** (Apri) dal menu **File**, quindi seleziona **File** e apri il file di script. 

1. Se si è eseguito lo script dell'intero database, esaminare l'istruzione CREATE DATABASE nello script. Assicurarsi che il database venga creato nella posizione e con i parametri desiderati. Per ulteriori informazioni, consulta [CREATE DATABASE](http://msdn.microsoft.com/en-us/library/ms176061%28v=sql.110%29.aspx) nella documentazione di SQL Server. 

1. Se si creano utenti di database nello script, verificare se esistono account di accesso server sull'istanza database di destinazione per quegli utenti. In caso contrario, creare degli account di accesso per tali utenti, altrimenti i comandi con script per la creazione di utenti di database non riescono. Per ulteriori informazioni, consulta [Creazione di un account di accesso](http://msdn.microsoft.com/en-us/library/aa337562%28v=sql.110%29.aspx) nella documentazione di SQL Server.

1. Scegliere **\$1Execute** nel menu Editor SQL per eseguire il file di script e creare oggetti di database. Al termine dello script, verificare che tutti gli oggetti di database esistano come previsto.

1. Utilizza l'utilità bcp per esportare i dati dall'istanza database RDS for SQL Server in file. Aprire un prompt dei comandi e digitare il comando seguente.

   ```
   bcp database_name.schema_name.table_name out data_file -n -S aws_rds_sql_endpoint -U username -P password
   ```

   Il codice precedente include le seguenti opzioni:
   + *table\$1name* è il nome di una delle tabelle che è stata ricreata nel database di destinazione e che ora si intende popolare con dati. 
   + *data\$1file* è il percorso completo e il nome del file di dati da creare.
   + `-n` specifica che la copia bulk utilizza i tipi di dati nativi dei dati da copiare.
   + `-S` specifica l'istanza database SQL Server da cui eseguire l'esportazione.
   + `-U` specifica il nome utente da utilizzare durante la connessione all'istanza database SQL Server.
   + `-P` specifica la password per l'utente specificato da `-U`.

   Di seguito viene illustrato un esempio del comando . 

   ```
   bcp world.dbo.city out C:\Users\JohnDoe\city.dat -n -S sql-jdoe.1234abcd.us-west-2.rds.amazonaws.com,1433 -U JohnDoe -P ClearTextPassword
   ```

   Ripetere questo passaggio fino ad avere file di dati per tutte le tabelle da esportare. 

1. Preparare l'istanza database di destinazione per l'importazione bulk dei dati seguendo le istruzioni contenute in [Prepararsi all'importazione bulk dei dati](http://msdn.microsoft.com/en-us/library/ms189989%28v=sql.110%29.aspx) nella documentazione di SQL Server. 

1. Decidere il metodo di importazione bulk da utilizzare dopo aver preso in considerazione le prestazioni e altri problemi descritti in [Informazioni sulle operazioni di importazione ed esportazione bulk](http://msdn.microsoft.com/en-us/library/ms187042%28v=sql.105%29.aspx) nella documentazione di SQL Server. 

1. Importare in blocco i dati dai file di dati creati utilizzando l'utilità bcp. Per fare ciò, seguire le istruzioni contenute in [Importare ed esportare dati bulk con bcp](http://msdn.microsoft.com/en-us/library/aa337544%28v=sql.110%29.aspx) oppure nella sezione relativa all'[importazione di dati bulk utilizzando BULK INSERT o OPENROWSET(BULK...)](http://msdn.microsoft.com/en-us/library/ms175915%28v=sql.110%29.aspx) nella documentazione di SQL Server, a seconda del metodo di importazione scelto nella fase 11. 

# Utilizzo dell’utilità BCP di Linux per importare ed esportare dati
<a name="SQLServer.Procedural.Importing.BCP.Linux"></a>

L’utilità BCP (Bulk Copy Program) offre un modo efficiente per trasferire grandi quantità di dati tra l’istanza database RDS per SQL Server e i file di dati. Puoi utilizzare BCP da ambienti Linux per eseguire operazioni sui dati in blocco e usufruire così di utili funzionalità per la migrazione dei dati, i processi ETL e i trasferimenti periodici di dati.

BCP supporta sia l’importazione di dati da file in tabelle SQL Server sia l’esportazione di dati da tabelle SQL Server in file. Questa utilità è particolarmente efficace per il trasferimento di dati strutturati in vari formati, inclusi i file di testo delimitati.

## Prerequisiti
<a name="SQLServer.Procedural.Importing.BCP.Linux.Prerequisites"></a>

Prima di utilizzare BCP con l’istanza database RDS per SQL Server da un ambiente Linux, assicurati di disporre di quanto segue:
+ Un ambiente Linux con connettività di rete all’istanza database RDS per SQL Server
+ Strumenti a riga di comando di Microsoft SQL Server installati nel sistema Linux, tra cui:
  + sqlcmd: strumento per query a riga di comando di SQL Server
  + bcp: utilità Bulk Copy Program
+ Credenziali valide per l’istanza database RDS per SQL Server
+ Accesso alla rete configurato tramite gruppi di sicurezza per consentire connessioni sulla porta di SQL Server (in genere, la 1433)
+ Autorizzazioni di database appropriate per le operazioni da eseguire

## Installazione degli strumenti a riga di comando di SQL Server su Linux
<a name="SQLServer.Procedural.Importing.BCP.Linux.Installing"></a>

Per utilizzare BCP da Linux, è necessario installare gli strumenti a riga di comando di Microsoft SQL Server. Per istruzioni di installazione dettagliate per la specifica distribuzione Linux, consulta la seguente documentazione Microsoft:
+ [Install sqlcmd and bcp the SQL Server command-line tools on Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools)
+ [bcp utility](https://docs.microsoft.com/en-us/sql/tools/bcp-utility): informazioni di riferimento complete per l’utilità BCP

Dopo l’installazione, assicurati che gli strumenti siano disponibili nella variabile PATH eseguendo quanto segue:

```
bcp -v
sqlcmd -?
```

## Esportazione di dati da Amazon RDS per SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting"></a>

Puoi utilizzare BCP per esportare dati dall’istanza database RDS per SQL Server in file sul sistema Linux. Questa funzionalità è utile per creare backup, eseguire l’analisi dei dati o preparare i dati per la migrazione.

### Sintassi di base per l’esportazione
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic"></a>

Di seguito è riportata la sintassi di base per l’esportazione di dati tramite BCP:

```
bcp database.schema.table out output_file -S server_name -U username -P password [options]
```

Dove:
+ `database.schema.table`: il nome completo della tabella
+ `output_file`: il percorso e il nome del file di output
+ `server_name`: l’endpoint di RDS per SQL Server
+ `username`: il nome utente del database
+ `password`: la password del database

### Esempio di esportazione
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example"></a>

L’esempio seguente esporta i dati da una tabella denominata `customers` nel database `sales`:

```
bcp sales.dbo.customers out /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n"
```

Questo comando esegue le seguenti operazioni:
+ Esporta i dati dalla tabella `customers`.
+ Salva l’output in `/home/user/customers.txt`.
+ Utilizza il formato carattere (`-c`).
+ Utilizza la barra verticale (\$1) come delimitatore di campo (`-t "|"`).
+ Utilizza il carattere di nuova riga come delimitatore di riga (`-r "\n"`).

## Importazione di dati in RDS per SQL Server
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing"></a>

Puoi utilizzare BCP per importare dati da file sul sistema Linux nell’istanza database RDS per SQL Server. Questa funzionalità è utile per la migrazione dei dati, il caricamento dei dati di test o gli aggiornamenti periodici dei dati.

### Sintassi di base per l’importazione
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic"></a>

Di seguito è riportata la sintassi di base per l’importazione di dati tramite BCP:

```
bcp database.schema.table in input_file -S server_name -U username -P password [options]
```

Dove:
+ `database.schema.table`: il nome completo della tabella di destinazione
+ `input_file`: il percorso e il nome del file di input
+ `server_name`: l’endpoint di RDS per SQL Server
+ `username`: il nome utente del database
+ `password`: la password del database

### Esempio di importazione
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Example"></a>

L’esempio seguente importa i dati da un file in una tabella denominata `customers`:

```
bcp sales.dbo.customers in /home/user/customers.txt \
    -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \
    -U admin \
    -P mypassword \
    -c \
    -t "|" \
    -r "\n" \
    -b 1000
```

Questo comando esegue le seguenti operazioni:
+ Importa i dati nella tabella `customers`.
+ Legge i dati da `/home/user/customers.txt`.
+ Utilizza il formato carattere (`-c`).
+ Utilizza la barra verticale (\$1) come delimitatore di campo (`-t "|"`).
+ Utilizza il carattere di nuova riga come delimitatore di riga (`-r "\n"`).
+ Elabora i dati in batch di 1.000 righe (`-b 1000`).

## Opzioni di BCP comuni
<a name="SQLServer.Procedural.Importing.BCP.Linux.Options"></a>

BCP offre numerose opzioni per controllare la formattazione e il comportamento di trasferimento dei dati. Nella seguente tabella sono descritte le opzioni più utilizzate:


| Opzione | Descrizione | 
| --- | --- | 
| -c | Utilizza il tipo di dati carattere per tutte le colonne | 
| -n | Utilizza i tipi di dati nativi del database | 
| -t | Specifica il delimitatore di campo (il valore predefinito è tab) | 
| -r | Specifica il delimitatore di riga (il valore predefinito è newline) | 
| -b | Specifica la dimensione del batch per le operazioni in blocco | 
| -F | Specifica la prima riga da esportare o importare | 
| -L | Specifica l’ultima riga da esportare o importare | 
| -e | Specifica un file di errore per acquisire le righe rifiutate | 
| -f | Specifica un file di formato per la formattazione dei dati | 
| -q | Utilizza identificatori tra virgolette per i nomi degli oggetti | 

## Best practice e considerazioni
<a name="SQLServer.Procedural.Importing.BCP.Linux.BestPractices"></a>

Quando utilizzi BCP con RDS per SQL Server da Linux, tieni presenti le seguenti best practice:
+ **Utilizza l’elaborazione in batch**: per set di dati di grandi dimensioni, utilizza l’opzione `-b` per elaborare i dati in batch. In questo modo, puoi ottenere prestazioni più efficienti e un migliore ripristino da errori.
+ **Gestisci gli errori in modo corretto**: utilizza l’opzione `-e` per acquisire le informazioni sugli errori e le righe rifiutate in un file separato per l’analisi.
+ **Scegli i formati di dati appropriati**: utilizza il formato carattere (`-c`) per la compatibilità multipiattaforma o il formato nativo (`-n`) per prestazioni migliori quando sia l’origine che la destinazione sono SQL Server.
+ **Proteggi le credenziali**: evita di inserire le password direttamente nelle righe di comando. Prendi in considerazione l’opportunità di utilizzare variabili di ambiente o file di configurazione con le autorizzazioni appropriate.
+ **Esegui un test con set di dati di dimensioni ridotte**: prima di elaborare grandi quantità di dati, esegui un test dei comandi di BCP con set di dati di dimensioni più piccole per verificare la formattazione e la connettività.
+ **Monitora la connettività di rete**: assicurati di disporre di connessioni di rete stabili, soprattutto per trasferimenti di dati di grandi dimensioni. Prendi in considerazione la possibilità di utilizzare strumenti quali `screen` o `tmux` per le operazioni di lunga durata.
+ **Convalida l’integrità dei dati**: dopo il trasferimento dei dati, verifica il numero di righe e i dati campione per assicurarti che l’operazione sia stata completata correttamente.

## Risoluzione dei problemi comuni
<a name="SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting"></a>

Nella seguente tabella sono descritti i problemi comuni che potresti riscontrare durante l’utilizzo di BCP da Linux e le relative soluzioni:


| Problema | Soluzione | 
| --- | --- | 
| Timeout di connessione o errori di rete | Verifica l’endpoint di Amazon RDS, le impostazioni del gruppo di sicurezza e la connettività di rete. Assicurati che la porta di SQL Server (in genere, la 1433) sia accessibile dal sistema Linux. | 
| Errori di autenticazione | Verifica il nome utente e la password. Assicurati che l’utente del database disponga delle autorizzazioni appropriate per le operazioni che stai eseguendo. | 
| Errori di formato dei dati | Controlla i delimitatori di campo e di riga. Assicurati che il formato dei dati corrisponda a quello previsto da BCP. Utilizza file di formato per le strutture di dati complesse. | 
| Errori di autorizzazione negata | Assicurati che l’utente del database disponga delle autorizzazioni INSERT per le importazioni o delle autorizzazioni SELECT per le esportazioni nelle tabelle di destinazione. | 
| Problemi di gestione dei file di grandi dimensioni | Utilizza l’elaborazione in batch con l’opzione -b. Prendi in considerazione l’opportunità di suddividere i file di grandi dimensioni in blocchi più piccoli per migliorare le prestazioni e il ripristino da errori. | 
| Problemi di codifica dei caratteri | Assicurati che i file di dati utilizzino una codifica dei caratteri compatibile. Utilizza l’opzione -c per il formato carattere o specifica le tabelle codici appropriate. | 

# 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;
```

# Implementazioni Multi-AZ per Amazon RDS for Microsoft SQL Server
<a name="USER_SQLServerMultiAZ"></a>

Le implementazioni Multi-AZ forniscono alle istanze database maggior disponibilità, longevità dei dati e tolleranza ai guasti. In caso di manutenzione pianificata del database o interruzione non pianificata del servizio, Amazon RDS esegue automaticamente il failover sull'istanza DB up-to-date secondaria. Questa funzionalità consente alle operazioni del database di riprendere velocemente senza intervento manuale. Le istanze primarie e di standby usano lo stesso endpoint, il cui indirizzo di rete fisico passa alla replica secondaria come parte del processo di failover. Non è necessario riconfigurare l'applicazione quando si verifica un failover.

Amazon RDS supporta implementazioni Multi-AZ per Microsoft SQL Server utilizzando SQL Server Database Mirroring (DBM), Always On Availability Groups AGs () o la replica a livello di blocco. Amazon RDS monitora e mantiene lo stato della tua implementazione Multi-AZ. Se si verificano problemi, RDS ripara automaticamente le istanze database non salutari, ristabilisce la sincronizzazione e avvia i failover. Il failover ha luogo solo se le istanze di standby e primarie non sono completamente sincronizzate. Non è necessario gestire nulla.

Quando configuri SQL Server Multi-AZ, RDS configura automaticamente tutti i database sull'istanza per utilizzare DBM o la replica a livello di blocco. AGs Amazon RDS gestisce l'istanza DB principale, quella di controllo e l'istanza database secondaria al posto tuo quando configuri DBM o. AGs Per la replica a livello di blocco, RDS gestisce le istanze DB primarie e secondarie. Poiché la configurazione è automatica, RDS seleziona DBM, Always On AGs o la replica a livello di blocco in base alla versione di SQL Server distribuita.

Amazon RDS supporta Multi-AZ con Always On AGs per le seguenti versioni ed edizioni di SQL Server:
+ SQL Server 2022:
  + Standard Edition
  + Enterprise Edition
+ SQL Server 2019:
  + Standard Edition 15.00.4073.23 e successive
  + Enterprise Edition
+ SQL Server 2017:
  + Standard Edition 14.00.3401.7 e successive
  + Enterprise Edition 14.00.3049.1 e successive
+ SQL Server 2016: Enterprise Edition 13.00.5216.0 e successive

Amazon RDS supporta Multi-AZ con DBM per le seguenti versioni ed edizioni di SQL Server, tranne le versioni di Enterprise Edition annotate in precedenza:
+ SQL Server 2019: Standard Edition 15.00.4043.16
+ SQL Server 2017: edizioni Standard ed Enterprise
+ SQL Server 2016: edizioni Standard ed Enterprise 

Amazon RDS supporta Multi-AZ con replica a livello di blocco per SQL Server 2022 Web Edition 16.00.4215.2 e versioni successive.

**Nota**  
Solo le nuove istanze DB create con 16.00.4215.2 o versioni successive supportano implementazioni Multi-AZ con replica a livello di blocco. Le seguenti restrizioni si applicano alle istanze esistenti di SQL Server 2022 Web Edition:  
Per le istanze esistenti nella versione 16.00.4215.2, è necessario ripristinare uno snapshot su una nuova istanza con la stessa versione secondaria o superiore per abilitare la replica a livello di blocco.
Le istanze Web di SQL Server 2022 con una versione secondaria precedente possono essere aggiornate alla versione secondaria 16.00.4215.2 o superiore per consentire la replica a livello di blocco.

È possibile utilizzare la seguente query SQL per determinare se l'istanza DB di SQL Server è Single-AZ, Multi-AZ con DBM o Multi-AZ con Always On. AGs Questa query non si applica alle distribuzioni Multi-AZ su SQL Server Web Edition.

```
SELECT CASE WHEN dm.mirroring_state_desc IS NOT NULL THEN 'Multi-AZ (Mirroring)'
    WHEN dhdrs.group_database_id IS NOT NULL THEN 'Multi-AZ (AlwaysOn)'
    ELSE 'Single-AZ'
    END 'high_availability'
FROM sys.databases sd
LEFT JOIN sys.database_mirroring dm ON sd.database_id = dm.database_id
LEFT JOIN sys.dm_hadr_database_replica_states dhdrs ON sd.database_id = dhdrs.database_id AND dhdrs.is_local = 1
WHERE DB_NAME(sd.database_id) = 'rdsadmin';
```

L'output è simile a quello riportato di seguito.

```
high_availability
Multi-AZ (AlwaysOn)
```

## Aggiunta di Multi-AZ a un'istanza database di Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Adding"></a>

Quando si crea una nuova istanza DB di SQL Server utilizzando Console di gestione AWS, è possibile aggiungere Multi-AZ con Database Mirroring (DBM), Always On o replica a livello di blocco. AGs **È possibile farlo scegliendo **Sì (Mirroring/Always On/Block Level Replication**) dalla distribuzione Multi-AZ.** Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).

**Quando si modifica un'istanza DB di SQL Server esistente utilizzando la console, è possibile aggiungere Multi-AZ con DBM o la replica a livello di blocco scegliendo **Sì (Mirroring/Always On/Block Level Replication) dalla distribuzione** **Multi-AZ** nella pagina Modifica istanza DB. AGs** Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

**Nota**  
Se l'istanza DB esegue Database Mirroring (DBM), non Always On Availability Groups (AGs), potrebbe essere necessario disabilitare l'ottimizzazione in memoria prima di aggiungere Multi-AZ. Disabilitare l’ottimizzazione in memoria con DBM prima di aggiungere Multi-AZ se l’istanza database esegue SQL Server 2016 o 2017 Enterprise Edition e l’ottimizzazione in memoria è abilitata.   
Se l'istanza DB è in esecuzione AGs o esegue una replica a livello di blocco per SQL Server Web Editions, non è necessario questo passaggio. 

## Rimozione di Multi-AZ da un'istanza database Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Removing"></a>

Quando si modifica un'istanza DB di SQL Server esistente utilizzando Console di gestione AWS, è possibile rimuovere Multi-AZ con DBM o la replica a AGs livello di blocco. **È possibile eseguire questa operazione scegliendo **No (Mirroring/Always On /Block Level Replication)** dalla **distribuzione Multi-AZ** nella pagina Modifica istanza DB.** Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

# Limitazioni, note e suggerimenti per l'implementazione di Multi-AZ di Microsoft SQL Server
<a name="USER_SQLServerMultiAZ.Recommendations"></a>

Di seguito sono riportate alcune limitazioni quando si utilizzano le implementazioni Multi-AZ su istanze database RDS per SQL Server:
+ Multi-AZ tra regioni non è supportata.
+ L'arresto di un'istanza database RDS per SQL Server in un'implementazione multi-AZ non è supportato.
+ Non è possibile configurare l'istanza database secondaria per accettare attività di lettura del database.
+ Multi-AZ con Always On Availability Groups (AGs) supporta l'ottimizzazione in memoria.
+ Multi-AZ con Always On Availability Groups (AGs) non supporta l'autenticazione Kerberos per il listener del gruppo di disponibilità. Questo perché il listener non dispone di un Service Principal Name (SPN).
+ Multi-AZ con replica a livello di blocco è attualmente supportato solo per le istanze di SQL Server Web Edition.
+ Non è possibile rinominare un database su un'istanza database di SQL Server presente in un'implementazione Multi-AZ di SQL Server. Se è necessario rinominare un database su tale istanza, disattiva prima Multi-AZ per l'istanza database, quindi rinomina il database. Infine, attiva di nuovo Multi-AZ per l'istanza database. 
+ Si possono ripristinare solo le istanze database Multi-AZ di cui è stato eseguito il backup con il modello di recupero Full.
+ Le implementazioni multi-AZ hanno un limite di 10.000 processi di SQL Server Agent.

  Se hai bisogno di un limite più alto, richiedi un aumento contattando. Supporto Aprire la pagina del [Centro di supporto Supporto AWS](https://console.aws.amazon.com/support/home#/) effettuando l'accesso se necessario, quindi selezionare **Crea caso**. Selezionare **Service limit increase (Aumento limiti del servizio)**. Compilare e inviare il modulo.
+ Non è possibile disporre di un database offline su un’istanza database SQL Server presente in un’implementazione Multi-AZ SQL Server.
+ RDS per SQL Server non replica le autorizzazioni del database MSDB nell’istanza secondaria. Se sono necessarie queste autorizzazioni sull’istanza secondaria, occorre ricrearle manualmente.
+ Le metriche del volume non sono disponibili per l'host secondario dell'istanza che utilizza la replica a livello di blocco.

Di seguito sono riportate alcune note quando si utilizzano le implementazioni Multi-AZ su istanze database RDS per SQL Server:
+ Amazon RDS espone l'endpoint [listener del gruppo di AGs disponibilità](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover) Always On. L'endpoint è visibile nella console e viene restituito dall'operazione API `DescribeDBInstances` come una voce nel campo endpoint.
+ Amazon RDS supporta [i failover di sottoreti multiple del gruppo di disponibilità](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover).
+ Per utilizzare la funzionalità Multi-AZ di SQL Server con un'istanza database SQL Server in un cloud privato virtuale (VPC), crea innanzitutto un gruppo di sottoreti DB con sottoreti in almeno due distinte zone di disponibilità. Quindi assegnare il gruppo di sottoreti DB alla replica primaria dell'istanza database di SQL Server. 
+ Quando un'istanza database viene modificata e impostata come implementazione Multi-AZ, durante la modifica il relativo stato è **Modifica in corso**. Amazon RDS crea l’istanza standby ed esegue un backup dell'istanza database principale. Dopo aver completato il processo, lo stato dell'istanza database primaria diventa **available (disponibile)**.
+ Le implementazioni Multi-AZ gestiscono tutti i database sullo stesso nodo. Se un database nell'host primario esegue il failover, tutti i database di SQL Server eseguono il failover come un'unica unità atomica nell'host di standby. Amazon RDS effettua il provisioning di un nuovo host integro e sostituisce l'host non integro.
+ Multi-AZ con DBM o replica a livello di blocco AGs supporta una singola replica in standby.
+ Utenti, accessi e autorizzazioni vengono automaticamente replicati sulla versione secondaria. Non è necessario ricrearli. I ruoli del server definiti dall'utente vengono replicati in istanze DB che utilizzano la replica Always On AGs o a livello di blocco per le implementazioni Multi-AZ. 
+ Nelle distribuzioni Multi-AZ, RDS per SQL Server crea accessi a SQL Server per consentire Always On o il mirroring del database. AGs RDS crea gli accessi con lo schema seguente, `db_<dbiResourceId>_node1_login`, `db_<dbiResourceId>_node2_login` e `db_<dbiResourceId>_witness_login`.
+ RDS per SQL Server crea un accesso SQL Server per consentire l’accesso alle repliche di lettura. RDS crea un accesso con lo schema seguente, `db_<readreplica_dbiResourceId>_node_login`.
+ Nelle distribuzioni Multi-AZ, i processi di SQL Server Agent vengono replicati dall'host principale all'host secondario quando la funzionalità di replica del processo è attivata. Per ulteriori informazioni, consulta [Attivazione della replica di processo SQL Server Agent](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).
+ In un'implementazione standard dell'istanza database in una zona di disponibilità singola, è possibile osservare un aumento della latenza a causa dalle replica sincrona dei dati.
+ I tempi di failover sono influenzati dal tempo necessario per completare il processo di recupero. Le transazioni di grandi dimensioni aumentano il tempo di failover.
+ Nelle distribuzioni di SQL Server Multi-AZ, riavviare con failover, riavvia solo l'istanza database primaria. Dopo aver eseguito il failover, l'istanza database primaria diventa la nuova istanza database secondaria. I parametri potrebbero non essere aggiornati per istanze Multi-AZ. Per il riavvio senza failover, le istanze database primarie e secondarie vengono riavviate e i parametri vengono aggiornati dopo il riavvio. Se l'istanza database non risponde, si consiglia di riavviare senza failover.

Di seguito sono riportate alcune raccomandazioni quando si utilizzano le implementazioni Multi-AZ su RDS per le istanze database di Microsoft SQL Server:
+ Per database utilizzati in produzione o in preproduzione, raccomandiamo quanto segue:
  + Implementazioni Multi-AZ per l'alta disponibilità
  + "Provisioned IOPS" per prestazioni veloci e coerenti
  + "Memoria ottimizzata" anziché "Uso generale"
+ Non è possibile selezionare la zona di disponibilità per l'istanza secondaria, quindi tieni questo a mente quando distribuisci gli host delle applicazioni. Il tuo database potrebbe non riuscire su un'altra zona di disponibilità e gli host delle applicazioni potrebbero non essere nella stessa zona di disponibilità del database. Per questo motivo, si consiglia di bilanciare gli host delle applicazioni in tutta la regione specificata. AZs AWS 
+ Per ottenere prestazioni ottimali, non attivate il mirroring del database, l'opzione Always On AGs o la replica a livello di blocco durante un'operazione di caricamento di dati di grandi dimensioni. Se vuoi caricare i dati il più rapidamente possibile, termina il caricamento dei dati prima di convertire l'istanza database in un'implementazione Multi-AZ. 
+ Le applicazioni che accedono ai database SQL Server devono avere una gestione delle eccezioni che rileva gli errori di connessione. Il seguente esempio di codice mostra un try/catch blocco che rileva un errore di comunicazione. In questo esempio, l'istruzione `break` esce dal ciclo `while` se la connessione ha esito positivo, ma ritenta fino a 10 volte se viene generata un'eccezione.

  ```
  int RetryMaxAttempts = 10;
  int RetryIntervalPeriodInSeconds = 1;
  int iRetryCount = 0;
  while (iRetryCount < RetryMaxAttempts)
  {
     using (SqlConnection connection = new SqlConnection(DatabaseConnString))
     {
        using (SqlCommand command = connection.CreateCommand())
        {
           command.CommandText = "INSERT INTO SOME_TABLE VALUES ('SomeValue');";
           try
           {
              connection.Open();
              command.ExecuteNonQuery();
              break;
           }
           catch (Exception ex) 
           {
              Logger(ex.Message);
              iRetryCount++;
           }
           finally {
              connection.Close();
           }
        }
     }
     Thread.Sleep(RetryIntervalPeriodInSeconds * 1000);
  }
  ```
+ Non utilizzate il `Set Partner Off` comando quando lavorate con istanze Multi-AZ che utilizzano DBM o. AGs Questo comando non è supportato sulle istanze che utilizzano la replica a livello di blocco. Ad esempio, non effettuare le seguenti operazioni. 

  ```
  --Don't do this
  ALTER DATABASE db1 SET PARTNER off
  ```
+ Non impostare la modalità di ripristino su `simple`. Ad esempio, non effettuare le seguenti operazioni. 

  ```
  --Don't do this
  ALTER DATABASE db1 SET RECOVERY simple
  ```
+ Non utilizzare il `DEFAULT_DATABASE` parametro per creare nuovi accessi su istanze DB Multi-AZ a meno che non si utilizzi la replica a livello di blocco per l'elevata disponibilità, poiché queste impostazioni non possono essere applicate al mirror di standby. Ad esempio, non effettuare le seguenti operazioni. 

  ```
  --Don't do this
  CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]
  ```

  Inoltre, non fare quanto segue.

  ```
  --Don't do this
  ALTER LOGIN [test_dba] WITH DEFAULT_DATABASE=[db3]
  ```

# Determinazione della posizione della versione secondaria
<a name="USER_SQLServerMultiAZ.Location"></a>

Puoi determinare la posizione della replica secondaria usando la Console di gestione AWS. È necessario conoscere la posizione della versione secondaria se imposti l'istanza database primaria in un VPC. 

![\[AZ secondario\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQLSvr-MultiAZ.png)


È inoltre possibile visualizzare la zona di disponibilità del secondario utilizzando il AWS CLI comando `describe-db-instances` o l'operazione `DescribeDBInstances` API RDS. L'output mostra la zona di disponibilità secondaria in cui si trova il mirroring di standby. 

# Migrazione di mirroring di database a gruppi di disponibilità Always On
<a name="USER_SQLServerMultiAZ.Migration"></a>

Nella versione 14.00.3049.1 di Microsoft SQL Server Enterprise Edition, i gruppi di disponibilità Always On sono abilitati per impostazione predefinita.

Per migrare il mirroring di database a gruppi di disponibilità Always On, verifica innanzitutto la versione di cui disponi. Se utilizzi un'istanza database con una versione precedente a Enterprise Edition 13.00.5216.0, modifica l'istanza per applicarla alla patch 13.00.5216.0 o successive. Se utilizzi un'istanza database con una versione precedente a Enterprise Edition 14.00.3049.1, modifica l'istanza per applicarla alla patch 14.00.3049.1 o successive.

Se desideri aggiornare un'istanza database sottoposta a mirroring per utilizzare i gruppi di disponibilità, esegui prima l'aggiornamento, modifica l'istanza per rimuovere Multi-AZ e quindi modificala nuovamente per aggiungere Multi-AZ. Ciò converte la tua istanza per usare i gruppi di disponibilità Always On.

# Funzionalità opzionali per Microsoft SQL Server su Amazon RDS
<a name="User.SQLServer.AdditionalFeatures"></a>

Nelle sezioni di seguito sono disponibili informazioni sull'aumento delle istanze Amazon RDS che eseguono il motore database di Microsoft SQL Server.

**Topics**
+ [Utilizzo della policy sulle password per gli accessi di SQL Server in RDS per SQL Server](SQLServer.Concepts.General.PasswordPolicy.Using.md)
+ [Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md)
+ [Utilizzo di Database Mail su Amazon RDS for SQL Server](SQLServer.DBMail.md)
+ [Supporto dell'archivio istanze per il database tempdb su Amazon RDS for SQL Server](SQLServer.InstanceStore.md)
+ [Utilizzo di eventi estesi con Amazon RDS per Microsoft SQL Server](SQLServer.ExtendedEvents.md)
+ [Accesso ai backup dei log delle transazioni con RDS per SQL Server](USER.SQLServer.AddlFeat.TransactionLogAccess.md)

# Utilizzo della policy sulle password per gli accessi di SQL Server in RDS per SQL Server
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS consente di impostare la policy sulle password per l’istanza database Amazon RDS che esegue Microsoft SQL Server. Questa funzionalità è utile per impostare requisiti di complessità, lunghezza e blocco per gli accessi che utilizzano l’autenticazione di SQL Server per autenticarsi all’istanza database.

## Termini chiave
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**Accesso**  
In SQL Server, un principale di livello server in grado di autenticarsi a un’istanza database è definita **accesso**. Altri motori di database potrebbero fare riferimento a questo principale con il termine *utente*. In RDS per SQL Server, un accesso può autenticarsi utilizzando l’autenticazione di SQL Server o quella di Windows.

**Accesso di SQL Server**  
Per accesso di SQL Server si intende un account che per autenticarsi utilizza l’autenticazione di SQL Server specificando un nome utente e una password. La policy sulle password può essere configurata tramite i parametri del database solo per gli accessi di SQL Server.

**Accesso di Windows**  
Per accesso di Windows si intende un account basato su un principale di Windows che per autenticarsi utilizza l’autenticazione di Windows. La policy sulle password per gli accessi di Windows può essere configurata in Active Directory. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

## Abilitazione e disabilitazione della policy per ogni accesso
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 Ogni accesso di SQL Server è dotato di flag per `CHECK_POLICY` e `CHECK_EXPIRATION`. Per impostazione predefinita, i nuovi accessi vengono creati con `CHECK_POLICY` impostato su `ON` e `CHECK_EXPIRATION` impostato su `OFF`. 

Se per un accesso è abilitato `CHECK_POLICY`, RDS per SQL Server convalida la password in base ai requisiti di complessità e lunghezza minima. Sono applicabili anche policy di blocco. Di seguito è riportato un esempio di istruzione T-SQL per abilitare `CHECK_POLICY` e `CHECK_EXPIRATION`: 

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

Se `CHECK_EXPIRATION` è abilitato, le password sono soggette a policy di validità. Di seguito è riportata l’istruzione T-SQL per verificare se `CHECK_POLICY` e `CHECK_EXPIRATION` sono impostati:

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## Parametri della policy sulle password
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

Tutti i parametri della policy sulle password sono dinamici e non richiedono il riavvio del database per diventare effettivi. Nella seguente tabella sono elencati i parametri del database che è possibile impostare per modificare la policy sulle password per gli accessi di SQL Server:


****  

| Parametro DB | Descrizione | Valori consentiti | Valore predefinito | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | Durante la creazione o la modifica delle password per gli accessi di SQL Server devono essere soddisfatti i requisiti di complessità delle password. Di seguito sono riportati i vincoli da rispettare: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | Il numero minimo di caratteri necessari in una password per un accesso di SQL Server. | 0-14 | 0 | 
| rds.password\$1min\$1age | Il numero minimo di giorni in cui la password di un accesso di SQL Server deve essere utilizzata prima che l’utente possa cambiarla. Se il valore è 0, le password possono essere modificate immediatamente. | 0-998 | 0 | 
| rds.password\$1max\$1age | Il numero massimo di giorni in cui è possibile utilizzare la password di un accesso di SQL Server, trascorsi i quali l’utente è tenuto a cambiarla. Se il valore è 0, le password non scadono mai. | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | Il numero di tentativi di accesso consecutivi non riusciti che causano il blocco di un accesso di SQL Server. | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | Il numero di minuti che un accesso di SQL Server bloccato deve attendere prima di essere sbloccato. | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | Il numero di minuti che devono trascorrere dopo un tentativo di accesso non riuscito prima che il contatore dei tentativi di accesso non riusciti venga reimpostato su 0. | 1-60 | 10 | 

**Nota**  
Per ulteriori informazioni sulla policy relativa alle password di SQL Server, consulta la [policy sulle password](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy).   
Le policy relative alla complessità e alla lunghezza minima delle password sono applicabili anche agli utenti di database indipendenti. Per ulteriori informazioni, consulta [Database contenuti](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases).

Per i parametri della policy sulle password sono previsti i seguenti vincoli:
+ Il valore del parametro `rds.password_min_age` deve essere minore del parametro `rds.password_max_age parameter`, a meno che `rds.password_max_age` non sia impostato su 0.
+ Il valore del parametro `rds.password_lockout_reset_counter_after` deve essere minore o uguale a quello del parametro `rds.password_lockout_duration`.
+ Se `rds.password_lockout_threshold` è impostato su 0, `rds.password_lockout_duration` e `rds.password_lockout_reset_counter_after` non sono applicabili.

### Considerazioni per gli accessi esistenti
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

Dopo aver modificato la policy sulle password per un’istanza, le password esistenti per gli accessi **non** vengono valutate retroattivamente rispetto ai nuovi requisiti di complessità e lunghezza. Solo le nuove password vengono convalidate in base alla nuova policy. 

Tuttavia, SQL Server **valuta** le password esistenti in base ai requisiti di validità.

È possibile che le password scadano immediatamente dopo la modifica della policy sulle password. Ad esempio, se per un accesso è abilitato `CHECK_EXPIRATION`, la relativa password è stata modificata l’ultima volta 100 giorni fa e il parametro `rds.password_max_age` viene impostato su 5 giorni, la password scade immediatamente e deve essere cambiata al successivo tentativo di accesso.

**Nota**  
RDS per SQL Server non supporta le policy di cronologia delle password. Tali policy impediscono agli accessi di riutilizzare le password utilizzate in precedenza.

### Considerazioni per le implementazioni Multi-AZ
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

Il contatore dei tentativi di accesso non riusciti e lo stato di blocco per le istanze Multi-AZ non si replicano tra i nodi. Nel caso in cui un accesso venga bloccato durante il failover di un’istanza Multi-AZ, è possibile che risulti già sbloccato sul nuovo nodo.

# Considerazioni sulle password per l’accesso master
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

Quando si crea un’istanza database RDS per SQL Server, la password dell’utente master non viene valutata rispetto alla policy sulle password. Una nuova password master non viene valutata nemmeno quando si eseguono operazioni sull’utente master, in particolare quando si imposta il comando `MasterUserPassword` o `ModifyDBInstance`. In entrambi i casi, anche se si imposta una password per l’utente master che non soddisfa la policy sulle password, l’operazione ha esito positivo. Se la policy non risulta soddisfatta, RDS tenta di generare un evento RDS, consigliando di impostare una password complessa. Fai attenzione a utilizzare solo password complesse per l’utente master. 

Quando la password dell’utente master non soddisfa i requisiti della policy sulle password, RDS tenta di generare i seguenti messaggi di evento:
+ L’utente master è stato creato, ma la password non soddisfa il requisito di lunghezza minima della policy. Prendi in considerazione l’opportunità di utilizzare una password più complessa.
+ L’utente master è stato creato, ma la password non soddisfa il requisito di complessità della policy. Prendi in considerazione l’opportunità di utilizzare una password più complessa.
+ La password dell’utente master è stata reimpostata, ma non soddisfa il requisito di lunghezza minima della policy. Prendi in considerazione l’opportunità di utilizzare una password più complessa.
+ La password dell’utente master è stata reimpostata, ma non soddisfa il requisito di complessità della policy. Prendi in considerazione l’opportunità di utilizzare una password più complessa.

Per impostazione predefinita, l’utente master viene creato con i flag `CHECK_POLICY` e `CHECK_EXPIRATION` impostati su `OFF`. Per applicare la policy delle password all’utente master, è necessario abilitare manualmente questi flag per tale utente dopo la creazione dell’istanza database. Dopo aver abilitato questi flag, modifica la password dell’utente master direttamente in SQL Server (ad esempio, tramite istruzioni T-SQL o SSMS) per convalidare la nuova password rispetto alla policy sulle password.

**Nota**  
Se l’utente master viene bloccato, è possibile sbloccarlo reimpostando la password master tramite il comando `ModifyDBInstance`.

## Modifica della password dell'utente master
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

È possibile modificare la password dell’utente master utilizzando il comando [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html).

**Nota**  
Quando si reimposta la password dell’utente master, RDS reimposta diverse autorizzazioni per tale utente, che potrebbe quindi perdere alcune autorizzazioni. La reimpostazione della password dell’utente master ha anche l’effetto di sbloccare tale utente, se è stato bloccato.

RDS convalida la nuova password dell’utente master e tenta di generare un evento RDS se la password non soddisfa la policy. La password viene comunque impostata, anche se non soddisfa la policy. 

# Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3
<a name="User.SQLServer.Options.S3-integration"></a>

Puoi trasferire i file tra un'istanza database che esegue Amazon RDS for SQL Server e un bucket Amazon S3. In questo modo, puoi utilizzare Amazon S3 con le caratteristiche di SQL Server, come BULK INSERT. Ad esempio, puoi scaricare file .csv, .xml, .txt e altri da Amazon S3 nell'host dell'istanza database e importare i dati da `D:\S3\` nel database. Tutti i file vengono archiviati in `D:\S3\` nell'istanza database.

Si applicano le limitazioni seguenti:

**Nota**  
Il traffico tra l'host RDS e S3 viene instradato attraverso gli endpoint VPC in RDS interno VPCs per tutte le funzionalità di SQL Server che utilizzano S3. Questo traffico non utilizza l’ENI dell’endpoint dell’istanza RDS. Le policy di bucket S3 non possono limitare il traffico RDS in base alle condizioni di rete.
+ I file nella cartella `D:\S3` vengono eliminati nella replica di standby dopo un failover su istanze Multi-AZ. Per ulteriori informazioni, consulta [Limitazioni Multi-AZ per l'integrazione S3](#S3-MAZ).
+ L'istanza DB e il bucket S3 devono trovarsi nella stessa regione. AWS 
+ Se si eseguono più attività di integrazione S3 alla volta, le attività vengono eseguite in sequenza, non in parallelo.
**Nota**  
Le attività di integrazione S3 condividono la stessa coda delle attività di backup e ripristino native. In questa coda possono essere presenti al massimo due attività in esecuzione in qualsiasi momento. Di conseguenza, due attività di backup e ripristino native in esecuzione bloccheranno tutte le attività di integrazione S3.
+ Dovrai riabilitare la caratteristica di integrazione di S3 nelle istanze ripristinate. L'integrazione S3 non viene propagata dall'istanza di origine all'istanza ripristinata. I file in `D:\S3` in un'istanza ripristinata vengono eliminati.
+ Il download nell'istanza database è limitato a 100 file. In altre parole, non possono essere presenti più di 100 file in `D:\S3\`.
+ Per il download sono supportati solo i file senza estensioni di file o con le seguenti estensioni di file: .abf, .asdatabase, .bcp, .configsettings, .csv, .dat, .deploymentoptions, .deploymenttargets, .fmt, .info, .ispac, .lst, .tbl, .txt, .xml, e .xmla.
+ Il bucket S3 deve avere lo stesso proprietario del ruolo correlato AWS Identity and Access Management (IAM). Pertanto, l'integrazione tra account S3 non è supportata.
+ Il bucket S3 non può essere aperto al pubblico.
+ Le dimensioni dei file per i caricamenti da RDS a S3 sono limitate a 50 GB per file.
+ La dimensione dei file per i download da S3 a RDS è limitata al massimo supportato da S3.

**Topics**
+ [Prerequisiti per l'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [Abilitazione dell'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.enabling.md)
+ [Trasferimento di file tra RDS for SQL Server e Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md)
+ [Visualizzazione di file nell'istanza database RDS](Appendix.SQLServer.Options.S3-integration.using.listing-files.md)
+ [Eliminazione di file nell'istanza database RDS](Appendix.SQLServer.Options.S3-integration.using.deleting-files.md)
+ [Monitoraggio dello stato di un'attività di trasferimento di file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md)
+ [Annullamento di un'attività](Appendix.SQLServer.Options.S3-integration.canceltasks.md)
+ [Limitazioni Multi-AZ per l'integrazione S3](#S3-MAZ)
+ [Disabilitazione dell'integrazione di RDS for SQL Server con S3](Appendix.SQLServer.Options.S3-integration.disabling.md)

Per ulteriori informazioni sull'utilizzo dei file in Amazon S3, consulta [Nozioni di base su Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3).

# Prerequisiti per l'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.preparing"></a>

Prima di iniziare, trova o crea il bucket S3 che desideri utilizzare. Quindi, aggiungi le autorizzazioni in modo che l'istanza database RDS possa accedere al bucket S3. Per configurare questo accesso, crea una policy e un ruolo IAM.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.preparing.console"></a>

**Per creare una policy IAM per accedere ad Amazon S3**

1. Nel riquadro di navigazione della [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home), scegliere **Policies (Policy)**.

1. Creare una nuova policy e usare la scheda **Visual editor (Editor visivo)** per le seguenti fasi.

1. Per **Service (Servizio)**, immettere **S3** e scegliere il servizio **S3**.

1. Per **Actions (Operazioni)**, scegliere le seguenti opzioni per concedere l'accesso richiesto dall'istanza database:
   + `ListAllMyBuckets`— richiesto
   + `ListBucket`— richiesto
   + `GetBucketAcl`— richiesto
   + `GetBucketLocation`— richiesto
   + `GetObject` – obbligatorio per il download dei file da S3 a `D:\S3\`
   + `PutObject` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
   + `ListMultipartUploadParts` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
   + `AbortMultipartUpload` – obbligatorio per il caricamento dei file da `D:\S3\` a S3

1. Per **Resources (Risorse)**, le opzioni visualizzate dipendono dalle operazioni scelte nella fase precedente. Potrebbero essere visualizzate le opzioni per **bucket**, **object (oggetto)** o entrambi. Per ognuna di queste opzioni, aggiungere l'Amazon Resource Name (ARN) appropriato.

   Per **bucket**, aggiungere l'ARN per il bucket che si desidera utilizzare. Ad esempio, se il bucket è denominato *amzn-s3-demo-bucket*, impostare l'ARN su `arn:aws:s3:::amzn-s3-demo-bucket`.

   Per **object (oggetto)**, immettere l'ARN per il bucket e scegliere una delle opzioni seguenti:
   + Per concedere l'accesso a tutti i file nel bucket specificato, selezionare **Any (Qualsiasi)** per **Bucket name (Nome bucket)** e **Object name (Nome oggetto)**.
   + Per concedere l'accesso a file o cartelle specifici nel bucket, fornisci ARNs i bucket e gli oggetti specifici a cui desideri che SQL Server acceda. 

1. Seguire le istruzioni indicate nella console fino al termine della creazione della policy.

   Le precedenti sono indicazioni generali per la creazione di una policy. Per istruzioni più dettagliate sulla creazione delle policy IAM, consultare [Creazione di policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l'utente di IAM.*

**Per creare un ruolo IAM che utilizza la policy IAM della procedura precedente**

1. Nel riquadro di navigazione della [console di gestione IAM](https://console.aws.amazon.com/iam/home?#home), scegliere **Roles (Ruoli)**.

1. Creare un nuovo ruolo IAM e scegliere le seguenti opzioni quando vengono visualizzate nella console:
   + **AWSservice**
   + **RDS**
   + **RDS – Add Role to Database (RDS – Aggiungi ruolo al database)**

   Scegliere **Next: Permissions (Successivo: Autorizzazioni)** nella parte inferiore dello schermo.

1. Per **Attach permissions policies (Collega policy di autorizzazioni)**, immettere il nome della policy IAM precedentemente creata. Scegliere quindi la policy dall'elenco.

1. Seguire le istruzioni indicate nella console fino al termine della creazione del ruolo.

   Le precedenti sono indicazioni generali per la configurazione di un ruolo. Per istruzioni più dettagliate sulla creazione dei ruoli, consultare [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) nella *Guida per l'utente di IAM.*

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.preparing.CLI"></a>

Per concedere ad Amazon RDS l'accesso a un bucket Amazon S3, utilizza la seguente procedura:

1. Creare una policy IAM che conceda ad Amazon RDS l'accesso a un bucket S3.

1. Creare un ruolo IAM che Amazon RDS può assumere per conto dell'utente per accedere ai bucket S3.

   Per ulteriori informazioni, consulta la pagina relativa alla [creazione di un ruolo per delegare le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella *Guida per l'utente IAM*.

1. Collegare la policy IAM al ruolo IAM creato.

**Per creare la policy IAM**

Includere le operazioni appropriate per garantire l'accesso richiesto dall'istanza database:
+ `ListAllMyBuckets`— obbligatorio
+ `ListBucket`— richiesto
+ `GetBucketAcl`— richiesto
+ `GetBucketLocation`— richiesto
+ `GetObject` – obbligatorio per il download dei file da S3 a `D:\S3\`
+ `PutObject` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
+ `ListMultipartUploadParts` – obbligatorio per il caricamento dei file da `D:\S3\` a S3
+ `AbortMultipartUpload` – obbligatorio per il caricamento dei file da `D:\S3\` a S3

1. Il AWS CLI comando seguente crea una policy IAM denominata `rds-s3-integration-policy` con queste opzioni. Concede l'accesso a un bucket denominato *amzn-s3-demo-bucket*.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws iam create-policy \
   	 --policy-name rds-s3-integration-policy \
   	 --policy-document '{
   	        "Version": "2012-10-17",		 	 	 
   	        "Statement": [
   	            {
   	                "Effect": "Allow",
   	                "Action": "s3:ListAllMyBuckets",
   	                "Resource": "*"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:ListBucket",
   	                    "s3:GetBucketAcl",
   	                    "s3:GetBucketLocation"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
   	            },
   	            {
   	                "Effect": "Allow",
   	                "Action": [
   	                    "s3:GetObject",
   	                    "s3:PutObject",
   	                    "s3:ListMultipartUploadParts",
   	                    "s3:AbortMultipartUpload"
   	                ],
   	                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
   	            }
   	        ]
   	    }'
   ```

   Per Windows:

   Assicurarsi di cambiare i caratteri di fine riga con quelli supportati dall'interfaccia in uso (`^` al posto di `\`). Inoltre, in Windows, è necessario applicare a tutte le doppie virgolette il carattere di escape `\`. Per evitare l'uso del carattere di escape per le virgolette in JSON, è possibile salvarlo in un file e passarlo come parametro. 

   Per prima cosa creare il file `policy.json` con la seguente policy di autorizzazione:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:ListAllMyBuckets",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketACL",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
           }
       ]
   }
   ```

------

   Usare il comando seguente per creare la policy:

   ```
   aws iam create-policy ^
        --policy-name rds-s3-integration-policy ^
        --policy-document file://file_path/assume_role_policy.json
   ```

1. Dopo aver creato la policy, annotarne l'Amazon Resource Name (ARN). L'ARN sarà necessario in una fase successiva.

**Per creare il ruolo IAM**
+ Il AWS CLI comando seguente crea il ruolo `rds-s3-integration-role` IAM per questo scopo.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole"
  	       }
  	     ]
  	   }'
  ```

  Per Windows:

  Assicurarsi di cambiare i caratteri di fine riga con quelli supportati dall'interfaccia in uso (`^` al posto di `\`). Inoltre, in Windows, è necessario applicare a tutte le doppie virgolette il carattere di escape `\`. Per evitare l'uso del carattere di escape per le virgolette in JSON, è possibile salvarlo in un file e passarlo come parametro. 

  Per prima cosa creare il file `assume_role_policy.json` con la seguente policy:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Usare il comando seguente per creare il ruolo IAM:

  ```
  aws iam create-role ^
       --role-name rds-s3-integration-role ^
       --assume-role-policy-document file://file_path/assume_role_policy.json
  ```  
**Example di utilizzare la chiave del contesto delle condizioni globale per creare il ruolo IAM**  

  Si consiglia di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle policy basate sulle risorse per limitare le autorizzazioni del servizio a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

  Puoi usare le chiavi di contesto delle condizioni globali e avere il valore `aws:SourceArn` che contiene l'ID dell'account. In questo caso, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione della policy.
  + Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa.
  + Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

  Nella policy, assicurati di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'Amazon Resource Name (ARN) completo delle risorse che accedono al ruolo. Per l'integrazione con S3, assicurati di includere l'istanza DB ARNs, come mostrato nell'esempio seguente.

  Per Linux, macOS o Unix:

  ```
  aws iam create-role \
  	   --role-name rds-s3-integration-role \
  	   --assume-role-policy-document '{
  	     "Version": "2012-10-17",		 	 	 
  	     "Statement": [
  	       {
  	         "Effect": "Allow",
  	         "Principal": {
  	            "Service": "rds.amazonaws.com"
  	          },
  	         "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                      }
                  }
  	       }
  	     ]
  	   }'
  ```

  Per Windows:

  Aggiungi la chiave di contesto delle condizioni globali a `assume_role_policy.json`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "rds.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier"
                  }
              }
          }
      ]
  }
  ```

------

**Per allegare la policy IAM al ruolo IAM**
+ Il AWS CLI comando seguente collega la policy al ruolo denominato. `rds-s3-integration-role` Sostituire `your-policy-arn` con l'ARN della policy annotato nel passaggio precedente.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws iam attach-role-policy \
  	   --policy-arn your-policy-arn \
  	   --role-name rds-s3-integration-role
  ```

  Per Windows:

  ```
  aws iam attach-role-policy ^
  	   --policy-arn your-policy-arn ^
  	   --role-name rds-s3-integration-role
  ```

# Abilitazione dell'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.enabling"></a>

Nella sezione seguente viene descritto come abilitare l'integrazione di Amazon S3 con Amazon RDS for SQL Server. Per utilizzare l'integrazione di S3, l'istanza database deve essere associata al ruolo IAM precedentemente creato prima di utilizzare il parametro feature-name `S3_INTEGRATION`.

**Nota**  
Per aggiungere un ruolo IAM a un'istanza database, lo stato dell'istanza database deve essere **available (disponibile)**.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.enabling.console"></a>

**Per associare il ruolo IAM all'istanza database**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Scegli il nome dell'istanza database RDS for SQL Server per visualizzarne i dettagli.

1. Nella sezione **Manage IAM roles (Gestisci ruoli IAM)** della scheda **Connectivity & security (Connettività e sicurezza)**, selezionare il ruolo da aggiungere per **Add IAM roles to this instance (Aggiungi ruoli IAM a questa istanza)**.

1. Per **Feature (Caratteristica)**, selezionare **S3\$1INTEGRATION**.  
![\[Aggiunta del ruolo S3_INTEGRATION\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. Scegliere **Add role (Aggiungi ruolo)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.enabling.cli"></a>

**Per aggiungere il ruolo IAM all'istanza database RDS for SQL Server**
+ Il seguente comando di AWS CLI aggiunge il ruolo IAM a un'istanza database RDS for SQL Server denominata `mydbinstance`.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-role-to-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Per Windows:

  ```
  aws rds add-role-to-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Sostituire `your-role-arn` con il ruolo ARN annotato nel passaggio precedente. `S3_INTEGRATION` deve essere specificato per l'opzione `--feature-name`.

# Trasferimento di file tra RDS for SQL Server e Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using"></a>

Puoi utilizzare le stored procedure Amazon RDS per scaricare e caricare file tra Amazon S3 e l'istanza database RDS. Puoi anche usare le stored procedure Amazon RDS per elencare ed eliminare i file nell'istanza RDS.

I file che scarichi e carichi su S3 sono archiviati nella cartella `D:\S3`. Questa è l'unica cartella che puoi usare per accedere ai file. Puoi organizzare i file in sottocartelle che vengono create automaticamente quando specifichi la cartella di destinazione al momento del download.

Alcune delle stored procedure richiedono la specifica di un Amazon Resource Name (ARN) al tuo file e al bucket S3. Il formato per l'ARN è `arn:aws:s3:::amzn-s3-demo-bucket/file_name`. Amazon S3 non richiede un numero di account o una AWS regione in. ARNs

Le attività di integrazione di S3 vengono eseguite in sequenza e condividono la stessa coda delle attività di backup e ripristino native. In questa coda possono essere presenti al massimo due attività in esecuzione in qualsiasi momento. Possono essere necessari fino a cinque minuti prima che l'attività inizi l'elaborazione.

## Download di file da un bucket Amazon S3 in un'istanza database SQL Server
<a name="Appendix.SQLServer.Options.S3-integration.using.download"></a>

Per scaricare file da un bucket S3 in un'istanza database RDS for SQL Server, usa la stored procedure Amazon RDS `msdb.dbo.rds_download_from_s3` con i seguenti parametri.


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Campo obbligatorio  |  L'ARN S3 del file da scaricare, ad esempio: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Facoltativo  |  Il percorso del file per l'istanza RDS. Se non specificato, il percorso del file è `D:\S3\<filename in s3>`. RDS supporta percorsi assoluti e percorsi relativi. Per creare una sottocartella è necessario includerla nel percorso del file.  | 
|  `@overwrite_file`  |  INT  |  0  |  Facoltativo  | Sovrascrittura del file esistente:  0 = Non sovrascrivere 1 = Sovrascrivi | 

È possibile scaricare file senza estensione e file con le seguenti estensioni: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt e .xml.

**Nota**  
I file con estensione .ispac sono supportati per il download quando SQL Server Integration Services è abilitato. Per ulteriori informazioni sull'abilitazione di SSIS, vedere [SQL Server Integration Services (SSIS)](Appendix.SQLServer.Options.SSIS.md).  
I file con le seguenti estensioni di file sono supportati per il download quando SQL Server Analysis Services è abilitato: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets e .xmla. Per ulteriori informazioni sull'abilitazione di SSAS, vedere [SQL Server Analysis Services (SSAS)](Appendix.SQLServer.Options.SSAS.md).

L'esempio seguente mostra la stored procedure per scaricare i file da S3. 

```
exec msdb.dbo.rds_download_from_s3
	    @s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/bulk_data.csv',
	    @rds_file_path='D:\S3\seed_data\data.csv',
	    @overwrite_file=1;
```

L'operazione `rds_download_from_s3` di esempio crea una cartella denominata `seed_data` in `D:\S3\`, se non esiste già. Quindi, viene scaricato il file di origine `bulk_data.csv` da S3 in un nuovo file denominato `data.csv` nell'istanza database. Se il file esisteva in precedenza, viene sovrascritto perché il parametro `@overwrite_file` è impostato su `1`.

## Aggiornamenti di file da un'istanza database SQL Server in un bucket Amazon S3
<a name="Appendix.SQLServer.Options.S3-integration.using.upload"></a>

Per aggiornare i file da un'istanza database RDS for SQL Server in un bucket S3, usa la stored procedure Amazon RDS `msdb.dbo.rds_upload_to_s3` con i seguenti parametri.


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@s3_arn_of_file`  |  NVARCHAR  |  –  |  Campo obbligatorio  |  L'ARN S3 del file da creare in S3, ad esempio: `arn:aws:s3:::amzn-s3-demo-bucket/mydata.csv`  | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Campo obbligatorio  | Il percorso del file da caricare in S3. Sono supportati percorsi assoluti e relativi. | 
|  `@overwrite_file`  |  INT  |  –  |  Facoltativo  |  Sovrascrittura del file esistente:  0 = Non sovrascrivere 1 = Sovrascrivi  | 

L'esempio seguente carica il file denominato `data.csv` dal percorso specificato in `D:\S3\seed_data\` nel file `new_data.csv` del bucket S3 specificato dall'ARN.

```
exec msdb.dbo.rds_upload_to_s3 
		@rds_file_path='D:\S3\seed_data\data.csv',
		@s3_arn_of_file='arn:aws:s3:::amzn-s3-demo-bucket/new_data.csv',
		@overwrite_file=1;
```

Se il file esisteva in precedenza in S3, viene sovrascritto perché il parametro @overwrite\$1file è impostato su `1`.

# Visualizzazione di file nell'istanza database RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.listing-files"></a>

Per elencare i file disponibili nell'istanza database, si utilizza sia una stored procedure che una funzione. Innanzitutto, esegui la seguente stored procedure per raccogliere i dettagli dai file in `D:\S3\`. 

```
exec msdb.dbo.rds_gather_file_details;
```

La stored procedure restituisce l'ID dell'attività. Come altre attività, questa stored procedure viene eseguita in modo asincrono. Non appena lo stato dell'attività diventa `SUCCESS`, puoi usare l'ID attività nella funzione `rds_fn_list_file_details` per elencare i file e le directory esistenti in D:\$1S3\$1, come indicato di seguito.

```
SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);
```

La funzione `rds_fn_list_file_details` restituisce una tabella con le seguenti colonne:


| Parametro di output | Descrizione | 
| --- | --- | 
| filepath | Percorso assoluto del file (ad esempio, D:\$1S3\$1mydata.csv) | 
| size\$1in\$1bytes | Dimensione del file (in byte) | 
| last\$1modified\$1utc | Data e ora dell'ultima modifica in formato UTC | 
| is\$1directory | Opzione che indica se l'elemento è una directory (true/false) | 

# Eliminazione di file nell'istanza database RDS
<a name="Appendix.SQLServer.Options.S3-integration.using.deleting-files"></a>

Per eliminare i file disponibili nell'istanza DB, utilizza la stored procedure Amazon RDS `msdb.dbo.rds_delete_from_filesystem` con i seguenti parametri. 


| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
|  `@rds_file_path`  |  NVARCHAR  |  –  |  Campo obbligatorio  | Il percorso del file da eliminare. Sono supportati percorsi assoluti e relativi.  | 
|  `@force_delete`  |  INT  | 0 |  Facoltativo  |  Per eliminare una directory, questo flag deve essere incluso e impostato su `1`. `1` = Elimina una directory Questo parametro viene ignorato se si elimina un file.  | 

Per eliminare una directory, `@rds_file_path` deve terminare con una barra (`\`) e `@force_delete` deve essere impostato su `1`.

L'esempio seguente elimina il file `D:\S3\delete_me.txt`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\delete_me.txt';
```

L'esempio seguente elimina la directory `D:\S3\example_folder\`.

```
exec msdb.dbo.rds_delete_from_filesystem
    @rds_file_path='D:\S3\example_folder\',
    @force_delete=1;
```

# Monitoraggio dello stato di un'attività di trasferimento di file
<a name="Appendix.SQLServer.Options.S3-integration.using.monitortasks"></a>

Per tenere traccia dello stato dell'attività di integrazione di S3, chiama la funzione `rds_fn_task_status` che accetta due parametri. Il primo parametro deve essere sempre `NULL` perché non si applica all'integrazione di S3. Il secondo parametro accetta un ID attività.

Per visualizzare l'elenco di tutte le attività, imposta il primo parametro su `NULL` e il secondo parametro su `0`, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Per ottenere un'attività specifica, imposta il primo parametro su `NULL` e il secondo parametro sull'ID attività, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La funzione `rds_fn_task_status` restituisce le seguenti informazioni.


|  Parametro di output  |  Descrizione  | 
| --- | --- | 
|  `task_id`  |  L'ID dell'attività.  | 
|  `task_type`  |  Per l'integrazione di S3, le attività possono avere i seguenti tipi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `database_name`  | Non applicabile alle attività di integrazione di S3. | 
|  `% complete`  |  L'avanzamento dell'attività espresso come percentuale.  | 
|  `duration(mins)`  |  La quantità di tempo dedicato all'attività, in minuti.  | 
|  `lifecycle`  |  Lo stato dell'attività. I possibili stati sono i seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/Appendix.SQLServer.Options.S3-integration.using.monitortasks.html)  | 
|  `task_info`  |  Ulteriori informazioni sull'attività. Se si verifica un errore durante l'elaborazione, questa colonna contiene informazioni sull'errore.   | 
|  `last_updated`  |  La data e l'ora dell'ultimo aggiornamento dello stato dell'attività.   | 
|  `created_at`  |  La data e l'ora di creazione dell'attività.  | 
|  `S3_object_arn`  |  L'ARN dell'oggetto S3 scaricato o caricato.  | 
|  `overwrite_S3_backup_file`  |  Non applicabile alle attività di integrazione di S3.  | 
|  `KMS_master_key_arn`  |  Non applicabile alle attività di integrazione di S3.  | 
|  `filepath`  |  Il percorso del file nell'istanza database RDS.  | 
|  `overwrite_file`  |  Opzione che indica se un file esistente viene sovrascritto.  | 
|  `task_metadata`  |  Non applicabile alle attività di integrazione di S3.  | 

# Annullamento di un'attività
<a name="Appendix.SQLServer.Options.S3-integration.canceltasks"></a>

Per annullare le attività di integrazione di S3, utilizzare la stored procedure `msdb.dbo.rds_cancel_task` con il parametro `task_id`. Le attività di eliminazione ed elenco in corso non possono essere annullate. L'esempio seguente mostra una richiesta per annullare un'attività. 

```
exec msdb.dbo.rds_cancel_task @task_id = 1234;
```

Per ottenere una panoramica di tutte le attività e dei relativi ID attività, utilizza la funzione `rds_fn_task_status` come descritto in [Monitoraggio dello stato di un'attività di trasferimento di file](Appendix.SQLServer.Options.S3-integration.using.monitortasks.md).

## Limitazioni Multi-AZ per l'integrazione S3
<a name="S3-MAZ"></a>

Nelle istanze Multi-AZ, i file nella cartella `D:\S3` vengono eliminati nella replica di standby dopo un failover. Un failover può essere pianificato, ad esempio, durante le modifiche dell'istanza database, come la modifica della classe di istanza o l'aggiornamento della versione del motore. Oppure un failover può essere non pianificato, durante un'interruzione dell'istanza primaria.

**Nota**  
Non è consigliabile utilizzare la cartella `D:\S3` per lo storage di file. La best practice consiste nel caricare i file creati in Amazon S3 per renderli durevoli e scaricare i file quando è necessario importare i dati.

Per determinare l'ora dell'ultimo failover, puoi utilizzare la stored procedure `msdb.dbo.rds_failover_time`. Per ulteriori informazioni, consulta [Individuazione dell’ora dell’ultimo failover per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md).

**Example di nessun failover recente**  
Questo esempio mostra l'output quando il log degli errori non contiene alcun failover recente. Nessun failover si è verificato dal 29-04-2020 alle 23:59:00.01.  
Pertanto, tutti i file scaricati dopo tale ora che non sono stati eliminati utilizzando la stored procedure `rds_delete_from_filesystem` sono ancora accessibili sull'host corrente. Anche i file scaricati prima di tale ora potrebbero essere disponibili.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example di failover recente**  
Questo esempio mostra l'output quando il log degli errori contiene un failover. Il failover più recente è stato il 05-05-2020 alle 18:57:51.89.  
Tutti i file scaricati dopo quest'ora che non sono stati eliminati utilizzando la stored procedure `rds_delete_from_filesystem` sono ancora accessibili sull'host corrente.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  2020-05-05 18:57:51.8900000  | 

# Disabilitazione dell'integrazione di RDS for SQL Server con S3
<a name="Appendix.SQLServer.Options.S3-integration.disabling"></a>

Nella sezione seguente sono riportate le indicazioni per disabilitare l'integrazione di Amazon S3 con Amazon RDS for SQL Server. I file in `D:\S3\` non vengono eliminati quando si disabilita l'integrazione S3.

**Nota**  
Per rimuovere un ruolo IAM da un'istanza database, lo stato dell'istanza database deve essere `available`.

## Console
<a name="Appendix.SQLServer.Options.S3-integration.disabling.console"></a>

**Per dissociare il ruolo IAM dall'istanza database**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Scegli il nome dell'istanza database RDS for SQL Server per visualizzarne i dettagli.

1. Nella sezione **Manage IAM roles (Gestisci ruoli IAM)** della scheda **Connectivity & security (Connettività e sicurezza)**, scegliere il ruolo IAM da rimuovere.

1. Scegliere **Delete (Elimina)**.

## AWS CLI
<a name="Appendix.SQLServer.Options.S3-integration.disabling.cli"></a>

**Per rimuovere il ruolo IAM dall'istanza database RDS for SQL Server**
+ Il seguente comando di AWS CLI rimuove il ruolo IAM da un'istanza database RDS for SQL Server denominata `mydbinstance`.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-role-from-db-instance \
  	   --db-instance-identifier mydbinstance \
  	   --feature-name S3_INTEGRATION \
  	   --role-arn your-role-arn
  ```

  Per Windows:

  ```
  aws rds remove-role-from-db-instance ^
  	   --db-instance-identifier mydbinstance ^
  	   --feature-name S3_INTEGRATION ^
  	   --role-arn your-role-arn
  ```

  Sostituire `your-role-arn` con l'ARN del ruolo IAM appropriato per l'opzione `--feature-name`.

# Utilizzo di Database Mail su Amazon RDS for SQL Server
<a name="SQLServer.DBMail"></a>

Puoi utilizzare Database Mail per inviare messaggi di posta elettronica agli utenti da Amazon RDS dall'istanza database di SQL Server. I messaggi possono contenere file e risultati delle query. Database Mail include i seguenti componenti:
+ **Oggetti di configurazione e sicurezza** – Questi oggetti creano profili e account e sono memorizzati nel database `msdb`.
+ **Oggetti di messaggistica** – Questi oggetti includono la stored procedure [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql) utilizzata per inviare messaggi e strutture di dati che contengono informazioni sui messaggi. Sono memorizzati nel database `msdb`.
+ **Oggetti di registrazione e controllo** – Database Mail scrive le informazioni di registrazione nel database `msdb` e nel registro eventi applicazioni di Microsoft Windows.
+ **Eseguibile di Database Mail** – `DatabaseMail.exe` legge da una coda nel database `msdb` e invia messaggi di posta elettronica.

RDS supporta Database Mail per tutte le versioni di SQL Server nelle edizioni Web, Standard ed Enterprise.

## Limitazioni
<a name="SQLServer.DBMail.Limitations"></a>

Le seguenti limitazioni si applicano all'utilizzo di posta elettronica di database nell'istanza database di SQL Server:
+ Database Mail non è supportato per SQL Server Express Edition.
+ La modifica dei parametri di configurazione di Database Mail non è supportata. Per visualizzare i valori predefiniti, utilizza la stored procedure [sysmail\$1help\$1configure\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-help-configure-sp-transact-sql) .
+ Gli allegati dei file non sono completamente supportati. Per ulteriori informazioni, consulta [Utilizzo di file allegati](#SQLServer.DBMail.Files).
+ La dimensione massima del file allegato è 1 MB.
+ Database Mail richiede una configurazione aggiuntiva su istanze database multi-AZ. Per ulteriori informazioni, consulta [Considerazioni per le implementazioni Multi-AZ](#SQLServer.DBMail.MAZ).
+ La configurazione di SQL Server Agent per l'invio di messaggi di posta elettronica agli operatori predefiniti non è supportata.

# Abilitazione di Database Mail
<a name="SQLServer.DBMail.Enable"></a>

Per abilitare Database Mail per l'istanza database, completa la seguente procedura:

1. Crea un nuovo set di parametri.

1. Modificare il gruppo di parametri per impostare il parametro `database mail xps` su 1 o 2.

1. Associa il nuovo gruppo di parametri all'istanza database.

## Creazione del gruppo di parametri per Database Mail
<a name="DBMail.CreateParamGroup"></a>

Crea o modifica un gruppo di parametri per il parametro `database mail xps` corrispondente all'edizione di SQL Server e alla versione dell'istanza database.

**Nota**  
Puoi anche modificare un gruppo di parametri esistente. Segui la procedura riportata in [Modifica del parametro che abilita Database Mail](#DBMail.ModifyParamGroup).

### Console
<a name="DBMail.CreateParamGroup.Console"></a>

Nell'esempio seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione, scegli **Parameter groups** (Gruppi di parametri).

1. Scegliere **Create parameter group (Crea gruppo di parametri)**.

1. Nel riquadro **Create parameter group (Crea gruppi di parametri)**, procedi nel modo seguente:

   1. Per **Famiglia del gruppo di parametri**, scegliere **sqlserver-se-13.0**.

   1. Per **Group name (Nome gruppo)**, immettere un identificatore per il gruppo di parametri, ad esempio **dbmail-sqlserver-se-13**.

   1. Per **Description (Descrizione)**, immettere **Database Mail XPs**.

1. Scegliere **Create (Crea)**.

### CLI
<a name="DBMail.CreateParamGroup.CLI"></a>

Nell'esempio seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "Database Mail XPs"
  ```

  Per Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "Database Mail XPs"
  ```

## Modifica del parametro che abilita Database Mail
<a name="DBMail.ModifyParamGroup"></a>

Modifica il parametro `database mail xps` nel gruppo di parametri che corrisponde all'edizione di SQL Server e alla versione dell'istanza database.

Per abilitare Database Mail, imposta il `database mail xps` parametro su 1.

### Console
<a name="DBMail.ModifyParamGroup.Console"></a>

Nell'esempio seguente il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**.

1. Scegli il gruppo di parametri, ad esempio **dbmail-sqlserver-se-13**.

1. In **Parameters (Parametri)**, filtrare l'elenco dei parametri per **mail**.

1. Seleziona **database mail xps**.

1. Scegliere **Edit parameters (Modifica parametri)**.

1. Specificare (sì **1**.

1. Scegli **Save changes** (Salva modifiche).

### CLI
<a name="DBMail.ModifyParamGroup.CLI"></a>

Nell'esempio seguente il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

  Per Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --parameters "ParameterName='database mail xps',ParameterValue=1,ApplyMethod=immediate"
  ```

## Associazione del gruppo di parametri all'istanza database
<a name="DBMail.AssocParamGroup"></a>

È possibile utilizzare Console di gestione AWS o the AWS CLI per associare il gruppo di parametri Database Mail all'istanza DB.

### Console
<a name="DBMail.AssocParamGroup.Console"></a>

Puoi associare il gruppo di parametri di Database Mail a un'istanza database nuova o esistente.
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="DBMail.AssocParamGroup.CLI"></a>

Puoi associare il gruppo di parametri di Database Mail a un'istanza database nuova o esistente.

**Per creare un'istanza database con il gruppo di parametri di Database Mail**
+ Specificare lo stesso tipo di motore di database e la versione principale utilizzati durante la creazione del gruppo di parametri.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --db-parameter-group-name dbmail-sqlserver-se-13
  ```

**Per modificare un'istanza database e associare il gruppo di parametri di Database Mail**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --db-parameter-group-name dbmail-sqlserver-se-13 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-parameter-group-name dbmail-sqlserver-se-13 ^
      --apply-immediately
  ```

# Configurazione di Database Mail
<a name="SQLServer.DBMail.Configure"></a>

Per configurare Database Mail, puoi completare le attività riportate di seguito.

1. Crea il profilo Database Mail.

1. Crea l'account Database Mail.

1. Aggiungi l'account Database Mail al profilo Database Mail.

1. Aggiungi utenti al profilo Database Mail.

**Nota**  
Per configurare Database Mail, assicurati di disporre delle autorizzazioni `execute` per le stored procedure nel database `msdb`.

## Creazione del profilo Database Mail
<a name="SQLServer.DBMail.Configure.Profile"></a>

Per creare il profilo Database Mail, utilizza la stored procedure [sysmail\$1add\$1profile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql) . Nell’esempio seguente viene creato un profilo denominato `Notifications`.

**Per creare il profilo**
+ Utilizza la seguente istruzione SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profile_sp  
      @profile_name         = 'Notifications',  
      @description          = 'Profile used for sending outgoing notifications using Amazon SES.';
  GO
  ```

## Creazione dell'account Database Mail
<a name="SQLServer.DBMail.Configure.Account"></a>

Per creare l'account Database Mail, utilizza la stored procedure [sysmail\$1add\$1account\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-account-sp-transact-sql) . Nell'esempio seguente viene creato un account denominato `SES` in un'istanza DB RDS per SQL Server in un VPC privato utilizzando Amazon Simple Email Service.

L'utilizzo di Amazon SES richiede i parametri seguenti:
+ `@email_address`: un'identità verificata da Amazon SES. Per ulteriori informazioni su , consulta [Verifica delle identità in Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).
+ `@mailserver_name`: un endpoint SMTP Amazon SES. Per ulteriori informazioni, consulta [Connessione a un endpoint SMTP Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-connect.html).
+ `@username`: un nome utente SMTP Amazon SES. Per ulteriori informazioni, consulta [Come ottenere le credenziali SMTP in Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

  Non utilizzare un nome AWS Identity and Access Management utente.
+ `@password`: password SMTP Amazon SES. Per ulteriori informazioni, consulta [Come ottenere le credenziali SMTP in Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html).

**Per creare l'account**
+ Utilizza la seguente istruzione SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_account_sp
      @account_name        = 'SES',
      @description         = 'Mail account for sending outgoing notifications.',
      @email_address       = 'nobody@example.com',
      @display_name        = 'Automated Mailer',
      @mailserver_name     = 'vpce-0a1b2c3d4e5f-01234567.email-smtp.us-west-2.vpce.amazonaws.com',
      @port                = 587,
      @enable_ssl          = 1,
      @username            = 'Smtp_Username',
      @password            = 'Smtp_Password';
  GO
  ```
**Nota**  
Specifica credenziali diverse dai prompt mostrati qui come best practice per la sicurezza.

## Aggiunta dell'account Database Mail al profilo Database Mail
<a name="SQLServer.DBMail.Configure.AddAccount"></a>

Per aggiungere l'account Database Mail al profilo Database Mail, utilizza la stored procedure [sysmail\$1add\$1profileaccount\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql) . Nell'esempio seguente viene aggiunto l'account `SES` al profilo `Notifications`.

**Per aggiungere l'account al profilo**
+ Utilizza la seguente istruzione SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name        = 'Notifications',
      @account_name        = 'SES',
      @sequence_number     = 1;
  GO
  ```

## Aggiunta di utenti al profilo Database Mail
<a name="SQLServer.DBMail.Configure.AddUser"></a>

Per concedere l'autorizzazione a un principal di database `msdb` per l'utilizzo di un profilo Database Mail, utilizza la stored procedure [sysmail\$1add\$1principalprofile\$1sp](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql) . Un *principal* è un'entità che può richiedere risorse di SQL Server. Il principal del database deve essere mappato a un utente di autenticazione di SQL Server, un utente di autenticazione di Windows o un gruppo di autenticazione di Windows.

Nell'esempio seguente viene concesso l'accesso pubblico al profilo `Notifications`.

**Per aggiungere un utente al profilo**
+ Utilizza la seguente istruzione SQL.

  ```
  USE msdb
  GO
  
  EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
      @profile_name       = 'Notifications',  
      @principal_name     = 'public',  
      @is_default         = 1;
  GO
  ```

## Amazon RDS stored procedure e funzioni per Database Mail
<a name="SQLServer.DBMail.StoredProc"></a>

Microsoft fornisce [Procedure archiviate](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/database-mail-stored-procedures-transact-sql) per l'utilizzo di Mail database, ad esempio la creazione, l'elenco, l'aggiornamento ed eliminazione di account e profili. Inoltre, RDS fornisce le stored procedure e le funzioni per Database Mail riportate nella tabella seguente.


| Stored procedure/Funzione | Descrizione | 
| --- | --- | 
| rds\$1fn\$1sysmail\$1allitems | Mostra i messaggi inviati, inclusi quelli inviati da altri utenti. | 
| rds\$1fn\$1sysmail\$1event\$1log | Mostra gli eventi, inclusi quelli relativi ai messaggi inviati da altri utenti. | 
| rds\$1fn\$1sysmail\$1mailattachments | Mostra gli allegati, inclusi quelli inviati da altri utenti. | 
| rds\$1sysmail\$1control | Avvia e arresta la coda di posta elettronica (processo DatabaseMail.exe). | 
| rds\$1sysmail\$1delete\$1mailitems\$1sp | Elimina i messaggi di posta elettronica inviati da tutti gli utenti dalle tabelle interne a Database Mail. | 

# Invio di messaggi di posta elettronica tramite Database Mail
<a name="SQLServer.DBMail.Send"></a>

Per inviare messaggi di posta elettronica utilizzando Database Mail, puoi utilizzare la stored procedure [sp\$1send\$1dbmail](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql). 

## Utilizzo
<a name="SQLServer.DBMail.Send.Usage"></a>

```
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile_name',
@recipients = 'recipient1@example.com[; recipient2; ... recipientn]',
@subject = 'subject',
@body = 'message_body',
[@body_format = 'HTML'],
[@file_attachments = 'file_path1; file_path2; ... file_pathn'],
[@query = 'SQL_query'],
[@attach_query_result_as_file = 0|1]';
```

I parametri seguenti sono obbligatori:
+ `@profile_name` – Il nome del profilo Database Mail da cui inviare il messaggio.
+ `@recipients` – L’elenco delimitato da punto e virgola di indirizzi di posta elettronica a cui inviare il messaggio.
+ `@subject` – L'oggetto del messaggio.
+ `@body` – Il corpo del messaggio. Puoi inoltre utilizzare una variabile dichiarata come corpo.

I parametri seguenti sono facoltativi:
+ `@body_format` – Questo parametro viene utilizzato con una variabile dichiarata per inviare e-mail in formato HTML.
+ `@file_attachments` – L’elenco delimitato da punto e virgola degli allegati dei messaggi. I percorsi dei file devono essere percorsi assoluti.
+ `@query` – Una query SQL da eseguire. I risultati della query possono essere allegati come file o inclusi nel corpo del messaggio.
+ `@attach_query_result_as_file` – Indica se allegare il risultato della query come file. Imposta su 0 per no, 1 per sì. Il valore predefinito è 0.

## Esempi
<a name="SQLServer.DBMail.Send.Examples"></a>

Negli esempi seguenti viene illustrato come inviare messaggi di posta elettronica.

**Example di invio di un messaggio a un singolo destinatario**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Automated DBMail message - 1',
     @body               = 'Database Mail configuration was successful.';
GO
```

**Example di invio di un messaggio a più destinatari**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'recipient1@example.com;recipient2@example.com',
     @subject            = 'Automated DBMail message - 2',
     @body               = 'This is a message.';
GO
```

**Example di invio di un risultato di una query SQL come file allegato**  

```
USE msdb
GO

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test SQL query',
     @body               = 'This is a SQL query test.',
     @query              = 'SELECT * FROM abc.dbo.test',
     @attach_query_result_as_file = 1;
GO
```

**Example di invio di un messaggio in formato HTML**  

```
USE msdb
GO

DECLARE @HTML_Body as NVARCHAR(500) = 'Hi, <h4> Heading </h4> </br> See the report. <b> Regards </b>';

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'Test HTML message',
     @body               = @HTML_Body,
     @body_format        = 'HTML';
GO
```

**Example di invio di un messaggio utilizzando un trigger quando si verifica un evento specifico nel database**  

```
USE AdventureWorks2017
GO
IF OBJECT_ID ('Production.iProductNotification', 'TR') IS NOT NULL
DROP TRIGGER Purchasing.iProductNotification
GO

CREATE TRIGGER iProductNotification ON Production.Product
   FOR INSERT
   AS
   DECLARE @ProductInformation nvarchar(255);
   SELECT
   @ProductInformation = 'A new product, ' + Name + ', is now available for $' + CAST(StandardCost AS nvarchar(20)) + '!'
   FROM INSERTED i;

EXEC msdb.dbo.sp_send_dbmail
     @profile_name       = 'Notifications',
     @recipients         = 'nobody@example.com',
     @subject            = 'New product information',
     @body               = @ProductInformation;
GO
```

# Visualizzazione di messaggi, log e allegati
<a name="SQLServer.DBMail.View"></a>

È possibile utilizzare le stored procedure RDS per visualizzare messaggi, log di eventi e allegati.

**Per visualizzare tutti i messaggi di posta elettronica**
+ Digita la seguente query SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_allitems(); --WHERE sent_status='sent' or 'failed' or 'unsent'
  ```

**Per visualizzare tutti i log di eventi di posta elettronica**
+ Digita la seguente query SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_event_log();
  ```

**Per visualizzare tutti gli allegati di posta elettronica**
+ Digita la seguente query SQL:

  ```
  SELECT * FROM msdb.dbo.rds_fn_sysmail_mailattachments();
  ```

# Eliminazione dei messaggi
<a name="SQLServer.DBMail.Delete"></a>

Per eliminare i messaggi, puoi utilizzare la stored procedure `rds_sysmail_delete_mailitems_sp`.

**Nota**  
RDS elimina automaticamente gli elementi della tabella di posta quando i dati della cronologia di DBMail raggiungono le dimensioni di 1 GB, con un periodo di conservazione di almeno 24 ore.  
Se desideri conservare gli elementi di posta per un periodo più lungo, puoi archiviarli. Per maggiori informazioni, consulta [Creazione di un processo di SQL Server Agent per archiviare i messaggi di Database Mail e i log di eventi](https://docs.microsoft.com/en-us/sql/relational-databases/database-mail/create-a-sql-server-agent-job-to-archive-database-mail-messages-and-event-logs) nella documentazione di Microsoft.

**Per eliminare tutti i messaggi di posta elettronica**
+ Utilizza la seguente istruzione SQL.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_before = @GETDATE;
  GO
  ```

**Per eliminare tutti i messaggi di posta elettronica con uno stato particolare**
+ Utilizza la seguente istruzione SQL per eliminare tutti i messaggi non riusciti.

  ```
  DECLARE @GETDATE datetime
  SET @GETDATE = GETDATE();
  EXECUTE msdb.dbo.rds_sysmail_delete_mailitems_sp @sent_status = 'failed';
  GO
  ```

# Avvio e arresto della coda di posta
<a name="SQLServer.DBMail.StartStop"></a>

Per avviare e arrestare la coda di posta del database utilizza le seguenti istruzioni:

**Topics**
+ [Avvio della coda di posta](#SQLServer.DBMail.Start)
+ [Arresto della coda di posta](#SQLServer.DBMail.Stop)

## Avvio della coda di posta
<a name="SQLServer.DBMail.Start"></a>

Per avviare il processo Database Mail, utilizza la stored procedure `rds_sysmail_control` .

**Nota**  
L'abilitazione di Database Mail avvia automaticamente la coda di posta.

**Per avviare la coda di posta**
+ Utilizza la seguente istruzione SQL.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control start;
  GO
  ```

## Arresto della coda di posta
<a name="SQLServer.DBMail.Stop"></a>

Per arrestare il processo di Database Mail, utilizza la stored procedure `rds_sysmail_control`.

**Per arrestare la coda di posta**
+ Utilizza la seguente istruzione SQL.

  ```
  EXECUTE msdb.dbo.rds_sysmail_control stop;
  GO
  ```

## Utilizzo di file allegati
<a name="SQLServer.DBMail.Files"></a>

Le seguenti estensioni di file allegati non sono supportate nei messaggi di Database Mail provenienti da RDS su SQL Server: .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shs, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws, .wsc, .wsf e .wsh.

Database Mail utilizza il contesto di protezione di Microsoft Windows dell'utente corrente per controllare l'accesso ai file. Gli utenti che accedono con l'autenticazione di SQL Server non possono allegare file utilizzando il parametro `@file_attachments` con la stored procedure `sp_send_dbmail`. Windows non consente a SQL Server di fornire le credenziali da un computer remoto a un altro computer remoto. Di conseguenza, Database Mail non può allegare file da una condivisione di rete quando il comando viene eseguito da un computer diverso dal computer che esegue SQL Server.

Tuttavia, per allegare i file puoi utilizzare i processi di SQL Server Agent. Per ulteriori informazioni su SQL Server Agent, consulta [Utilizzo di SQL Server Agent per Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md) e [SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent) nella documentazione Microsoft.

## Considerazioni per le implementazioni Multi-AZ
<a name="SQLServer.DBMail.MAZ"></a>

Quando configuri Database Mail in un'istanza database Multi-AZ, la configurazione non viene propagata automaticamente al nodo secondario. Si consiglia di convertire l'istanza Multi-AZ in un'istanza Single-AZ, configurare Database Mail e quindi riconvertire l'istanza database in Multi-AZ. In questo modo, entrambi i nodi primario e secondario avranno la configurazione di Database Mail.

Se crei una replica di lettura dall'istanza Multi-AZ in cui è configurato Database Mail, la replica eredita la configurazione, ma senza la password sul server SMTP. Aggiorna l'account Database Mail con la password.

## Rimozione della restrizione SMTP (porta 25)
<a name="SQLServer.DBMail.SMTP"></a>

Per impostazione predefinita, AWS blocca il traffico in uscita su SMTP (porta 25) per le istanze database RDS per SQL Server. Questa impostazione consente di prevenire lo spam in base alle policy del proprietario dell’interfaccia di rete elastica. È possibile rimuovere la restrizione, se necessario. Per ulteriori informazioni, consulta [Come posso rimuovere la restrizione sulla porta 25 dalla mia istanza Amazon EC2 o dalla mia funzione Lambda?](https://repost.aws/knowledge-center/ec2-port-25-throttle) 

# Supporto dell'archivio istanze per il database tempdb su Amazon RDS for SQL Server
<a name="SQLServer.InstanceStore"></a>

Un *archivio istanze* fornisce uno storage temporaneo di livello per l’istanza database. Lo storage è collocato all'interno dei dischi fisicamente collegati al computer host. Questi dischi dispongono di storage di istanza NVMe (Non-Volatile Memory Express) basata su unità a stato solido (SSD). Questo storage è ottimizzato per bassa latenza, prestazioni I/O casuali molto elevate ed elevata velocità di lettura sequenziale.

Inserendo i file di dati `tempdb` e i file di log `tempdb` nell'archivio istanze, sarà possibile ottenere latenze di lettura e scrittura inferiori rispetto allo storage standard basato su Amazon EBS.

**Nota**  
I file di database di SQL Server e i file di log del database non vengono inseriti nell'archivio istanze.

## Abilitazione dell'archivio istanze
<a name="SQLServer.InstanceStore.Enable"></a>

Quando RDS esegue il provisioning di istanze database con una delle seguenti classi di istanza, il database `tempdb` viene automaticamente inserito nell'archivio istanze:
+ db.m5d
+ db.r5d
+ db.x2iedn

Per abilitare l'archivio istanze, effettua una delle seguenti operazioni:
+ Crea un'istanza database di SQL Server utilizzando uno di questi tipi di istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Modifica un'istanza database di SQL Server esistente per utilizzarne una. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

L'archivio istanze è disponibile in tutte le regioni AWS in cui sono supportati uno o più di questi tipi di istanza. Per ulteriori informazioni sulle classi di istanza `db.m5d` e `db.r5d`, consulta [Classi di istanze DB ](Concepts.DBInstanceClass.md). Per ulteriori informazioni sulle classi di istanza supportate da Amazon RDS for SQL Server, consulta [Supporto classe istanza database per Microsoft SQL Server](SQLServer.Concepts.General.InstanceClasses.md).

## Considerazioni sulla posizione e sulle dimensioni dei file
<a name="SQLServer.InstanceStore.Files"></a>

Nelle istanze senza un archivio di istanze, RDS memorizza i file di dati e di log `tempdb` nella directory `D:\rdsdbdata\DATA`. Entrambi i file iniziano da 8 MB per impostazione predefinita.

Nelle istanze con un archivio istanze, RDS memorizza i file di dati e di log `tempdb` nella directory `T:\rdsdbdata\DATA`.

Quando `tempdb` ha un solo file di dati (`tempdb.mdf`) e un file di log (`templog.ldf`), `templog.ldf` inizia da 8 MB per impostazione predefinita e `tempdb.mdf` inizia all'80% o più della capacità di archiviazione dell'istanza. Il 20% della capacità di storage o 200 GB, a seconda di quale sia inferiore, viene mantenuto libero per iniziare. Più file di dati `tempdb` dividono uniformemente l'80% dello spazio su disco, mentre i file di log hanno sempre una dimensione iniziale di 8 MB.

Ad esempio, se si modifica la classe di istanza database da `db.m5.2xlarge` a `db.m5d.2xlarge`, la dimensione dei file di dati `tempdb` aumenta da 8 MB ciascuno a 234 GB in totale.

**Nota**  
Oltre ai file di dati e di log di `tempdb` nell'archivio istanze (`T:\rdsdbdata\DATA`), puoi ancora creare file di dati e file di log `tempdb` nel volume di dati (`D:\rdsdbdata\DATA`). Questi file hanno sempre una dimensione iniziale di 8 MB.

## Considerazioni sul backup
<a name="SQLServer.InstanceStore.Backups"></a>

Potrebbe essere necessario conservare i backup per lunghi periodi, con costi nel tempo. I blocchi di dati e log di `tempdb` possono cambiare molto spesso a seconda del carico di lavoro. Ciò può aumentare notevolmente la dimensione degli snapshot del database.

Quando si `tempdb` trova nell'archivio istanze, le istantanee non includono file temporanei. Ciò significa che le dimensioni degli snapshot sono più piccole e consumano meno l'allocazione di backup gratuita rispetto allo storage solo EBS.

## Errori di disco pieno
<a name="SQLServer.InstanceStore.DiskFull"></a>

Se si utilizza tutto lo spazio disponibile nell'archivio istanze, è possibile che vengano visualizzati errori come i seguenti:
+  Il log delle transazioni per il database 'tempdb' è pieno a causa di 'ACTIVE\$1TRANSACTION '. 
+ Impossibile allocare spazio per l'oggetto 'dbo.sort temporanea di archiviazione esecuzione: 140738941419520' nel database 'tempdb' perché il filegroup 'PRIMARY' è pieno. Crea spazio su disco eliminando i file non necessari, rilasciando oggetti nel gruppo di file, aggiungendo altri file al gruppo di file o impostando il parametro autogrowth per i file esistenti nel gruppo di file.

È possibile eseguire una o più delle seguenti operazioni quando l'archivio istanze è pieno:
+ Regola il carico di lavoro o il modo in cui utilizzi `tempdb`.
+ Scala fino all'utilizzo di una classe di istanza database con più storage NVMe.
+ Interrompi l'utilizzo dell'archivio istanze e utilizza una classe di istanza con solo storage EBS.
+ Utilizza una modalità mista aggiungendo dati secondari o file di log per `tempdb` sul volume EBS.

## Rimozione dell'archivio istanze
<a name="SQLServer.InstanceStore.Disable"></a>

Per rimuovere l'archivio dell'istanza, modifica l'istanza database di SQL Server per utilizzare un tipo di istanza che non supporta l'archivio dell'istanza, ad esempio db.m5, db.r5 o db.x1e.

**Nota**  
Quando rimuovi l'archivio istanze, i file temporanei vengono spostati nella directory `D:\rdsdbdata\DATA` e le dimensioni sono ridotte a 8 MB.

# Utilizzo di eventi estesi con Amazon RDS per Microsoft SQL Server
<a name="SQLServer.ExtendedEvents"></a>

È possibile utilizzare eventi estesi in Microsoft SQL Server per acquisire informazioni di debug e risoluzione dei problemi per Amazon RDS for SQL Server. Gli eventi estesi sostituiscono SQL Trace e Server Profiler, che sono stati deprecati da Microsoft. Gli eventi estesi sono simili alle tracce del profiler, ma hanno un controllo più granulare sugli eventi tracciati. Gli eventi estesi sono supportati per SQL Server versioni 2016 e successive su Amazon RDS. Per ulteriori informazioni, consulta [Panoramica degli eventi estesi](https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events) nella documentazione di Microsoft.

Gli eventi estesi vengono attivati automaticamente per gli utenti con privilegi utente master in Amazon RDS for SQL Server.

**Topics**
+ [Limitazioni e consigli](#SQLServer.ExtendedEvents.Limits)
+ [Configurazione di eventi estesi su RDS per SQL Server](#SQLServer.ExtendedEvents.Config)
+ [Considerazioni per le implementazioni Multi-AZ](#SQLServer.ExtendedEvents.MAZ)
+ [Esecuzione di query sui file di eventi estesi](#SQLServer.ExtendedEvents.Querying)

## Limitazioni e consigli
<a name="SQLServer.ExtendedEvents.Limits"></a>

Quando si utilizzano eventi estesi su RDS per SQL Server, si applicano le seguenti limitazioni:
+ Gli eventi estesi sono supportati solo per le edizioni Enterprise e Standard.
+ Non è possibile modificare le sessioni degli eventi estesi predefinite.
+ Assicurati di impostare la modalità di partizione della memoria della sessione su `NONE`.
+ La modalità di conservazione degli eventi della sessione può essere `ALLOW_SINGLE_EVENT_LOSS` o `ALLOW_MULTIPLE_EVENT_LOSS`.
+ Le destinazioni di traccia eventi per Windows (ETW) non sono supportate.
+ Assicurati che le destinazioni dei file siano nella directory `D:\rdsdbdata\log`.
+ Per le destinazioni corrispondenti alle coppie, imposta la proprietà `respond_to_memory_pressure` su `1`.
+ La memoria di destinazione del buffer ring non può essere maggiore di 4 MB.
+ Le seguenti azioni non sono supportate:
  + `debug_break`
  + `create_dump_all_threads`
  + `create_dump_single_threads`
+ L'evento `rpc_completed` è supportato nelle seguenti versioni: 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2 e nelle versioni successive.

## Configurazione di eventi estesi su RDS per SQL Server
<a name="SQLServer.ExtendedEvents.Config"></a>

In RDS per SQL Server, è possibile configurare i valori di determinati parametri delle sessioni degli eventi estesi. Nella tabella seguente vengono descritti i parametri configurabili.


| Nome del parametro | Descrizione | Valore predefinito RDS | Valore minimo | Valore massimo | 
| --- | --- | --- | --- | --- | 
| xe\$1session\$1max\$1memory | Specifica la quantità massima di memoria da allocare alla sessione per il buffering degli eventi. Questo valore corrisponde all'impostazione max\$1memory della sessione evento. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1event\$1size | Specifica la dimensione massima di memoria consentita per eventi di grandi dimensioni. Questo valore corrisponde all'impostazione max\$1event\$1size della sessione evento. | 4 MB | 4 MB | 8 MB | 
| xe\$1session\$1max\$1dispatch\$1latency | Specifica il tempo in cui gli eventi vengono memorizzati nel buffer prima di essere inviati alle destinazioni delle sessioni degli eventi estesi. Questo valore corrisponde all'impostazione max\$1dispatch\$1latency della sessione evento. | 30 secondi | 1 secondo | 30 secondi | 
| xe\$1file\$1target\$1size | Specifica la dimensione massima della destinazione file. Questo valore corrisponde all'impostazione max\$1file\$1size della destinazione del file. | 100 MB | 10 MB | 1 GB | 
| xe\$1file\$1retention | Specifica il tempo di conservazione (in giorni) per i file generati dalle destinazioni file delle sessioni eventi. | 7 giorni | 0 giorni | 7 giorni | 

**Nota**  
Impostando `xe_file_retention` su zero, i file .xel vengono rimossi automaticamente dopo il blocco di questi file viene rilasciato da SQL Server. Il blocco viene rilasciato ogni volta che un file con estensione .xel raggiunge il limite di dimensione impostato in `xe_file_target_size`.

È possibile utilizzare la stored procedure `rdsadmin.dbo.rds_show_configuration` per visualizzare i valori correnti di questi parametri. Ad esempio, utilizzare l'istruzione SQL seguente per visualizzare l'impostazione corrente di `xe_session_max_memory`.

```
exec rdsadmin.dbo.rds_show_configuration 'xe_session_max_memory'
```

È possibile utilizzare la stored procedure `rdsadmin.dbo.rds_set_configuration` per modificarle. Ad esempio, utilizzare l'istruzione SQL seguente per impostare `xe_session_max_memory` su 4 MB.

```
exec rdsadmin.dbo.rds_set_configuration 'xe_session_max_memory', 4
```

## Considerazioni per le implementazioni Multi-AZ
<a name="SQLServer.ExtendedEvents.MAZ"></a>

Quando si crea una sessione per un evento esteso in un'istanza DB primaria, la sessione non viene propagata alla replica in standby. È possibile eseguire il failover e creare la sessione dell’evento esteso nella nuova istanza DB primaria. In alternativa, è possibile rimuovere e aggiungere nuovamente la configurazione Multi-AZ per propagare la sessione di eventi estesi alla replica in attesa. RDS interrompe tutte le sessioni degli eventi estesi non predefinite sulla replica in standby, in modo che queste sessioni non utilizzino risorse in standby. Per questo motivo, dopo che una replica in standby diventa l'istanza DB primaria, assicurarsi di avviare manualmente le sessioni dell’evento esteso sul nuovo primario.

**Nota**  
Questo approccio si applica sia ai gruppi di disponibilità Always On che al mirroring del database.

È inoltre possibile utilizzare un processo di SQL Server Agent per tenere traccia della replica in standby e avviare le sessioni se lo standby diventa primario. Ad esempio, utilizzare la seguente query nel passaggio del processo Agente SQL Server per riavviare le sessioni di eventi in un'istanza DB primaria.

```
BEGIN
    IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE'
    AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE'
    AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1)
    )
    BEGIN
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1')
            ALTER EVENT SESSION xe1 ON SERVER STATE=START
        IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2')
            ALTER EVENT SESSION xe2 ON SERVER STATE=START
    END
END
```

Questa query riavvia le sessioni di evento `xe1` e `xe2` su un'istanza DB primaria se queste sessioni sono in uno stato interrotto. È inoltre possibile aggiungere una pianificazione con un intervallo conveniente a questa query.

## Esecuzione di query sui file di eventi estesi
<a name="SQLServer.ExtendedEvents.Querying"></a>

È possibile utilizzare SQL Server Management Studio o la `sys.fn_xe_file_target_read_file` funzione per visualizzare i dati da eventi estesi che utilizzano destinazioni file. Per ulteriori informazioni su questa funzione, consulta [sys.fn\$1xe\$1file\$1target\$1read\$1file (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-xe-file-target-read-file-transact-sql) nella documentazione di Microsoft.

Le destinazioni dei file degli eventi estesi possono scrivere solo file nella directory `D:\rdsdbdata\log` su RDS for SQL Server.

Ad esempio, utilizzare la seguente query SQL per elencare il contenuto di tutti i file delle sessioni di eventi estesi i cui nomi iniziano con `xe`.

```
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);
```

# Accesso ai backup dei log delle transazioni con RDS per SQL Server
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

Con l'accesso ai backup dei log delle transazioni di RDS per SQL Server, puoi elencare i file di backup dei log delle transazioni per un database e copiarli in un bucket Amazon S3 di destinazione. Copiando i backup dei log delle transazioni in un bucket Amazon S3, puoi utilizzarli in combinazione con backup completi e differenziali del database per eseguire ripristini point-in-time del database. Utilizzi le stored procedure RDS per configurare l'accesso ai backup dei log delle transazioni, elencare i backup dei log delle transazioni disponibili e copiarli nel bucket Amazon S3.

L'accesso ai backup dei log delle transazioni offre le funzionalità e i vantaggi seguenti:
+ Elenca e visualizza i metadati dei backup dei log delle transazioni disponibili per un database su un'istanza database di RDS per SQL Server.
+ Copia i backup dei log delle transazioni disponibili da RDS per SQL Server in un bucket Amazon S3 di destinazione.
+ Esegui point-in-time ripristini dei database senza la necessità di ripristinare un'intera istanza DB. Per ulteriori informazioni sul ripristino point-in-time di un'istanza database, consulta [Ripristino di un’istanza database a un punto temporale specifico per Amazon RDS](USER_PIT.md).

## Disponibilità e supporto
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

L'accesso ai backup dei log delle transazioni è supportato in tutte le AWS regioni. L'accesso ai backup dei log delle transazioni è disponibile per tutte le edizioni e le versioni di Microsoft SQL Server supportate su Amazon RDS. 

## Requisiti
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

I seguenti requisiti devono essere soddisfatti prima di consentire l'accesso ai backup dei log delle transazioni: 
+  I backup automatici devono essere abilitati sull'istanza database e la conservazione del backup deve essere impostata su un valore di uno o più giorni. Per ulteriori informazioni sull'attivazione dei backup automatici e sulla configurazione di una policy di conservazione, consulta [Abilitazione dei backup automatici](USER_WorkingWithAutomatedBackups.Enabling.md). 
+ Un bucket Amazon S3 deve trovarsi nello stesso account e nella stessa regione dell'istanza database di origine. Prima di abilitare l'accesso ai backup dei log delle transazioni, scegli un bucket Amazon S3 esistente o [crea un nuovo bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html) da utilizzare per i file di backup dei log delle transazioni.
+ Una policy di autorizzazione per i bucket Amazon S3 deve essere configurata come segue per consentire ad Amazon RDS di copiarvi i file di log delle transazioni:

  1. Imposta la proprietà del proprietario dell'account dell'oggetto nel bucket su **Bucket Owner Preferred** (Proprietario preferito del bucket).

  1. Aggiungi la policy seguente. Non ci sarà alcuna policy per impostazione predefinita, quindi utilizza le liste di controllo degli accessi (ACL) del bucket per modificare la policy del bucket e aggiungerla.

  

  Nell'esempio che segue viene utilizzato un ARN per specificare la risorsa. Si consiglia di utilizzare le chiavi di contesto delle condizioni globali `SourceArn` e `SourceAccount` nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Per ulteriori informazioni su come lavorare con ARNs, consulta [Amazon resource names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) e[Nomi della risorsa Amazon (ARN) in Amazon RDS](USER_Tagging.ARN.md).

    
**Example di policy di autorizzazione di Amazon S3 per l'accesso ai backup dei log delle transazioni**  

------
#### [ JSON ]

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ Un ruolo AWS Identity and Access Management (IAM) per accedere al bucket Amazon S3. Se disponi già di un ruolo IAM, puoi utilizzarlo. In alternativa, puoi scegliere che venga creato automaticamente un nuovo ruolo IAM quando aggiungi l'opzione `SQLSERVER_BACKUP_RESTORE` usando la Console di gestione AWS. In alternativa, è possibile crearne uno nuovo manualmente. Per ulteriori informazioni sulla creazione e la configurazione di un ruolo IAM con `SQLSERVER_BACKUP_RESTORE`, consulta [Creazione manuale di un ruolo IAM per backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).
+ L'opzione `SQLSERVER_BACKUP_RESTORE` deve essere aggiunta a un gruppo di opzioni nella tua istanza database. Per ulteriori informazioni sull'aggiunta dell'opzione `SQLSERVER_BACKUP_RESTORE`, consulta [Supporto per backup nativo e ripristino in SQL Server](Appendix.SQLServer.Options.BackupRestore.md).
**Nota**  
Se l'istanza DB ha la crittografia dello storage abilitata, le azioni e la chiave AWS KMS (KMS) devono essere fornite nel ruolo IAM fornito nel gruppo di opzioni di backup e ripristino nativo.

  Facoltativamente, se intendi utilizzare la stored procedure `rds_restore_log` per eseguire ripristini point-in-time del database, ti consigliamo di utilizzare lo stesso percorso Amazon S3 per il gruppo di opzioni di backup e ripristino nativo e l'accesso ai backup dei log delle transazioni. Questo metodo garantisce che, quando Amazon RDS assume il ruolo del gruppo di opzioni per eseguire le funzioni del log di ripristino, abbia accesso ai backup dei log delle transazioni dallo stesso percorso di Amazon S3.
+ Se l'istanza DB è crittografata, indipendentemente dal tipo di crittografia (chiave AWS gestita o chiave gestita dal cliente), è necessario fornire una chiave KMS gestita dal cliente nel ruolo IAM e nella `rds_tlog_backup_copy_to_S3` stored procedure. 

## Limitazioni e consigli
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

L'accesso ai backup dei log delle transazioni include le seguenti limitazioni e raccomandazioni:
+  È possibile elencare e copiare fino agli ultimi sette giorni di backup dei log delle transazioni per qualsiasi istanza database la cui conservazione del backup è configurata tra uno e 35 giorni. 
+  Il bucket Amazon S3 utilizzato per l'accesso ai backup dei log delle transazioni deve essere presente nello stesso account e nella stessa regione dell'istanza database di origine. La copia tra account e tra regioni non è supportata. 
+  È possibile configurare un solo bucket Amazon S3 come destinazione in cui copiare i backup dei log delle transazioni. Puoi scegliere un nuovo bucket Amazon S3 di destinazione con la stored procedure `rds_tlog_copy_setup`. Per ulteriori informazioni sulla scelta di un nuovo bucket Amazon S3 di destinazione, consulta [Configurazione dell'accesso ai backup dei log delle transazioni](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).
+  Non è possibile specificare la chiave KMS quando si utilizza la stored procedure `rds_tlog_backup_copy_to_S3` se l'istanza RDS non è abilitata per la crittografia dell'archiviazione. 
+  La copia tra account non è supportata. Il ruolo IAM utilizzato per la copia consente l'accesso in scrittura ai bucket Amazon S3 solo all'interno dell'account proprietario dell'istanza database. 
+  Solo due attività simultanee di qualsiasi tipo possono essere eseguite su un'istanza database RDS per SQL Server. 
+  È possibile eseguire una sola operazione di copia alla volta per ogni singolo database. Se desideri copiare i backup dei log delle transazioni per più database sull'istanza database, utilizza un'attività di copia separata per ogni database. 
+  Se copi un backup dei log delle transazioni già esistente con lo stesso nome nel bucket Amazon S3, il backup dei log delle transazioni esistente verrà sovrascritto. 
+  È possibile eseguire solo le stored procedure che consentono l'accesso ai backup dei log delle transazioni sull'istanza database primaria. Non è possibile eseguire queste stored procedure su una replica di lettura di RDS per SQL Server o su un'istanza secondaria di un cluster database multi-AZ. 
+  Se l'istanza database di RDS per SQL Server viene riavviata mentre la stored procedure `rds_tlog_backup_copy_to_S3` è in esecuzione, l'attività verrà riavviata automaticamente dall'inizio quando l'istanza database tornerà online. Qualsiasi backup dei log delle transazioni copiato nel bucket Amazon S3 mentre l'attività è in esecuzione prima del riavvio verrà sovrascritto. 
+ I database di sistema Microsoft SQL Server e il database `RDSAdmin` non possono essere configurati per l'accesso ai backup dei log delle transazioni.
+  La copia su bucket con crittografia SSE-KMS non è supportata. 

# Configurazione dell'accesso ai backup dei log delle transazioni
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling"></a>

Per configurare l'accesso ai backup dei log delle transazioni, completa l'elenco dei requisiti nella sezione [Requisiti](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements), quindi esegui la stored procedure `rds_tlog_copy_setup`. La procedura consente l'accesso alla funzionalità di backup dei log delle transazioni a livello di istanza database. Non è necessario eseguirla per ogni singolo database nell'istanza database. 

**Importante**  
All'utente del database deve essere concesso il ruolo `db_owner` in SQL Server su ogni database per configurare e utilizzare la funzionalità di accesso ai backup dei log delle transazioni.

**Example di utilizzo:**  

```
exec msdb.dbo.rds_tlog_copy_setup
@target_s3_arn='arn:aws:s3:::amzn-s3-demo-bucket/myfolder';
```

Il parametro seguente è obbligatorio:
+ `@target_s3_arn`: l'ARN del bucket Amazon S3 di destinazione in cui copiare i file di backup dei log delle transazioni.

**Example di impostazione di un bucket Amazon S3:**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket/mytestdb1';
```

Per convalidare la configurazione, chiama la stored procedure `rds_show_configuration`.

**Example di convalida della configurazione:**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

Per modificare l'accesso ai backup dei log delle transazioni in modo che punti a un bucket Amazon S3 diverso, puoi visualizzare il valore corrente del bucket Amazon S3 ed eseguire nuovamente la store procedure `rds_tlog_copy_setup` utilizzando un nuovo valore per `@target_s3_arn`.

**Example di visualizzazione del bucket Amazon S3 esistente configurato per l'accesso ai backup dei log delle transazioni**  

```
exec rdsadmin.dbo.rds_show_configuration @name='target_s3_arn_for_tlog_copy';
```

**Example di aggiornamento a un nuovo bucket Amazon S3 di destinazione**  

```
exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn='arn:aws:s3:::amzn-s3-demo-logging-bucket1/mynewfolder';
```

# Elenco dei backup dei log delle transazioni disponibili
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Listing"></a>

Con RDS per SQL Server, i database configurati per utilizzare il modello di ripristino completo e la conservazione del backup dell'istanza database impostata su uno o più giorni, hanno automaticamente abilitati i backup dei log delle transazioni. Abilitando l'accesso ai backup dei log delle transazioni, potrai copiarli nel tuo bucket Amazon S3 per un massimo di sette giorni.

Dopo aver abilitato l'accesso ai backup dei log delle transazioni, puoi iniziare a utilizzarlo per elencare e copiare i file di backup dei log delle transazioni disponibili.

**Elenco dei backup dei log delle transazioni**

Per elencare tutti i backup dei log delle transazioni disponibili per un singolo database, chiama la funzione `rds_fn_list_tlog_backup_metadata`. È possibile utilizzare una clausola `ORDER BY` o `WHERE` quando si chiama la funzione.

**Example di elenco e filtro dei file di backup dei log delle transazioni disponibili**  

```
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename');
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE rds_backup_seq_id = 3507;
SELECT * from msdb.dbo.rds_fn_list_tlog_backup_metadata('mydatabasename') WHERE backup_file_time_utc > '2022-09-15 20:44:01' ORDER BY backup_file_time_utc DESC;
```

![\[Output da rds_fn_list_tlog_backup_metadata\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_func.png)


La funzione `rds_fn_list_tlog_backup_metadata` restituisce il seguente output:


****  

| Nome della colonna | Tipo di dati | Description | 
| --- | --- | --- | 
| `db_name` | sysname | Il nome del database fornito per elencare i backup dei log delle transazioni. | 
| `db_id` | int | L'identificatore del database interno per il parametro di input `db_name`. | 
| `family_guid` | uniqueidentifier | L'ID univoco del database originale al momento della creazione. Questo valore rimane invariato quando il database viene ripristinato, anche con un nome di database diverso. | 
| `rds_backup_seq_id` | int | L'ID che RDS utilizza internamente per mantenere un numero di sequenza per ogni file di backup dei log delle transazioni. | 
| `backup_file_epoch` | bigint | L'ora in cui è stato generato un file di backup delle transazioni. | 
| `backup_file_time_utc` | datetime | Il valore UTC per il valore `backup_file_epoch`. | 
| `starting_lsn` | numeric(25,0) | Il numero di sequenza di log del primo o dell'ultimo record di log di un file di backup dei log delle transazioni. | 
| `ending_lsn` | numeric(25,0) | Il numero di sequenza di log dell'ultimo o del penultimo record di log di un file di backup dei log delle transazioni. | 
| `is_log_chain_broken` | bit | Un valore booleano che indica se la catena di log è interrotta tra il file di backup dei log delle transazioni corrente e il file di backup dei log delle transazioni precedente. | 
| `file_size_bytes` | bigint | Le dimensioni del set di backup delle transazioni in byte. | 
| `Error` | varchar(4000) | Messaggio di errore se la funzione `rds_fn_list_tlog_backup_metadata` genera un'eccezione. NULL in assenza di eccezioni. | 

# Copia dei backup dei log delle transazioni
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying"></a>

Per copiare un set di backup dei log delle transazioni disponibili per un singolo database nel bucket Amazon S3, chiama la stored procedure `rds_tlog_backup_copy_to_S3`. La stored procedure `rds_tlog_backup_copy_to_S3` avvia una nuova attività per copiare i backup dei log delle transazioni. 

**Nota**  
La store procedure `rds_tlog_backup_copy_to_S3` memorizzata copia i backup dei log delle transazioni senza convalidarli con l'attributo `is_log_chain_broken`. Per questo motivo, è necessario confermare manualmente una catena di log ininterrotta prima di eseguire la stored procedure `rds_tlog_backup_copy_to_S3`. Per ulteriori informazioni, consulta [Convalida della catena di log di backup dei log delle transazioni](#USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain).

**Example di utilizzo della stored procedure `rds_tlog_backup_copy_to_S3`**  

```
exec msdb.dbo.rds_tlog_backup_copy_to_S3
	@db_name='mydatabasename',
	[@kms_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@backup_file_start_time='2022-09-01 01:00:15'],
	[@backup_file_end_time='2022-09-01 21:30:45'],
	[@starting_lsn=149000000112100001],
	[@ending_lsn=149000000120400001],
	[@rds_backup_starting_seq_id=5],
	[@rds_backup_ending_seq_id=10];
```

Sono disponibili i seguenti parametri di input:


****  

| Parametro | Description | 
| --- | --- | 
| `@db_name` | Il nome del database per cui copiare i backup dei log delle transazioni | 
| `@kms_key_arn` |  Una chiave KMS gestita dal cliente. Se crittografi la tua istanza DB con una chiave KMS AWS gestita, devi creare una chiave gestita dal cliente. Se si crittografa l’istanza database con una chiave gestita dal cliente, è possibile utilizzare lo stesso ARN della chiave KMS. | 
| `@backup_file_start_time` | Il timestamp UTC fornito dalla colonna `[backup_file_time_utc]` della funzione `rds_fn_list_tlog_backup_metadata`. | 
| `@backup_file_end_time` | Il timestamp UTC fornito dalla colonna `[backup_file_time_utc]` della funzione `rds_fn_list_tlog_backup_metadata`. | 
| `@starting_lsn` | Il numero di sequenza di log fornito dalla colonna `[starting_lsn]` della funzione `rds_fn_list_tlog_backup_metadata`. | 
| `@ending_lsn` | Il numero di sequenza di log fornito dalla colonna `[ending_lsn]` della funzione `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_starting_seq_id` | L'ID sequenza fornito dalla colonna `[rds_backup_seq_id]` della funzione `rds_fn_list_tlog_backup_metadata`. | 
| `@rds_backup_ending_seq_id` | L'ID sequenza fornito dalla colonna `[rds_backup_seq_id]` della funzione `rds_fn_list_tlog_backup_metadata`. | 

È possibile specificare un set di parametri relativi all'ora, al numero di sequenza di log o all'ID sequenza. È richiesto un solo set di parametri.

È inoltre possibile specificare un solo parametro in uno qualsiasi dei set. Ad esempio, fornendo un valore solo per il parametro `backup_file_end_time`, tutti i file di backup dei log delle transazioni disponibili prima di quel momento entro il limite di sette giorni verranno copiati nel bucket Amazon S3. 

Di seguito sono riportate le combinazioni di parametri di input valide per la stored procedure `rds_tlog_backup_copy_to_S3`.


****  

| Parametri forniti | Risultato previsto | 
| --- | --- | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3  <br />	@db_name = 'testdb1',<br />            @backup_file_start_time='2022-08-23 00:00:00',<br />            @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copia i backup dei log delle transazioni degli ultimi sette giorni ed esistenti nell'intervallo fornito compreso tra `backup_file_start_time` e `backup_file_end_time`. In questo esempio, la stored procedure copia i backup dei log delle transazioni generati tra "2022-08-23 00:00:00" e "2022-08-30 00:00:00".  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />           @db_name = 'testdb1',<br />           @backup_file_start_time='2022-08-23 00:00:00';</pre>  | Copia i backup dei log delle transazioni degli ultimi sette giorni e a partire dalla data specificata in `backup_file_start_time`. In questo esempio, la stored procedure copia i backup dei log delle transazioni dal "2022-08-23 00:00:00" fino al più recente backup dei log delle transazioni.  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />          @db_name = 'testdb1',<br />          @backup_file_end_time='2022-08-30 00:00:00';</pre>  | Copia i backup dei log delle transazioni dagli ultimi sette giorni fino alla data specificata in `backup_file_end_time`. In questo esempio, la stored procedure copia i backup dei log delle transazioni dal "2022-08-23 00:00:00" al "2022-08-30 00:00:00".  | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />         @db_name='testdb1',<br />         @starting_lsn =1490000000040007,<br />         @ending_lsn =  1490000000050009;</pre>  | Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni e compresi nell'intervallo fornito compreso tra `starting_lsn` e `ending_lsn`. In questo esempio, la stored procedure copia i backup dei log delle transazioni degli ultimi sette giorni con un intervallo di numero di sequenza di log compreso tra 1490000000040007 e 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @starting_lsn =1490000000040007;</pre>  |  Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni, a partire dal numero specificato in `starting_lsn`. In questo esempio, la stored procedure copia i backup dei log delle transazioni dal numero di sequenza di log 1490000000040007 fino al più recente backup dei log delle transazioni.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />        @db_name='testdb1',<br />        @ending_lsn  =1490000000050009;</pre>  |  Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni fino al numero specificato in `ending_lsn`. In questo esempio, la stored procedure copia i backup dei log delle transazioni degli ultimi sette giorni fino al numero di sequenza di log 1490000000050009.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000,<br />       @rds_backup_ending_seq_id= 5000;</pre>  |  Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni ed esistenti nell'intervallo fornito compreso tra `rds_backup_starting_seq_id` e `rds_backup_ending_seq_id`. In questo esempio, la stored procedure copia i backup dei log delle transazioni a partire dagli ultimi sette giorni e compresi nell'intervallo di ID sequenza di backup RDS fornito, a partire da seq\$1id 2000 fino a seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />       @db_name='testdb1',<br />       @rds_backup_starting_seq_id= 2000;</pre>  |  Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni, a partire dal numero specificato in `rds_backup_starting_seq_id`. In questo esempio, la stored procedure copia i backup dei log delle transazioni a partire da seq\$1id 2000 fino al più recente backup dei log delle transazioni.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_ending_seq_id= 5000;</pre>  |  Copia i backup dei log delle transazioni disponibili negli ultimi sette giorni fino al numero specificato in `rds_backup_ending_seq_id`. In questo esempio, la stored procedure copia i backup dei log delle transazioni degli ultimi sette giorni fino a seq\$1id 5000.   | 
|  <pre>exec msdb.dbo.rds_tlog_backup_copy_to_S3<br />      @db_name='testdb1',<br />      @rds_backup_starting_seq_id= 2000;<br />      @rds_backup_ending_seq_id= 2000;</pre>  |  Copia un singolo backup dei log delle transazioni con l'elemento `rds_backup_starting_seq_id` specificato, se disponibile negli ultimi sette giorni. In questo esempio, la stored procedure copia un singolo backup dei log delle transazioni con seq\$1id 2000, se esistente negli ultimi sette giorni.   | 

## Convalida della catena di log di backup dei log delle transazioni
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.LogChain"></a>

 I database configurati per l'accesso ai backup dei log delle transazioni devono avere la conservazione automatica dei backup abilitata. La conservazione automatica dei backup imposta i database sull'istanza database in base al modello di ripristino `FULL`. Per supportare il ripristino point-in-time di un database, evita di modificare il modello di ripristino del database per impedire l'interruzione della catena di log. Si consiglia di mantenere il database impostato sul modello di ripristino `FULL`.

Per convalidare manualmente la catena di log prima di copiare i backup dei log delle transazioni, chiama la funzione `rds_fn_list_tlog_backup_metadata` ed esamina i valori nella colonna `is_log_chain_broken`. Il valore "1" indica che la catena di log è stata interrotta tra il backup dei log corrente e il backup dei log precedente.

L'esempio seguente mostra una catena di log interrotta nell'output della stored procedure `rds_fn_list_tlog_backup_metadata`. 

![\[Output di rds_fn_list_tlog_backup_metadata che mostra una catena di log interrotta.\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_logchain_error.png)


In una normale catena di log, il valore del numero di sequenza di log per first\$1lsn per un dato rds\$1sequence\$1id deve corrispondere al valore di last\$1lsn nell'elemento rds\$1sequence\$1id precedente. Nell'immagine, il valore rds\$1sequence\$1id 45 ha il valore first\$1lsn 90987, che non corrisponde al valore last\$1lsn 90985 che dell'elemento rds\$1sequence\$1id 44 precedente.

Per ulteriori informazioni sull'architettura dei log delle transazioni di SQL Server e sui numeri di sequenza di log, consulta [Architettura logica del log delle transazioni](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver15#Logical_Arch) nella documentazione di Microsoft SQL Server.

# Struttura di file e cartelle del bucket Amazon S3
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.S3namingConvention"></a>

I backup dei log delle transazioni hanno la struttura e la convenzione di denominazione standard seguenti in un bucket Amazon S3:
+ Viene creata una nuova cartella nel percorso `target_s3_arn` di ogni database con la struttura di denominazione `{db_id}.{family_guid}`.
+ All'interno della cartella, i backup dei log delle transazioni hanno la struttura di denominazione dei file `{db_id}.{family_guid}.{rds_backup_seq_id}.{backup_file_epoch}`.
+ È possibile visualizzare i dettagli di `family_guid,db_id,rds_backup_seq_id and backup_file_epoch` con la funzione `rds_fn_list_tlog_backup_metadata`.

L'esempio seguente mostra la struttura di cartelle e file di un set di backup dei log delle transazioni in un bucket Amazon S3.

![\[Struttura del bucket Amazon S3 con accesso ai log delle transazioni\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/sql_accesstransactionlogs_s3.png)


# Monitoraggio dello stato delle attività
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus"></a>

 Per monitorare lo stato delle attività di copia, chiama la stored procedure `rds_task_status`. Se non fornisci alcun parametro, la stored procedure restituisce lo stato di tutte le attività. 

**Example di utilizzo:**  

```
exec msdb.dbo.rds_task_status
  @db_name='database_name',
  @task_id=ID_number;
```

I parametri seguenti sono facoltativi:
+ `@db_name` – Il nome del database per il quale visualizzare lo stato dell'attività.
+ `@task_id` – L'ID dell'attività per la quale visualizzare lo stato.

**Example di elenco dello stato per un ID attività specifico:**  

```
exec msdb.dbo.rds_task_status @task_id=5;
```

**Example di elenco dello stato per un database e un'attività specifici:**  

```
exec msdb.dbo.rds_task_status@db_name='my_database',@task_id=5;
```

**Example di elenco di tutte le attività e relativi stati per un database specifico:**  

```
exec msdb.dbo.rds_task_status @db_name='my_database';
```

**Example di elenco di tutte le attività e relativi stati per l'istanza database corrente:**  

```
exec msdb.dbo.rds_task_status;
```

# Annullamento di un'attività
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.CancelTask"></a>

Per annullare un'attività in esecuzione, chiama la stored procedure `rds_cancel_task`.

**Example di utilizzo:**  

```
exec msdb.dbo.rds_cancel_task @task_id=ID_number;
```

Il parametro seguente è obbligatorio:
+ `@task_id` – L'ID dell'attività da annullare. Puoi esaminare l'ID attività chiamando la stored procedure `rds_task_status`.

Per ulteriori informazioni sulla visualizzazione e sull'annullamento delle attività in esecuzione, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md).

# Risoluzione dei problemi di accesso ai backup dei log delle transazioni
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Troubleshooting"></a>

Di seguito sono elencati i problemi che si potrebbero riscontrare quando si utilizzano le stored procedure per accedere ai backup dei log delle transazioni.


****  

| Stored procedure | Messaggio di errore | Problema | Suggerimenti sulla risoluzione dei problemi | 
| --- | --- | --- | --- | 
| rds\$1tlog\$1copy\$1setup | I backup sono disabilitati su questa istanza database. Abilita i backup dell'istanza database con un valore per la conservazione di almeno "1" e riprova. | I backup automatici non sono abilitati per l'istanza database. |  La conservazione dei backup dell'istanza database deve essere abilitata con un valore di almeno un giorno. Per ulteriori informazioni sull'abilitazione dei backup automatici e sulla configurazione della conservazione dei backup, consulta [Periodo di conservazione dei backup](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1copy\$1setup | Errore durante l'esecuzione della stored procedure rds\$1tlog\$1copy\$1setup. Riconnettiti all'endpoint RDS e riprova. | Si è verificato un errore interno. | Riconnettiti all'endpoint RDS ed esegui nuovamente la stored procedure `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | L'esecuzione della stored procedure rds\$1tlog\$1backup\$1copy\$1setup in una transazione non è supportata. Verifica che nella sessione non ci siano transazioni aperte e riprova. | La stored procedure è stata avviata in una transazione utilizzando `BEGIN` e `END`. | Evita di utilizzare `BEGIN` e `END` durante l'esecuzione della stored procedure `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | Il nome del bucket S3 per il parametro di input `@target_s3_arn` deve contenere almeno un carattere diverso da spazio. | È stato fornito un valore errato per il parametro di input `@target_s3_arn`. | Assicurati che il parametro di input `@target_s3_arn` specifichi l'ARN completo del bucket Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'opzione `SQLSERVER_BACKUP_RESTORE` non è abilitata o è in fase di abilitazione. Abilita l'opzione o riprova più tardi. | L'opzione `SQLSERVER_BACKUP_RESTORE` non è abilitata sull'istanza database o è stata abilitata ma è in attesa dell'attivazione interna. | Attiva l'opzione `SQLSERVER_BACKUP_RESTORE` come specificato nella sezione Requisiti. Attendi qualche minuto ed esegui nuovamente la stored procedure `rds_tlog_copy_setup`. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 di destinazione per il parametro di input `@target_s3_arn` non può essere vuoto o nullo. | È stato fornito un valore `NULL` per il parametro di input `@target_s3_arn` oppure il valore non è stato fornito. | Assicurati che il parametro di input `@target_s3_arn` specifichi l'ARN completo del bucket Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 di destinazione per il parametro di input `@target_s3_arn` deve iniziare con arn:aws. | Il parametro di input `@target_s3_arn` è stato fornito senza `arn:aws` all'inizio. | Assicurati che il parametro di input `@target_s3_arn` specifichi l'ARN completo del bucket Amazon S3. | 
| rds\$1tlog\$1copy\$1setup | L'ARN S3 di destinazione è già impostato sul valore fornito.  | La stored procedure `rds_tlog_copy_setup` veniva precedentemente eseguita ed era configurata con un bucket ARN Amazon S3. | Per modificare il valore del bucket Amazon S3 per l'accesso ai backup dei log delle transazioni, fornisci un valore diverso per `target S3 ARN`. | 
| rds\$1tlog\$1copy\$1setup | Impossibile generare credenziali per abilitare l'accesso ai backup dei log delle transazioni. Conferma l'ARN del percorso S3 fornito con `rds_tlog_copy_setup` e riprova.  | Si è verificato un errore non specificato durante la generazione delle credenziali per consentire l'accesso ai backup dei log delle transazioni. | Esamina la configurazione dell'impostazione e riprova.  | 
| rds\$1tlog\$1copy\$1setup | Non è possibile eseguire la stored procedure rds\$1tlog\$1copy\$1setup se sono presenti attività in sospeso. Attendi il completamento delle attività in sospeso e riprova.  | È possibile eseguire solo due attività alla volta. Sono presenti attività in attesa del completamento. | Visualizza le attività in sospeso e attendi che vengano completate. Per ulteriori informazioni sul monitoraggio dello stato delle attività, consulta [Monitoraggio dello stato delle attività](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | È già stata eseguita un'operazione di copia del file di backup T-log per il database: %s con ID attività: %d, riprova più tardi.  | È possibile eseguire una sola operazione di copia alla volta per un determinato database. È presente un'operazione di copia in attesa del completamento. | Visualizza le attività in sospeso e attendi che vengano completate. Per ulteriori informazioni sul monitoraggio dello stato delle attività, consulta [Monitoraggio dello stato delle attività](USER.SQLServer.AddlFeat.TransactionLogAccess.TrackTaskStatus.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | È necessario fornire almeno uno di questi tre set di parametri. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Nessuno dei tre set di parametri è stato fornito oppure in un set di parametri fornito manca un parametro obbligatorio. | È possibile specificare i parametri relativi all'ora, al numero di sequenza di log o all'ID sequenza. È richiesto uno di questi tre set di parametri. Per ulteriori informazioni sui parametri obbligatori, consulta [Copia dei backup dei log delle transazioni](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | I backup sono disabilitati sull'istanza. Abilita i backup e riprova tra qualche minuto. | I backup automatici non sono abilitati per l'istanza database. |  Per ulteriori informazioni sull'abilitazione dei backup automatici e sulla configurazione della conservazione dei backup, consulta [Periodo di conservazione dei backup](USER_WorkingWithAutomatedBackups.BackupRetention.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Impossibile trovare il database specificato %s. | Il valore fornito per il parametro di input `@db_name` non corrisponde al nome di un database nell'istanza database. | Usa un nome di database corretto. Per elencare tutti i database per nome, esegui `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Impossibile eseguire la stored procedure rds\$1tlog\$1backup\$1copy\$1to\$1S3 per i database di sistema SQL Server o il database rdsadmin.  | Il valore fornito per il parametro di input `@db_name` corrisponde al nome di un database di sistema SQL Server o al database RDSAdmin. | I seguenti database non possono essere utilizzati per accedere ai backup dei log delle transazioni: `master, model, msdb, tempdb, RDSAdmin.`  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Il nome di database per il parametro di input @db\$1name non può essere vuoto o nullo.  | Il valore fornito per il parametro di input `@db_name` era vuoto o `NULL`. | Usa un nome di database corretto. Per elencare tutti i database per nome, esegui `SELECT * from sys.databases` | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Il periodo di conservazione dei backup dell'istanza database deve essere impostato almeno su 1 per eseguire la stored procedure rds\$1tlog\$1backup\$1copy\$1setup.  | I backup automatici non sono abilitati per l'istanza database. | Per ulteriori informazioni sull'abilitazione dei backup automatici e sulla configurazione della conservazione dei backup, consulta [Periodo di conservazione dei backup](USER_WorkingWithAutomatedBackups.BackupRetention.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Errore durante l'esecuzione della stored procedure rds\$1tlog\$1backup\$1copy\$1to\$1S3. Riconnettiti all'endpoint RDS e riprova.  | Si è verificato un errore interno. | Riconnettiti all'endpoint RDS ed esegui nuovamente la stored procedure `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | È possibile fornire uno solo di questi tre set di parametri. SET-1:(@backup\$1file\$1start\$1time, @backup\$1file\$1end\$1time) \$1 SET-2:(@starting\$1lsn, @ending\$1lsn) \$1 SET-3:(@rds\$1backup\$1starting\$1seq\$1id, @rds\$1backup\$1ending\$1seq\$1id)  | Sono stati forniti diversi set di parametri. | È possibile specificare i parametri relativi all'ora, al numero di sequenza di log o all'ID sequenza. È richiesto uno di questi tre set di parametri. Per ulteriori informazioni sui parametri obbligatori, consulta [Copia dei backup dei log delle transazioni](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md).  | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'esecuzione della stored procedure rds\$1tlog\$1backup\$1copy\$1to\$1S3 in una transazione non è supportata. Verifica che nella sessione non ci siano transazioni aperte e riprova. | La stored procedure è stata avviata in una transazione utilizzando `BEGIN` e `END`. | Evita di utilizzare `BEGIN` e `END` durante l'esecuzione della stored procedure `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | I parametri forniti non rientrano nel periodo di conservazione dei log di backup delle transazioni. Per visualizzare l'elenco dei file di backup dei log delle transazioni disponibili, esegui la funzione rds\$1fn\$1list\$1tlog\$1backup\$1metadata.  | Non sono disponibili i backup dei log delle transazioni per i parametri di input forniti che rientrano nella finestra di conservazione delle copie. | Riprova con un set di parametri valido. Per ulteriori informazioni sui parametri obbligatori, consulta [Copia dei backup dei log delle transazioni](USER.SQLServer.AddlFeat.TransactionLogAccess.Copying.md). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Si è verificato un errore di autorizzazione durante l'elaborazione della richiesta. Assicurati che il bucket si trovi nello stesso account e nella stessa regione dell'istanza database e conferma le autorizzazioni della policy del bucket S3 rispetto al modello della documentazione pubblica.  | È stato rilevato un problema relativo al bucket S3 fornito o alle autorizzazioni di policy. | Verifica che la configurazione per l'accesso ai backup dei log delle transazioni sia corretta. Per ulteriori informazioni sui requisiti di configurazione per il bucket S3, consulta [Requisiti](USER.SQLServer.AddlFeat.TransactionLogAccess.md#USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements). | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'esecuzione della stored procedure `rds_tlog_backup_copy_to_S3` su un'istanza di replica di lettura RDS non è consentita.  | La stored procedure è stata avviata su un'istanza di replica di lettura RDS. | Connettiti all'istanza database primaria RDS per eseguire la stored procedure `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Il numero di sequenza di log per il parametro di input `@starting_lsn` deve essere inferiore a `@ending_lsn`.  | Il valore fornito per il parametro di input `@starting_lsn` era maggiore del valore fornito per il parametro di input `@ending_lsn`. | Assicurati che il valore fornito per il parametro di input `@starting_lsn` sia inferiore al valore fornito per il parametro di input `@ending_lsn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | La stored procedure `rds_tlog_backup_copy_to_S3` può essere eseguita solo dai membri con il ruolo `db_owner` nel database di origine.  | Il ruolo `db_owner` non è stato concesso all'account che tenta di eseguire la stored procedure `rds_tlog_backup_copy_to_S3` sul provider `db_name`. | Assicurati che l'account che esegue la stored procedure sia autorizzato con il ruolo `db_owner` per il `db_name` specificato. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'ID sequenza per il parametro di input `@rds_backup_starting_seq_id` deve essere minore o uguale a `@rds_backup_ending_seq_id`.  | Il valore fornito per il parametro di input `@rds_backup_starting_seq_id` era maggiore del valore fornito per il parametro di input `@rds_backup_ending_seq_id`. | Assicurati che il valore fornito per il parametro di input `@rds_backup_starting_seq_id` sia inferiore al valore fornito per il parametro di input `@rds_backup_ending_seq_id`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'opzione SQLSERVER\$1BACKUP\$1RESTORE non è abilitata o è in fase di abilitazione. Abilita l'opzione o riprova più tardi. | L'opzione `SQLSERVER_BACKUP_RESTORE` non è abilitata sull'istanza database o è stata abilitata ma è in attesa dell'attivazione interna. | Attiva l'opzione `SQLSERVER_BACKUP_RESTORE` come specificato nella sezione Requisiti. Attendi qualche minuto ed esegui nuovamente la stored procedure `rds_tlog_backup_copy_to_S3`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | L'ora di inizio del parametro di input `@backup_file_start_time` deve essere inferiore a `@backup_file_end_time`.  | Il valore fornito per il parametro di input `@backup_file_start_time` era maggiore del valore fornito per il parametro di input `@backup_file_end_time`. | Assicurati che il valore fornito per il parametro di input `@backup_file_start_time` sia inferiore al valore fornito per il parametro di input `@backup_file_end_time`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Impossibile elaborare la richiesta a causa della mancanza di accesso. Controlla le impostazioni e le autorizzazioni per la funzionalità.  | Potrebbe esserci un problema con le autorizzazioni del bucket Amazon S3 oppure il bucket Amazon S3 fornito si trova in un altro account o un'altra regione. | Assicurati che le autorizzazioni della policy dei bucket di Amazon S3 siano autorizzate a consentire l'accesso RDS. Assicurati che il bucket Amazon S3 si trovi nello stesso account e nella stessa regione dell'istanza database. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | Non è possibile fornire l'ARN di una chiave KMS come parametro di input alla stored procedure per le istanze che non sono crittografate nell'archiviazione.  | Quando la crittografia dell'archiviazione non è abilitata sull'istanza database, il parametro di input `@kms_key_arn` non deve essere fornito. | Non fornire un parametro di input per `@kms_key_arn`. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | È necessario fornire l'ARN di una chiave KMS come parametro di input per la stored procedure delle istanze crittografate nell'archiviazione.  | Quando la crittografia dell'archiviazione è abilitata sull'istanza database, è necessario fornire il parametro di input `@kms_key_arn`. | Fornisci un parametro di input per `@kms_key_arn` con un valore che corrisponda all'ARN del bucket Amazon S3 da utilizzare per i backup dei log delle transazioni. | 
| rds\$1tlog\$1backup\$1copy\$1to\$1S3 | È necessario eseguire la stored procedure `rds_tlog_copy_setup` e impostare `@target_s3_arn`, prima di eseguire la stored procedure `rds_tlog_backup_copy_to_S3`.  | La procedura di impostazione dell'accesso ai backup dei log delle transazioni non è stata completata prima di tentare di eseguire la stored procedure `rds_tlog_backup_copy_to_S3`. | Esegui la stored procedure `rds_tlog_copy_setup` prima di eseguire la stored procedure `rds_tlog_backup_copy_to_S3`. Per ulteriori informazioni sull'esecuzione della procedura di impostazione per l'accesso ai backup dei log delle transazioni, consulta [Configurazione dell'accesso ai backup dei log delle transazioni](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md).  | 

# Opzioni per il motore di database di Microsoft SQL Server
<a name="Appendix.SQLServer.Options"></a>

In questa sezione vengono descritte le opzioni disponibili per le istanze Amazon RDS che eseguono il motore di database di Microsoft SQL Server. Per abilitare queste opzioni, dovrai aggiungerle a un gruppo di opzioni e quindi associare il gruppo di opzioni all'istanza database. Per ulteriori informazioni, consulta [Uso di gruppi di opzioni](USER_WorkingWithOptionGroups.md). 

Se cerchi caratteristiche opzionali che non sono aggiunte tramite i gruppi di opzioni RDS (ad esempio SSL, Windows Authentication e Amazon S3 integration), consulta [Funzionalità opzionali per Microsoft SQL Server su Amazon RDS](User.SQLServer.AdditionalFeatures.md).

Amazon RDS supporta le seguenti opzioni per le istanze database Microsoft SQL Server. 


****  

| Opzione | ID opzione | Edizioni del motore | 
| --- | --- | --- | 
|  [Server collegati con Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md)  |  `OLEDB_ORACLE`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Backup nativo e ripristino](Appendix.SQLServer.Options.BackupRestore.md)  |  `SQLSERVER_BACKUP_RESTORE`  |  SQL Server Enterprise Edition SQL Server Standard Edition SQL Server Web Edition SQL Server Express Edition  | 
|  [Transparent Data Encryption](Appendix.SQLServer.Options.TDE.md)  |  `TRANSPARENT_DATA_ENCRYPTION` (console RDS) `TDE`(AWS CLI e API RDS)  |  SQL Server 2016–2022 Enterprise Edition SQL Server 2022 Standard Edition | 
|  [Audit in SQL Server](Appendix.SQLServer.Options.Audit.md)  |  `SQLSERVER_AUDIT`  |  In RDS, a partire da SQL Server 2016, tutte le edizioni di SQL Server supportano gli audit a livello di server; inoltre, l’edizione Enterprise supporta anche gli audit a livello di database. A partire da SQL Server SQL Server 2016 (13.x) SP1, tutte le edizioni supportano controlli sia a livello di server che a livello di database. Per ulteriori informazioni, consulta [Audit in SQL Server (Motore di database)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-2017) nella documentazione di SQL Server. | 
|  [SQL Server Analysis Services (SSAS)](Appendix.SQLServer.Options.SSAS.md)  |  `SSAS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Integration Services (SSIS)](Appendix.SQLServer.Options.SSIS.md)  |  `SSIS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [SQL Server Reporting Service (SSRS)](Appendix.SQLServer.Options.SSRS.md)  |  `SSRS`  |  SQL Server Enterprise Edition SQL Server Standard Edition  | 
|  [Microsoft Distributed Transaction Coordinator](Appendix.SQLServer.Options.MSDTC.md)  |  `MSDTC`  |  In RDS, a partire da SQL Server 2016, tutte le edizioni di SQL Server supportano le transazioni distribuite.  | 
|  [Governatore delle risorse di SQL Server](Appendix.SQLServer.Options.ResourceGovernor.md)  |  `RESOURCE_GOVERNOR`  |  SQL Server Enterprise Edition Edizione per sviluppatori di SQL Server 2022  | 

## Elenco delle opzioni disponibili per le versioni e le edizioni di SQL Server
<a name="Appendix.SQLServer.Options.Describe"></a>

È possibile utilizzare il `describe-option-group-options` AWS CLI comando per elencare le opzioni disponibili per le versioni e le edizioni di SQL Server e le relative impostazioni.

Nell'esempio seguente vengono illustrate le opzioni e le impostazioni delle opzioni per SQL Server 2019 Enterprise Edition. L'opzione `--engine-name` è obbligatoria.

```
aws rds describe-option-group-options --engine-name sqlserver-ee --major-engine-version 15.00
```

L'output è simile a quello riportato di seguito.

```
{
    "OptionGroupOptions": [
        {
            "Name": "MSDTC",
            "Description": "Microsoft Distributed Transaction Coordinator",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": true,
            "DefaultPort": 5000,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": false,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": [
                {
                    "SettingName": "ENABLE_SNA_LU",
                    "SettingDescription": "Enable support for SNA LU protocol",
                    "DefaultValue": "true",
                    "ApplyType": "DYNAMIC",
                    "AllowedValues": "true,false",
                    "IsModifiable": true,
                    "IsRequired": false,
                    "MinimumEngineVersionPerAllowedValue": []
                },
        ...

        {
            "Name": "TDE",
            "Description": "SQL Server - Transparent Data Encryption",
            "EngineName": "sqlserver-ee",
            "MajorEngineVersion": "15.00",
            "MinimumRequiredMinorEngineVersion": "4043.16.v1",
            "PortRequired": false,
            "OptionsDependedOn": [],
            "OptionsConflictsWith": [],
            "Persistent": true,
            "Permanent": false,
            "RequiresAutoMinorEngineVersionUpgrade": false,
            "VpcOnly": false,
            "OptionGroupOptionSettings": []
        }
    ]
}
```

# Supporto per server collegati con Oracle OLEDB in Amazon RDS per SQL Server
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

I server collegati con Oracle Provider for OLEDB su RDS per SQL Server consentono di accedere alle origini dei dati esterne in un database Oracle. È possibile leggere dati da origini dei dati Oracle remote ed eseguire comandi su server di database Oracle remoti all'esterno dell'istanza database RDS per SQL Server. Utilizzando i server collegati con Oracle OLEDB, è possibile:
+ Accedere direttamente a origini dei dati diverse da SQL Server
+ Eseguire query su origini dei dati Oracle diverse con la stessa query senza spostare i dati
+ Eseguire query, aggiornamenti, comandi e transazioni distribuiti sulle origini dei dati in un ecosistema aziendale
+ Integrare le connessioni a un database Oracle dall'interno della suite Microsoft Business Intelligence (SSIS, SSRS, SSAS)
+ Eseguire la migrazione da un database Oracle a RDS per SQL Server

È possibile attivare uno o più server collegati per Oracle su un'istanza database RDS per SQL Server nuova o esistente. Quindi puoi integrare le origini dei dati Oracle esterne nella tua istanza database.

**Contents**
+ [Versioni e regioni supportate](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [Limitazioni e consigli](#LinkedServers_Oracle_OLEDB.Limitations)
+ [Attivazione di server collegati con Oracle](#LinkedServers_Oracle_OLEDB.Enabling)
  + [Creazione del gruppo di opzioni per OLEDB\$1ORACLE](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [Aggiunta dell'opzione `OLEDB_ORACLE` al gruppo di opzioni](#LinkedServers_Oracle_OLEDB.Add)
  + [Modifica dell’opzione della versione `OLEDB_ORACLE` con un’altra versione](#LinkedServers_Oracle_OLEDB.Modify)
  + [Associazione del gruppo di opzioni all'istanza database](#LinkedServers_Oracle_OLEDB.Apply)
+ [Modifica delle proprietà del provider OLEDB](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [Modifica delle proprietà del driver OLEDB](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [Disattivazione dei server collegati con Oracle](#LinkedServers_Oracle_OLEDB.Disable)

## Versioni e regioni supportate
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

RDS per SQL Server supporta i server collegati con Oracle OLEDB in tutte le regioni per SQL Server Standard ed Enterprise Edition nelle seguenti versioni:
+ SQL Server 2022, tutte le versioni
+ SQL Server 2019, tutte le versioni
+ SQL Server 2017, tutte le versioni

I server collegati con Oracle OLEDB sono supportati per le seguenti versioni di Oracle Database:
+ Oracle Database 21c, tutte le versioni
+ Oracle Database 19c, tutte le versioni
+ Oracle Database 18c, tutte le versioni

I server collegati con Oracle OLEDB sono supportati per le seguenti versioni del driver di Oracle OLEDB:
+ 21,7
+ 21,16

## Limitazioni e consigli
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

Tieni presente le seguenti limitazioni e raccomandazioni che si applicano ai server collegati con Oracle OLEDB:
+ Consenti il traffico di rete aggiungendo la porta TCP applicabile nel gruppo di sicurezza per ogni istanza database RDS per SQL Server. Ad esempio, se stai configurando un server collegato tra un'istanza database Oracle EC2 e un'istanza database RDS per SQL Server, devi consentire il traffico dall'indirizzo IP dell'istanza database Oracle EC2. È inoltre necessario consentire il traffico sulla porta utilizzata da SQL Server per ascoltare le comunicazioni con il database. Per ulteriori informazioni sui gruppi di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md).
+ Esegui un riavvio dell'istanza database RDS per SQL Server dopo aver attivato, disattivato o modificato l'opzione `OLEDB_ORACLE` nel tuo gruppo di opzioni. Lo stato del gruppo di opzioni è `pending_reboot` per questi eventi ed è obbligatorio. Per le istanze RDS per SQL Server Multi-AZ con l'opzione Mirroring abilitata, è previsto un failover al riavvio dell'istanza dopo la creazione AlwaysOn o il ripristino della nuova istanza.
+ È supportata solo l'autenticazione semplice con un nome utente e una password per l'origine dei dati Oracle.
+ I driver Open Database Connectivity (ODBC) non sono supportati. Sono supportate solo le versioni del driver OLEDB elencate sopra.
+ Le transazioni distribuite (XA) sono supportate. Per attivare le transazioni distribuite, attiva l'opzione `MSDTC` nel gruppo di opzioni per la tua istanza database e assicurati che le transazioni XA siano attivate. Per ulteriori informazioni, consulta [Supporto per Microsoft Distributed Transaction Coordinator in RDS per SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ La creazione di nomi di origini dati (DSNs) da utilizzare come scorciatoia per una stringa di connessione non è supportata.
+ Il tracciamento dei driver OLEDB non è supportato. È possibile utilizzare gli eventi estesi SQL Server per tracciare gli eventi OLEDB. Per ulteriori informazioni, consulta [Set up Extended Events in RDS for SQL Server](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/) (Impostazione degli eventi estesi in RDS per SQL Server).
+ L'accesso alla cartella dei cataloghi per un server collegato Oracle non è supportato con SQL Server Management Studio (SSMS).

## Attivazione di server collegati con Oracle
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

Attiva i server collegati con Oracle aggiungendo l' opzione `OLEDB_ORACLE` all'istanza database RDS per SQL Server. Utilizzare il seguente processo:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `OLEDB_ORACLE` al gruppo di opzioni.

1. Scegli la versione del driver OLEDB da usare.

1. Associare il gruppo di opzioni a questa istanza database.

1. Riavvia l'istanza database.

### Creazione del gruppo di opzioni per OLEDB\$1ORACLE
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

Per utilizzare i server collegati con Oracle, crea un gruppo di opzioni o modifica un gruppo di opzioni che corrisponda all'edizione di SQL Server e alla versione dell'istanza database che vuoi utilizzare. Per completare questa procedura, utilizzare Console di gestione AWS o il AWS CLI.

#### Console
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2019.

**Per creare il gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, inserisci un nome per il gruppo di opzioni che sia unico all'interno del tuo AWS account, ad esempio**oracle-oledb-se-2019**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **OLEDB\$1ORACLE option group for SQL Server SE 2019**. La descrizione viene usata per la visualizzazione.

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Major engine version** (Versione del motore principale), scegli **15.00**.

1. Scegli **Create** (Crea).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.CLI"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2019.

**Per creare il gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --engine-name sqlserver-se \
      --major-engine-version 15.00 \
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

  Per Windows:

  ```
  aws rds create-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --engine-name sqlserver-se ^
      --major-engine-version 15.00 ^
      --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"
  ```

### Aggiunta dell'opzione `OLEDB_ORACLE` al gruppo di opzioni
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

Quindi, usa Console di gestione AWS o AWS CLI per aggiungere l'`OLEDB_ORACLE`opzione al tuo gruppo di opzioni.

#### Console
<a name="LinkedServers_Oracle_OLEDB.Add.Console"></a>

**Per aggiungere l'opzione OLEDB\$1ORACLE**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegli il gruppo di opzioni che hai appena creato, che in questo **oracle-oledb-seesempio è -2019**.

1. Scegliere **Add option (Aggiungi opzione)**.

1. In **Option details** (Dettagli opzione), scegli **OLEDB\$1ORACLE** per **Option name** (Nome opzione).

1. In **Versione**, scegli la versione del driver Oracle OLEDB che desideri installare.

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

**Per aggiungere l'opzione OLEDB\$1ORACLE**
+ Aggiungere l'opzione `OLEDB_ORACLE` al gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.16 ^
      --apply-immediately
  ```

### Modifica dell’opzione della versione `OLEDB_ORACLE` con un’altra versione
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

Per modificare la versione dell'`OLEDB_ORACLE`opzione in un'altra versione, usa il Console di gestione AWS o il AWS CLI.

#### Console
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**Per modificare l’opzione OLEDB\$1ORACLE**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegli il gruppo di opzioni con l'`OLEDB_ORACLE`opzione (**oracle-oledb-se-2019** nell'esempio precedente).

1. Scegli **Modify option** (Modifica l'opzione).

1. In **Option details** (Dettagli opzione), scegli **OLEDB\$1ORACLE** per **Option name** (Nome opzione).

1. In **Versione** scegli la versione del driver Oracle OLEDB da utilizzare.

1. In **Pianificazione**, scegli se aggiungere l’opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegli **Modify option** (Modifica l'opzione).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

Per modificare la versione dell’opzione `OLEDB_ORACLE`, utilizza il comando AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) con il gruppo di opzioni e l’opzione da modificare.

**Per modificare l’opzione OLEDB\$1ORACLE**
+   
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OptionName=OLEDB_ORACLE, OptionVersion=21.7 ^
      --apply-immediately
  ```

### Associazione del gruppo di opzioni all'istanza database
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

Per associare il gruppo di `OLEDB_ORACLE` opzioni e il gruppo di parametri alla tua istanza DB, usa il Console di gestione AWS o il AWS CLI 

#### Console
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

Per completare l'attivazione dei server collegati per Oracle, associa il gruppo di opzioni `OLEDB_ORACLE` a un'istanza database nuova o esistente:
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Apply.CLI"></a>

Puoi associare il gruppo di opzioni `OLEDB_ORACLE` e il gruppo di parametri a un'istanza database nuova o esistente.

**Per creare un'istanza con il gruppo di opzioni `OLEDB_ORACLE` e il gruppo di parametri**
+ Specificare lo stesso tipo di motore database e la versione principale utilizzata durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 15.0.4236.7.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 15.0.4236.7.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name
  ```

**Per modificare un'istanza e associare il gruppo di opzioni `OLEDB_ORACLE`**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestsqlserveroracleoledbinstance \
      --option-group-name oracle-oledb-se-2019 \
      --db-parameter-group-name my-parameter-group-name \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestsqlserveroracleoledbinstance ^
      --option-group-name oracle-oledb-se-2019 ^
      --db-parameter-group-name my-parameter-group-name ^
      --apply-immediately
  ```

## Modifica delle proprietà del provider OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

È possibile visualizzare e modificare le proprietà del provider OLEDB. Solo l'utente `master` può eseguire questa attività. Tutti i server collegati per Oracle creati sull'istanza database utilizzano le stesse proprietà del provider OLEDB. Chiama la stored procedure `sp_MSset_oledb_prop` per modificare le proprietà del provider OLEDB.

Per modificare le proprietà del provider OLEDB

```
				
USE [master]
GO
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1 
EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'DynamicParameters', 0
GO
```

È possibile modificare le seguenti proprietà:


****  

| Nome proprietà | Valore consigliato (1 = attivato, 0 = disattivato) | Description | 
| --- | --- | --- | 
| `Dynamic parameter` | 1 | Consente segnaposti SQL (rappresentati da "?") nelle query parametrizzate. | 
| `Nested queries` | 1 | Consente istruzioni annidate `SELECT` nella clausola `FROM`, ad esempio le query secondarie. | 
| `Level zero only` | 0 | Solo le interfacce OLEDB di livello base vengono chiamate sul provider. | 
| `Allow inprocess` | 1 | Se attivato, Microsoft SQL Server consente di creare l'istanza del provider come server in esecuzione. Imposta questa proprietà su 1 per utilizzare i server collegati Oracle. | 
| `Non transacted updates` | 0 | Se diverso da zero, SQL Server consente gli aggiornamenti. | 
| `Index as access path` | False | Se diverso da zero, SQL Server tenta di utilizzare gli indici del provider per recuperare i dati. | 
| `Disallow adhoc access` | False | Se impostato, SQL Server non consente l'esecuzione di query pass-through sul provider OLEDB. Sebbene questa opzione possa essere selezionata, a volte è opportuno eseguire query pass-through. | 
| `Supports LIKE operator` | 1 | Indica che il provider supporta le query utilizzando la parola chiave LIKE. | 

## Modifica delle proprietà del driver OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

È possibile visualizzare e modificare le proprietà del driver OLEDB per la creazione di un server collegato per Oracle. Solo l'utente `master` può eseguire questa attività. Le proprietà del driver definiscono il modo in cui il driver OLEDB gestisce i dati quando utilizza un'origine dei dati Oracle remota. Le proprietà del driver sono specifiche per ogni server collegato Oracle creato nell'istanza database. Chiama la stored procedure `master.dbo.sp_addlinkedserver` per modificare le proprietà del driver OLEDB.

Esempio: per creare un server collegato e modificare la proprietà `FetchSize` del driver OLEDB

```
	
EXEC master.dbo.sp_addlinkedserver
@server = N'Oracle_link2',
@srvproduct=N'Oracle',
@provider=N'OraOLEDB.Oracle',
@datasrc=N'my-oracle-test.cnetsipka.us-west-2.rds.amazonaws.com:1521/ORCL',
@provstr='FetchSize=200'
GO
```

```
	
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'Oracle_link2',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'master',
@rmtpassword='Test#1234'
GO
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

## Disattivazione dei server collegati con Oracle
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

Per disattivare i server collegati con Oracle, rimuovi l'opzione `OLEDB_ORACLE` dal gruppo di opzioni.

**Importante**  
La rimozione dell'opzione non elimina le configurazioni del server collegato esistente nell'istanza database. È necessario eliminarle manualmente per rimuoverle dall'istanza database.  
È possibile riattivare l'opzione `OLEDB_ORACLE` dopo la rimozione per riutilizzare le configurazioni del server collegato precedentemente presenti nell'istanza database.

### Console
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

La procedura seguente rimuove l'opzione `OLEDB_ORACLE`.

**Per rimuovere l'opzione OLEDB\$1ORACLE dal suo gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l'opzione `OLEDB_ORACLE` (`oracle-oledb-se-2019` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. In **Deletion options** (Opzioni di eliminazione), scegli **OLEDB\$1ORACLE** per **Options to delete** (Opzioni da eliminare).

1. In **Apply immediately** (Applica immediatamente), scegli **Yes** (Sì) per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegli **Elimina**.

### CLI
<a name="LinkedServers_Oracle_OLEDB.Disable.CLI"></a>

La procedura seguente rimuove l'opzione `OLEDB_ORACLE`.

**Per rimuovere l'opzione OLEDB\$1ORACLE dal suo gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name oracle-oledb-se-2019 \
      --options OLEDB_ORACLE \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name oracle-oledb-se-2019 ^
      --options OLEDB_ORACLE ^
      --apply-immediately
  ```

# Server collegati con Teradata ODBC in RDS per SQL Server
<a name="USER_SQLServerTeradata"></a>

Il supporto per i server collegati con il driver Teradata ODBC su RDS per SQL Server consente di accedere alle origini dati esterne in un database Teradata. È possibile leggere dati ed eseguire comandi dai server di database Teradata remoti esterni all’istanza RDS per SQL Server. I server collegati con Teradata ODBC consentono di utilizzare le seguenti funzionalità:
+ Accesso diretto a origini dati diverse da SQL Server.
+ Esecuzione di query su origini dati Teradata diverse con la stessa query senza spostare i dati.
+ Esecuzione di query, aggiornamenti, comandi e transazioni distribuiti sulle origini dati in un ecosistema aziendale.
+ Integrazione delle connessioni a un database Teradata dall’interno della suite Microsoft Business Intelligence (SSIS, SSRS, SSAS).
+ Migrazione da un database Teradata a RDS per SQL Server.

È possibile attivare uno o più server collegati per Teradata su un’istanza database RDS per SQL Server nuova o esistente. Quindi si integrano le origini dati Teradata esterne nell’istanza database.

**Topics**
+ [Versioni e regioni supportate](#USER_SQLServerTeradata.VersionRegionSupport)
+ [Limitazioni e consigli](#USER_SQLServerTeradata.LimitsandRecommendations)
+ [Considerazioni sull’implementazione Multi-AZ](#USER_SQLServerTeradata.MultiAZ)
+ [Attivazione di server collegati con Teradata](USER_SQLServerTeradata.Activate.md)
+ [Creazione di server collegati con Teradata](USER_SQLServerTeradata.CreateLinkedServers.md)
+ [Disattivazione dei server collegati a Teradata](USER_SQLServerTeradata.Deactivate.md)

## Versioni e regioni supportate
<a name="USER_SQLServerTeradata.VersionRegionSupport"></a>

RDS per SQL Server supporta i server collegati con Teradata ODBC in tutte le Regioni AWS per SQL Server Standard ed Enterprise Edition nelle seguenti versioni:
+ SQL Server 2022, tutte le versioni
+ SQL Server 2019, tutte le versioni
+ SQL Server 2017, tutte le versioni

Le seguenti versioni del database Teradata supportano il collegamento con RDS per SQL Server
+ Teradata 17.20, tutte le versioni

## Limitazioni e consigli
<a name="USER_SQLServerTeradata.LimitsandRecommendations"></a>

Ai server collegati con Teradata ODBC si applicano le seguenti limitazioni:
+ RDS per SQL Server supporta solo l’autenticazione semplice con nome utente e password per l’origine Teradata.
+ RDS per SQL Server supporta solo il driver Teradata ODBC versione 17.20.0.33.
+ RDS per SQL Server non supporta la creazione di nomi (DSN) di origine dati da utilizzare come collegamenti per una stringa di connessione.
+ RDS per SQL Server non supporta il tracciamento del driver ODBC. È possibile utilizzare gli eventi estesi SQL Server per tracciare gli eventi ODBC. Per ulteriori informazioni, consulta [Set up Extended Events in RDS for SQL Server](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/) (Impostazione degli eventi estesi in RDS per SQL Server).
+ RDS per SQL Server non supporta l’accesso alla cartella dei cataloghi per un server collegato con Teradata quando si utilizza SQL Server Management Studio (SSMS).

Quando si utilizzano server collegati con Teradata ODBC, occorre tenere presenti le seguenti considerazioni:
+ Consenti il traffico di rete aggiungendo la porta TCP applicabile nel gruppo di sicurezza per ogni istanza database RDS per SQL Server. Se si sta configurando un server collegato tra un’istanza database EC2 Teradata e un’istanza database RDS per SQL Server, è necessario consentire il traffico dall’indirizzo IP dell’istanza database EC2 Teradata. È inoltre necessario consentire il traffico sulla porta utilizzata dall’istanza database RDS per SQL Server per ascoltare la comunicazione del database. Per ulteriori informazioni sui gruppi di sicurezza, consulta [Controllo dell'accesso con i gruppi di sicurezza](Overview.RDSSecurityGroups.md).
+ Le transazioni distribuite (XA) sono supportate. Per abilitare le transazioni distribuite, si attiva l’opzione `MSDTC` nel gruppo di opzioni per l’istanza database, quindi è necessario assicurarsi che le transazioni XA siano attivate. Per ulteriori informazioni, consulta [Supporto per Microsoft Distributed Transaction Coordinator in RDS per SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ Il server collegato con Teradata ODBC supporta SSL/TLS, purché sia configurato sul server Teradata. Per ulteriori informazioni, consultare [Enable TLS Connectivity on Teradata Vantage](https://docs.teradata.com/r/Enterprise_IntelliFlex_Lake_VMware/Teradata-Call-Level-Interface-Version-2-Reference-for-Workstation-Attached-Systems-20.00/Mainframe-TLS-Connectivity-Supplement/Enable-TLS-Connectivity-on-Teradata-Vantage).

## Considerazioni sull’implementazione Multi-AZ
<a name="USER_SQLServerTeradata.MultiAZ"></a>

RDS per SQL Server attualmente non replica i server collegati sul server di database con mirroring (o sul server secondario del gruppo di disponibilità Always-On) in un’implementazione Multi-AZ. Se i server collegati vengono aggiunti prima che la configurazione venga modificata per aggiungere il server con mirroring o Always On, i server collegati vengono copiati per i server collegati esistenti.

In alternativa, è possibile creare i server collegati sull’istanza primaria, eseguire il failover sull’istanza del server a disponibilità elevata e quindi creare nuovamente i server collegati in modo che siano presenti su entrambe le istanze RDS per SQL Server. 

# Attivazione di server collegati con Teradata
<a name="USER_SQLServerTeradata.Activate"></a>

Informazioni su come attivare i server collegati con Teradata aggiungendo l’opzione `ODBC_TERADATA` all’istanza database RDS per SQL Server. Utilizzare il seguente processo:

**Topics**
+ [Creazione del gruppo di opzioni per `ODBC_TERADATA`](#USER_SQLServerTeradata.Activate.CreateOG)
+ [Aggiunta dell'opzione `ODBC_TERADATA` al gruppo di opzioni](#USER_SQLServerTeradata.Activate.AddOG)
+ [Associazione dell’opzione `ODBC_TERADATA` all’istanza database](#USER_SQLServerTeradata.Activate.AssociateOG)

## Creazione del gruppo di opzioni per `ODBC_TERADATA`
<a name="USER_SQLServerTeradata.Activate.CreateOG"></a>

Per utilizzare i server collegati con Teradata, si crea un gruppo di opzioni o si modifica un gruppo di opzioni che corrisponda all’edizione di SQL Server e alla versione dell’istanza database da utilizzare. Per completare questa procedura, utilizza la Console di gestione AWS o AWS CLI.

### Console
<a name="USER_SQLServerTeradata.Activate.CreateOG.Console"></a>

La seguente procedura consente di creare un gruppo di opzioni per SQL Server Standard Edition 2019.

**Per creare il gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. In **Name** (Nome), immetti un nome per il gruppo di opzioni che sia univoco all'interno dell'account Account AWS, ad esempio `teradata-odbc-se-2019`. Il nome può includere solo lettere, cifre e trattini. 

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni.

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Major engine version** (Versione del motore principale), scegli **15.00**.

1. Scegli **Create** (Crea).

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.CreateOG.CLI"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2019.

**Example**  
Per Linux, macOS o Unix:  

```
aws rds create-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --engine-name sqlserver-se \
    --major-engine-version 15.00 \
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

**Example**  
Per Windows:  

```
aws rds create-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --engine-name sqlserver-se ^
    --major-engine-version 15.00 ^
    --option-group-description "ODBC_TERADATA option group for SQL Server SE 2019"
```

## Aggiunta dell'opzione `ODBC_TERADATA` al gruppo di opzioni
<a name="USER_SQLServerTeradata.Activate.AddOG"></a>

Utilizzare la Console di gestione AWS o l'AWS CLI per aggiungere l'opzione `ODBC_Teradata` al gruppo di opzioni.

### Console
<a name="USER_SQLServerTeradata.Activate.AddOG.Console"></a>

La seguente procedura consente di creare un gruppo di opzioni per SQL Server Standard Edition 2019.

**Per aggiungere l’opzione `ODBC_TERADATA`**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il nuovo gruppo di opzioni.

1. Scegliere **Add option (Aggiungi opzione)**.

1. In **Dettagli opzione**:

   1. Scegliere **ODBC\$1TERADATA** come **Nome opzione.**

   1. Scegliere `17.20.33.00` per **Versione opzione**.

1. In Pianificazione, scegliere se aggiungere l’opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AddOG.CLI"></a>

La procedura seguente consente di aggiungere l’opzione `ODBC_TERADATA` al gruppo di opzioni.

**Example**  
Per Linux, macOS o Unix:  

```
aws rds add-option-to-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" \
    --apply-immediately
```

**Example**  
Per Windows:  

```
aws rds add-option-to-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options "OptionName=ODBC_TERADATA,OptionVersion=17.20.33.00" ^
    --apply-immediately
```

## Associazione dell’opzione `ODBC_TERADATA` all’istanza database
<a name="USER_SQLServerTeradata.Activate.AssociateOG"></a>

Per associare il gruppo di opzioni `ODBC_TERADATA` all’istanza database si utilizza la Console di gestione AWS o AWS CLI.

### Console
<a name="USER_SQLServerTeradata.Activate.AssociateOG.Console"></a>

Per completare l’attivazione dei server collegati per Teradata, associare il gruppo di opzioni a un’istanza database nuova o esistente:
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### AWS CLI
<a name="USER_SQLServerTeradata.Activate.AssociateOG.CLI"></a>

Specificare lo stesso tipo di motore database e la versione principale utilizzata durante la creazione del gruppo di opzioni.

Per Linux, macOS o Unix:

```
aws rds create-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --db-instance-class db.m5.2xlarge \
    --engine sqlserver-se \
    --engine-version 15.00 \
    --license-model license-included \
    --allocated-storage 100 \
    --master-username admin \
    --master-user-password password \
    --storage-type gp2 \
    --option-group-name teradata-odbc-se-2019
```

Per Windows:

```
aws rds create-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --db-instance-class db.m5.2xlarge ^
    --engine sqlserver-se ^
    --engine-version 15.00 ^
    --license-model license-included ^ 
    --allocated-storage 100 ^
    --master-username admin ^
    --master-user-password password ^
    --storage-type gp2 ^
    --option-group-name teradata-odbc-se-2019
```

Per modificare un’istanza e associare il nuovo gruppo di opzioni:

Per Linux, macOS o Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier mytestsqlserverteradataodbcinstance \
    --option-group-name teradata-odbc-se-2019 \
    --apply-immediately
```

Per Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier mytestsqlserverteradataodbcinstance ^
    --option-group-name teradata-odbc-se-2019 ^
    --apply-immediately
```

# Creazione di server collegati con Teradata
<a name="USER_SQLServerTeradata.CreateLinkedServers"></a>

Per creare un server collegato con Teradata, eseguire i comandi seguenti:

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServer_NAME', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=Server;UID=user_name;PWD=user_password;
                UseDataEncryption=YES/NO;SSLMODE=PREFER/ALLOW/DISABLE>;"', 
    @catalog='database'
```

```
EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServer_NAME', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'user_name', 
    @rmtpassword = N'user_password'
```

Di seguito è riportato un esempio dei comandi precedenti:

```
EXECUTE master.dbo.sp_addlinkedserver 
    @server = N'LinkedServerToTeradata', 
    @srvproduct=N'', 
    @provider=N'MSDASQL', 
    @provstr=N'"PROVIDER=MSDASQL;DRIVER={Teradata Database ODBC Driver 17.20};
                DBCName=my-teradata-test.cnetsipka.us-west-2.rds.amazonaws.com;
                UID=master;
                PWD=Test#1234;
                UseDataEncryption=YES;
                SSLMODE=PREFER;"', 
    @catalog='MyTestTeradataDB'

EXECUTE master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkedServerToTeradata', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'master', 
    @rmtpassword = N'Test#1234'
```

**Nota**  
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

# Disattivazione dei server collegati a Teradata
<a name="USER_SQLServerTeradata.Deactivate"></a>

Per disattivare i server collegati a Teradata, si rimuove l’opzione `ODBC_TERADATA` dal gruppo di opzioni.

**Importante**  
L’eliminazione dell’opzione non elimina le configurazioni del server collegato nell’istanza database. È necessario eliminarle manualmente per rimuoverle dall'istanza database.  
È possibile riattivare l’opzione `ODBC_TERADATA` dopo la rimozione per riutilizzare le configurazioni del server collegato precedentemente presenti nell’istanza database.

## Console
<a name="USER_SQLServerTeradata.Deactivate.Console"></a>

Per rimuovere l’opzione `ODBC_TERADATA` dal gruppo di opzioni

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l’opzione `ODBC_TERADATA`. 

1. Scegliere **Delete** (Elimina).

1. In **Opzioni di eliminazione**, scegliere `ODBC_TERADATA` in **Opzioni da eliminare**.

1. In **Apply immediately** (Applica immediatamente), scegli **Yes** (Sì) per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegliere **Delete** (Elimina).

## AWS CLI
<a name="USER_SQLServerTeradata.Deactivate.CLI"></a>

I comandi seguenti rimuovono l’opzione `ODBC_TERADATA`.

Per Linux, macOS o Unix:

```
aws rds remove-option-from-option-group \
    --option-group-name teradata-odbc-se-2019 \
    --options ODBC_TERADATA \
    --apply-immediately
```

Per Windows:

```
aws rds remove-option-from-option-group ^
    --option-group-name teradata-odbc-se-2019 ^
    --options ODBC_TERADATA ^
    --apply-immediately
```

# Supporto per backup nativo e ripristino in SQL Server
<a name="Appendix.SQLServer.Options.BackupRestore"></a>

Utilizzando il backup nativo e il ripristino per i database di SQL Server, puoi creare un backup differenziale o completo del database locale e archiviare i file di backup in Amazon S3. È quindi possibile ripristinarli in un'istanza database Amazon RDS che esegue SQL Server. Si può anche eseguire il backup di un database RDS for SQL Server, archiviarlo in Amazon S3 e ripristinarlo in altre posizioni. Inoltre, il backup può essere ripristinato in un server locale o in un'altra istanza database Amazon RDS che esegue SQL Server. Per ulteriori informazioni, consulta [Importazione ed esportazione di database SQL Server mediante backup e ripristino nativi](SQLServer.Procedural.Importing.md).

Amazon RDS supporta il backup nativo e il ripristino dei database di Microsoft SQL Server tramite file di backup differenziali e completi (file .bak).

## Aggiunta dell'opzione Native Backup and Restore (Backup nativo e ripristino)
<a name="Appendix.SQLServer.Options.BackupRestore.Add"></a>

Di seguito è riportato il processo generale per aggiungere l'opzione di backup nativo e ripristino a un'istanza database:

1. Creare un nuovo gruppo di opzioni oppure copiare o modificare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `SQLSERVER_BACKUP_RESTORE` al gruppo di opzioni.

1. Associare un ruolo AWS Identity and Access Management (IAM) all'opzione. Il ruolo IAM deve avere accesso a un bucket S3 per archiviare i backup del database.

   In altre parole, nell'impostazione dell'opzione deve essere specificato un Amazon Resource Name (ARN) valido in formato `arn:aws:iam::account-id:role/role-name`. Per ulteriori informazioni, consulta [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) nella *Riferimenti generali di AWS.*

   Il ruolo IAM deve inoltre avere una relazione di fiducia e una policy di autorizzazione allegata. La relazione di attendibilità consente a RDS di assumere il ruolo e la policy delle autorizzazioni definisce le azioni che il ruolo può eseguire. Per ulteriori informazioni, consulta [Creazione manuale di un ruolo IAM per backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM).

1. Associare il gruppo di opzioni a questa istanza database.

Dopo aver aggiunto l'opzione di backup nativo e ripristino, non è necessario riavviare l'istanza database. Non appena il gruppo di opzioni è attivo, potrai iniziare immediatamente a eseguire il backup e il ripristino.

### Console
<a name="Add.Native.Backup.Restore.Console"></a>

**Per aggiungere l'opzione di backup nativo e ripristino**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente. Per informazioni su come creare un gruppo di opzioni database personalizzato, consultare [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create).

   Per utilizzare un gruppo di opzioni esistente, passare alla fase successiva.

1. Aggiungere l'opzione **SQLSERVER\$1BACKUP\$1RESTORE** al gruppo di opzioni. Per ulteriori informazioni sull'aggiunta di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1. Scegliere una delle seguenti operazioni:
   + Per utilizzare un ruolo IAM esistente e le impostazioni Amazon S3, scegliere un ruolo IAM esistente per **IAM Role (Ruolo IAM)**. Se si sceglie un ruolo IAM esistente, RDS utilizza le impostazioni Amazon S3 configurate per tale ruolo.
   + Per creare un nuovo ruolo e configurare nuove impostazioni Amazon S3, procedere come segue: 

     1. Per **Ruolo IAM**, scegli **Crea un nuovo ruolo**.

     1. Per **S3 bucket name (Nome bucket S3)**, scegli un bucket S3 esistente dall'elenco.

     1. Per **S3 folder path prefix (optional) (Prefisso percorso cartella S3, facoltativo)**, specificare un prefisso da utilizzare per i file archiviati nel bucket Amazon S3. 

        Questo prefisso può includere un percorso del file, ma non è obbligatorio. Se si include un prefisso, RDS lo aggiunge a tutti i file di backup. RDS utilizza quindi il prefisso durante il ripristino per identificare i file correlati e ignorare quelli irrilevanti. Ad esempio, si può utilizzare il bucket S3 per scopi diversi dal mantenimento dei file di backup. In questo caso, è possibile utilizzare il prefisso per far eseguire a RDS un backup nativo e un ripristino solo su una specifica cartella e sulle relative sottocartelle.

        Se il prefisso viene lasciato vuoto, RDS non lo utilizza per identificare i file per il backup o per il ripristino. Di conseguenza, durante un ripristino di più file, RDS prova a ripristinare tutti i file in tutte le cartelle del bucket S3.

     1. In **Enable Encryption (Abilita crittografia)** scegliere Yes (Sì) per crittografare il file di backup. Lasciare deselezionata la casella di controllo (impostazione predefinita) per non crittografare il file di backup.

        Se hai scelto **Abilita crittografia**, seleziona una chiave di crittografia per **AWS KMS key**. Per ulteriori informazioni sulle chiavi di crittografia, consulta [Nozioni di base](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) nella *Guida per gli sviluppatori di AWS Key Management Service*.

1. Scegliere **Add option (Aggiungi opzione)**.

1. Applicare il gruppo di opzioni a un'istanza database nuova o esistente:
   + Per una nuova istanza database, applicare il gruppo di opzioni quando viene avviata l'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md). 
   + Per un'istanza database esistente, applicare il gruppo di opzioni modificando l'istanza e collegando il nuovo gruppo di opzioni. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

### CLI
<a name="Add.Native.Backup.Restore.CLI"></a>

Questa procedura prevede i seguenti presupposti:
+ Si sta aggiungendo l'opzione SQLSERVER\$1BACKUP\$1RESTORE a un gruppo di opzioni già esistente. Per ulteriori informazioni sull'aggiunta di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).
+ Si sta associando l'opzione a un ruolo IAM già esistente e che ha accesso a un bucket S3 per archiviare i backup.
+ Si sta applicando il gruppo di opzioni a un'istanza database già esistente. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

**Per aggiungere l'opzione di backup nativo e ripristino**

1. Aggiungere l'opzione `SQLSERVER_BACKUP_RESTORE` al gruppo di opzioni.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws rds add-option-to-option-group \
   	--apply-immediately \
   	--option-group-name mybackupgroup \
   	--options "OptionName=SQLSERVER_BACKUP_RESTORE, \
   	  OptionSettings=[{Name=IAM_ROLE_ARN,Value=arn:aws:iam::account-id:role/role-name}]"
   ```

   Per Windows:

   ```
   aws rds add-option-to-option-group ^
   	--option-group-name mybackupgroup ^
   	--options "[{\"OptionName\": \"SQLSERVER_BACKUP_RESTORE\", ^
   	\"OptionSettings\": [{\"Name\": \"IAM_ROLE_ARN\", ^
   	\"Value\": \"arn:aws:iam::account-id:role/role-name"}]}]" ^
   	--apply-immediately
   ```
**Nota**  
Quando usi il prompt comandi di Windows, non devi inserire le doppie virgolette (") nel codice JSON precedendole con il backslash (\$1).

1. Applicare il gruppo di opzioni all'istanza database.  
**Example**  

   Per Linux, macOS, o Unix:

   ```
   aws rds modify-db-instance \
   	--db-instance-identifier mydbinstance \
   	--option-group-name mybackupgroup \
   	--apply-immediately
   ```

   Per Windows:

   ```
   aws rds modify-db-instance ^
   	--db-instance-identifier mydbinstance ^
   	--option-group-name mybackupgroup ^
   	--apply-immediately
   ```

## Modifica delle impostazioni dell'opzione Native Backup and Restore (Backup nativo e ripristino)
<a name="Appendix.SQLServer.Options.BackupRestore.ModifySettings"></a>

Dopo aver abilitato l'opzione di backup nativo e ripristino, puoi modificare le impostazioni per l'opzione. Per ulteriori informazioni su come modificare le impostazioni dell'opzione, consulta [Modifica di un'impostazione di un'opzione](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Rimozione dell'opzione Native Backup and Restore (Backup nativo e ripristino)
<a name="Appendix.SQLServer.Options.BackupRestore.Remove"></a>

Puoi disattivare la funzionalità di backup nativo e ripristino rimuovendo l'opzione dall'istanza database. Dopo aver rimosso l'opzione di backup nativo e ripristino, non è necessario riavviare l'istanza database. 

Per rimuovere l'opzione di backup nativo e ripristino da un'istanza database, puoi procedere in uno dei seguenti modi: 
+ Rimuovere l'opzione dal gruppo di opzioni a cui appartiene. Questa modifica coinvolge tutte le istanze database che usano il gruppo di opzioni. Per ulteriori informazioni, consulta [Rimozione di un'opzione da un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption). 
+ Modifica l'istanza database e specifica un altro gruppo di opzioni che non comprenda l'opzione di backup nativo e ripristino. Questa modifica coinvolge una singola istanza database. È possibile specificare il gruppo di opzioni predefinito (vuoto) o un gruppo di opzioni personalizzato diverso. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

# Supporto per Transparent Data Encryption in SQL Server
<a name="Appendix.SQLServer.Options.TDE"></a>

Amazon RDS supporta l'utilizzo di Transparent Data Encryption (TDE) per crittografare i dati archiviati nelle istanze database che eseguono Microsoft SQL Server. TDE consente la crittografia automatica dei dati prima che vengano trascritti nello storage e la loro decriptazione automatica durante la lettura dallo storage. 

Amazon RDS supporta TDE per le seguenti versioni ed edizioni di SQL Server:
+ SQL Server 2022 Standard ed Enterprise Edition
+ SQL Server 2019 Standard ed Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

**Nota**  
RDS per SQL Server non supporta TDE per i database di sola lettura.

Transparent Data Encryption per SQL Server offre la gestione delle chiavi di crittografia tramite un'architettura di chiavi a due livelli. Un certificato, generato dalla chiave master del database, viene utilizzato per proteggere le chiavi di crittografia dei dati. La chiave di crittografia del database esegue la crittografia e la decrittografia effettive dei dati nel database utente. Amazon RDS esegue il backup e gestisce la chiave master del database e del certificato TDE.

Transparent Data Encryption è utilizzata negli scenari in cui occorre crittografare i dati sensibili. Ad esempio, potresti dover fornire file di dati e backup a una terza parte o risolvere problemi di conformità relativi a norme di sicurezza. Non è possibile crittografare i database di sistema per SQL Server, ad esempio i database `model` o `master`.

Una descrizione dettagliata di Transparent Data Encryption non rientra nell'ambito di questa guida, ma assicurati di comprendere i vantaggi e gli svantaggi in termini di sicurezza di ciascuna chiave e ciascun algoritmo di crittografia. Per informazioni su Transparent Data Encryption per SQL Server, consulta [Transparent Data Encryption (TDE)](http://msdn.microsoft.com/en-us/library/bb934049.aspx) sul sito Web Microsoft.

**Topics**
+ [Attivazione di TDE per RDS per SQL Server](#TDE.Enabling)
+ [Crittografia dei dati su RDS per SQL Server](TDE.Encrypting.md)
+ [Backup e ripristino dei certificati TDE su RDS per SQL Server](TDE.BackupRestoreRDS.md)
+ [Backup e ripristino di certificati TDE per database on-premise](TDE.BackupRestoreOnPrem.md)
+ [Disattivazione di TDE per RDS per SQL Server](TDE.Disabling.md)

## Attivazione di TDE per RDS per SQL Server
<a name="TDE.Enabling"></a>

Per attivare Transparent Data Encryption per un'istanza database di RDS per SQL Server, specifica l'opzione TDE in gruppo di opzioni RDS associato a tale istanza database.

1. Stabilisci se l'istanza database è già associata a un gruppo di opzioni contenente l'opzione TDE. Per visualizzare il gruppo di opzioni a cui è associata un'istanza DB, utilizzare la console RDS, il [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI comando o l'operazione API [Descrivi DBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html).

1.  Se l'istanza database non è associata a un gruppo di opzioni con TDE attivato, le opzioni sono due. Si può creare un gruppo di opzioni e aggiungere l'opzione TDE o si può modificare il gruppo di opzioni associato in modo da aggiungerlo.
**Nota**  
Nella console RDS l'opzione è denominata `TRANSPARENT_DATA_ENCRYPTION`. Nell'API AWS CLI and RDS, è denominato. `TDE`

   Per informazioni sulla creazione o la modifica di un gruppo di opzioni, consulta [Uso di gruppi di opzioni](USER_WorkingWithOptionGroups.md). Per informazioni sull'aggiunta di un'opzione a un gruppo di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption).

1.  Associa l'istanza database con il gruppo di opzioni contenente l'opzione TDE. Per informazioni su come associare un'istanza database con un gruppo di opzioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### Considerazioni su gruppi di opzioni
<a name="TDE.Options"></a>

L'opzione TDE è un'opzione persistente. Non può essere rimossa da un gruppo di opzioni, a meno che tutte le istanze database e i backup non siano più associati gruppo di opzioni. Una volta aggiunta l'opzione TDE a un gruppo di opzioni, quest'ultimo può essere associato solo a istanze database che utilizzano TDE. Per ulteriori informazioni sulle opzioni persistenti in un gruppo di opzioni, consulta [Panoramica dei gruppi di opzioni](USER_WorkingWithOptionGroups.md#Overview.OptionGroups). 

Poiché l'opzione TDE è persistente, è possibile che si verifichi un conflitto tra un gruppo di opzioni e un'istanza database associata. Nelle seguenti situazioni si può verificare un conflitto:
+ Il gruppo di opzioni corrente dispone dell'opzione TDE e può essere sostituito con un gruppo di opzioni che non dispone dell'opzione TDE.
+ Si esegue il ripristino da uno snapshot DB a una nuova istanza database che non dispone di un gruppo di opzioni che contiene l'opzione TDE. Per ulteriori informazioni su questo scenario, consulta [Considerazioni sui gruppi di opzioni](USER_CopySnapshot.md#USER_CopySnapshot.Options). 

### Considerazioni sulle prestazioni di SQL Server
<a name="TDE.Perf"></a>

L'utilizzo di Transparent Data Encryption può influenzare le prestazioni di un'istanza database di SQL Server.

Le prestazioni dei database non crittografati possono anche essere ridotte se i database si trovano su un'istanza database con almeno un database crittografato. Ti consigliamo pertanto di mantenere i database crittografati e non crittografati su istanze database separate.

# Crittografia dei dati su RDS per SQL Server
<a name="TDE.Encrypting"></a>

Quando l'opzione TDE viene aggiunta a un gruppo di opzioni, Amazon RDS genera un certificato utilizzato nel processo di crittografia. È quindi possibile utilizzare il certificato per eseguire le istruzioni SQL che consentono di crittografare i dati in un database nell'istanza database.

L'esempio seguente utilizza il certificato creato da RDS `RDSTDECertificateName` per crittografare un database denominato `myDatabase`.

```
 1. ---------- Turning on TDE -------------
 2. 
 3. -- Find an RDS TDE certificate to use
 4. USE [master]
 5. GO
 6. SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%'
 7. GO
 8. 
 9. USE [myDatabase]
10. GO
11. -- Create a database encryption key (DEK) using one of the certificates from the previous step
12. CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
13. ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName]
14. GO
15. 
16. -- Turn on encryption for the database
17. ALTER DATABASE [myDatabase] SET ENCRYPTION ON
18. GO
19. 
20. -- Verify that the database is encrypted
21. USE [master]
22. GO
23. SELECT name FROM sys.databases WHERE is_encrypted = 1
24. GO
25. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
26. GO
```

Il tempo necessario a crittografare un database SQL Server utilizzando l'opzione TDE dipende da diversi fattori. Tali fattori includono le dimensioni dell'istanza database, se l'istanza utilizza archiviazione IOPS allocata, la quantità di dati e altri fattori.

# Backup e ripristino dei certificati TDE su RDS per SQL Server
<a name="TDE.BackupRestoreRDS"></a>

RDS per SQL Server fornisce stored procedure per il backup, il ripristino e il rilascio di certificati TDE. RDS per SQL Server fornisce inoltre una funzione per la visualizzazione dei certificati TDE utente ripristinati.

I certificati TDE utente vengono utilizzati per ripristinare i database su RDS per SQL Server on-premise e con TDE attivato. Questi certificati hanno il prefisso `UserTDECertificate_`. Dopo aver ripristinato i database e prima di renderli disponibili per l'uso, RDS modifica i database in cui TDE è attivato per utilizzare i certificati TDE generati da RDS. Questi certificati hanno il prefisso `RDSTDECertificate`.

I certificati TDE dell'utente rimangono nell'istanza database RDS per SQL Server, a meno che non vengano rilasciati utilizzando la stored procedure `rds_drop_tde_certificate`. Per ulteriori informazioni, consulta [Ripristino di certificati TDE ripristinati](#TDE.BackupRestoreRDS.Drop).

Puoi utilizzare un certificato TDE utente per ripristinare altri database dall'istanza database di origine. I database da ripristinare devono utilizzare lo stesso certificato TDE e avere TDE attivato. Non è necessario importare (ripristinare) nuovamente lo stesso certificato. 

**Topics**
+ [Prerequisiti](#TDE.BackupRestoreRDS.Prereqs)
+ [Limitazioni](#TDE.Limitations)
+ [Backup di un certificato TDE](#TDE.BackupRestoreRDS.Backup)
+ [Ripristino di un certificato TDE](#TDE.BackupRestoreRDS.Restore)
+ [Ripristino di certificati TDE ripristinati](#TDE.BackupRestoreRDS.Show)
+ [Ripristino di certificati TDE ripristinati](#TDE.BackupRestoreRDS.Drop)

## Prerequisiti
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

Prima poter eseguire il backup o il ripristino dei certificati TDE su RDS per SQL Server, assicurati di eseguire le seguenti attività. Le prime tre sono descritte in [Configurazione di backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md).

1. Crea bucket Amazon S3 per uso generico o bucket di directory per archiviare file di cui eseguire il backup e il ripristino.

   Si consiglia di utilizzare bucket separati per i backup del database e per i backup dei certificati TDE.

1. Crea un ruolo IAM per il backup e il ripristino dei file.

   Il ruolo IAM deve essere sia un utente sia un amministratore per AWS KMS key.

   Quando si utilizzano i bucket di directory, non sono richieste autorizzazioni aggiuntive oltre a quelle richieste per i bucket di directory. [Creazione manuale di un ruolo IAM per backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)

   Quando si utilizzano risorse S3, il ruolo IAM richiede anche le seguenti autorizzazioni oltre alle autorizzazioni richieste per: [Creazione manuale di un ruolo IAM per backup e ripristino nativi](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
   + `s3:GetBucketAcl`, `s3:GetBucketLocation` e `s3:ListBucket` sulla risorsa di bucket S3

1. Aggiungi l'opzione `SQLSERVER_BACKUP_RESTORE` a un gruppo di opzioni sull'istanza database.

   Questa è in aggiunta all'opzione `TRANSPARENT_DATA_ENCRYPTION` (`TDE`).

1. Assicurati di disporre di una chiave KMS di crittografia simmetrica. Sono disponibili le seguenti opzioni:
   + Se disponi di una chiave KMS esistente nel tuo account, puoi utilizzarla. Non è richiesta alcuna operazione aggiuntiva.
   + Se non disponi di una chiave KMS di crittografia simmetrica esistente nel tuo account, crea una chiave KMS seguendo le istruzioni in [Creazione di chiavi](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.

1. Abilita l'integrazione con Amazon S3 per trasferire file tra l'istanza database e Amazon S3.

   Per ulteriori informazioni sull'abilitazione dell'integrazione di Amazon S3, consulta [Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).

   Tieni presente che i bucket di directory non sono supportati per l'integrazione con S3. Questo passaggio è necessario solo per. [Backup e ripristino di certificati TDE per database on-premise](TDE.BackupRestoreOnPrem.md)

## Limitazioni
<a name="TDE.Limitations"></a>

L'utilizzo di stored procedure per eseguire il backup e il ripristino di certificati TDE presenta le seguenti limitazioni:
+ Le opzioni `SQLSERVER_BACKUP_RESTORE` e `TRANSPARENT_DATA_ENCRYPTION` (`TDE`) devono essere entrambe aggiunte al gruppo di opzioni associato all'istanza database.
+ Il backup e ripristino del certificato TDE non sono supportati nelle istanze database Multi-AZ.
+ L'annullamento delle attività di backup e ripristino del certificato TDE non è supportata.
+ Non è possibile utilizzare un certificato TDE utente per la crittografia TDE di qualsiasi altro database nell'istanza database di RDS per SQL Server. Puoi utilizzarlo per ripristinare solo altri database dall'istanza database di origine in cui TDE è attivato e che utilizzano lo stesso certificato TDE.
+ Puoi rilasciare solo certificati TDE utente.
+ Il numero massimo di certificati TDE utente supportati su RDS è 10. Se il numero supera 10, rilascia i certificati TDE inutilizzati e riprova.
+ Il nome del certificato non può essere vuoto o nullo.
+ Durante il ripristino di un certificato, il nome del certificato non può includere la parola chiave `RDSTDECERTIFICATE` e deve iniziare con il prefisso `UserTDECertificate_`.
+ Il parametro `@certificate_name` può includere solo i seguenti caratteri: a-z, 0-9, @, \$1, \$1 e carattere di sottolineatura (\$1).
+ L'estensione file per `@certificate_file_s3_arn` deve essere .cer (senza distinzione tra maiuscole e minuscole).
+ L'estensione file per `@private_key_file_s3_arn` deve essere .cer (senza distinzione tra maiuscole e minuscole).
+ I metadati S3 per il file della chiave privata devono includere il tag `x-amz-meta-rds-tde-pwd`. Per ulteriori informazioni, consulta [Backup e ripristino di certificati TDE per database on-premise](TDE.BackupRestoreOnPrem.md).
+ RDS per SQL Server non supporta l’utilizzo di chiavi multi-account per il certificato TDE.

## Backup di un certificato TDE
<a name="TDE.BackupRestoreRDS.Backup"></a>

Per eseguire il backup dei certificati TDE, utilizza la stored procedure `rds_backup_tde_certificate`. Di seguito è riportata la sintassi utilizzata.

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id',
    [@overwrite_s3_files=0|1];
```

I parametri seguenti sono obbligatori:
+ `@certificate_name` – Nome del certificato TDE di cui eseguire il backup.
+ `@certificate_file_s3_arn` – Nome della risorsa Amazon (ARN) di destinazione per il file di backup del certificato in Amazon S3.
+ `@private_key_file_s3_arn` – ARN di S3 di destinazione del file della chiave privata che protegge il certificato TDE.
+ `@kms_password_key_arn` – ARN della chiave KMS simmetrica utilizzata per crittografare la password della chiave privata.

Il parametro seguente è facoltativo:
+ `@overwrite_s3_files` – Indica se sovrascrivere il certificato esistente e i file di della chiave privata in S3:
  + `0` – Il file esistente non viene sovrascritto. Questo è il valore predefinito.

    L'impostazione di `@overwrite_s3_files` su 0 restituisce un errore se il file esiste già.
  + `1` – Il file esistente con il nome specificato viene sovrascritto, anche se non è un file di backup.

**Example di backup di un certificato TDE**  

```
EXECUTE msdb.dbo.rds_backup_tde_certificate
    @certificate_name='RDSTDECertificate20211115T185333',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE',
    @overwrite_s3_files=1;
```

## Ripristino di un certificato TDE
<a name="TDE.BackupRestoreRDS.Restore"></a>

La stored procedure `rds_restore_tde_certificate` viene utilizzata per ripristinare (importare) certificati TDE utente. Di seguito è riportata la sintassi utilizzata.

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_certificate_name',
    @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer',
    @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk',
    @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';
```

I parametri seguenti sono obbligatori:
+ `@certificate_name` – Nome del certificato TDE di cui eseguire il backup. Il nome deve iniziare con il prefisso `UserTDECertificate_`.
+ `@certificate_file_s3_arn` – L'ARN S3 del file di backup utilizzato per ripristinare il certificato TDE.
+ `@private_key_file_s3_arn` – L'ARN S3 del file di backup utilizzato per ripristinare il certificato TDE.
+ `@kms_password_key_arn` – L'ARN della chiave KMS simmetrica utilizzata per crittografare la password della chiave privata.

**Example di ripristino di un certificato TDE**  

```
EXECUTE msdb.dbo.rds_restore_tde_certificate
    @certificate_name='UserTDECertificate_myTDEcertificate',
    @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer',
    @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk',
    @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';
```

## Ripristino di certificati TDE ripristinati
<a name="TDE.BackupRestoreRDS.Show"></a>

La funzione `rds_fn_list_user_tde_certificates` viene utilizzata per ripristinare (importare) certificati TDE utente. Di seguito è riportata la sintassi utilizzata.

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

L'output è simile a quello riportato di seguito. Non tutte le colonne sono mostrate qui.


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | AnyCompany Shipping | 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af | 0x6BB218B34110388680B FE1BA2D86C695096485B5 | AnyCompany Shipping | 2022-04-05 19:49:45.0000000 | 2023-04-05 19:49:45.0000000 | NULL | 

## Ripristino di certificati TDE ripristinati
<a name="TDE.BackupRestoreRDS.Drop"></a>

Per eliminare i certificati TDE utente ripristinati (importati) che non si utilizzano, utilizzare il`rds_drop_tde_certificate`procedura archiviata. Di seguito è riportata la sintassi utilizzata.

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

Il parametro seguente è obbligatorio:
+ `@certificate_name` – Nome del certificato TDE da rilasciare.

Puoi rilasciare solo i certificati TDE ripristinati (importati). Non puoi rilasciare i certificati creati da RDS.

**Example di rilascio di un certificato TDE**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```

# Backup e ripristino di certificati TDE per database on-premise
<a name="TDE.BackupRestoreOnPrem"></a>

Puoi eseguire il backup di certificati TDE per i database on-premise, quindi ripristinarli in seguito su RDS per SQL Server. Inoltre, puoi ripristinare un certificato TDE RDS per SQL Server in un'istanza database on-premise.

**Nota**  
RDS per SQL Server non supporta l’utilizzo di chiavi multi-account per il certificato TDE.

La procedura seguente esegue il backup di un certificato TDE e una chiave privata. La chiave privata viene crittografata utilizzando una chiave dei dati generata dalla chiave KMS di crittografia simmetrica.

**Eseguire il backup di un certificato TDE on-premise**

1. Genera la chiave dati usando il AWS CLI [generate-data-key](https://docs.aws.amazon.com/cli/latest/reference/kms/generate-data-key.html)comando.

   ```
   aws kms generate-data-key \
       --key-id my_KMS_key_ID \
       --key-spec AES_256
   ```

   L'output è simile a quello riportato di seguito.

   ```
   {
   "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
   BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
   2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==",
   "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=",
   "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33"
   }
   ```

   L'output di testo normale nel passaggio successivo viene utilizzato come password della chiave privata.

1. Esegui il backup del certificato TDE come mostrato nell'esempio seguente.

   ```
   BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (
   FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk',
   ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
   ```

1. Salva il file di backup del certificato nel bucket di certificato Amazon S3.

1. Salva il file di backup della chiave privata nel bucket di certificato S3, con il seguente tag nei metadati del file:
   + Chiave - `x-amz-meta-rds-tde-pwd`
   + Value – Il valore `CiphertextBlob` risultante dalla generazione della chiave dei dati, come nell'esempio seguente.

     ```
     AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B
     BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ
     2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==
     ```

La procedura seguente consente di ripristinare un certificato TDE RDS per SQL Server in un'istanza database on-premise. Copia e ripristina il certificato TDE sull'istanza database di destinazione utilizzando il backup del certificato, il file della chiave privata corrispondente e la chiave dati. Il certificato ripristinato viene crittografato dalla chiave master del database del nuovo server. 

**Ripristinare un certificato TDE**

1. Copia il file di backup del certificato TDE e il file della chiave privata da Amazon S3 nell'istanza di destinazione. Per ulteriori informazioni sulla copia di file da Amazon S3, consulta [Trasferimento di file tra RDS for SQL Server e Amazon S3](Appendix.SQLServer.Options.S3-integration.using.md).

1. Utilizza la chiave KMS per decrittografare il testo crittografato di output per recuperare il testo normale della chiave dei dati. Il testo crittografato si trova nei metadati S3 del file di backup della chiave privata.

   ```
   aws kms decrypt \
       --key-id my_KMS_key_ID \
       --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \
       --output text \
       --query Plaintext
   ```

   L'output di testo normale nel passaggio successivo viene utilizzato come password della chiave privata.

1. Utilizza il comando SQL seguente per ripristinare il certificato TDE.

   ```
   CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer'
   WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk',
   DECRYPTION BY PASSWORD = 'plain_text_output');
   ```

Per ulteriori informazioni sulla decrittografia KMS, consulta [decrittografare](https://docs.aws.amazon.com/cli/latest/reference/kms/decrypt.html) nella sezione KMS del *Riferimento ai comandi AWS CLI *.

Dopo che il certificato TDE è stato ripristinato sull'istanza database di destinazione, puoi ripristinare i database crittografati con tale certificato.

**Nota**  
Puoi utilizzare lo stesso certificato TDE per crittografare più database SQL Server sull'istanza database di origine. Per migrare più database a un'istanza di destinazione, copia il certificato TDE ad essi associato nell'istanza di destinazione una sola volta.

# Disattivazione di TDE per RDS per SQL Server
<a name="TDE.Disabling"></a>

Per disattivare TDE per un'istanza database di RDS per SQL Server, assicurati che non siano presenti oggetti crittografati nell'istanza database. A questo scopo, esegui la decrittografia degli oggetti o rilasciali. Se nell'istanza database sono presenti oggetti crittografati, non è possibile disattivare TDE per l'istanza database. Se un certificato TDE utente per la crittografia è stato ripristinato (importato), deve essere eliminato. Quando utilizzi la console per rimuovere l'opzione TDE da un gruppo di opzioni, la console indica che il processo è in corso. Inoltre, viene creato un evento di errore se il gruppo di opzioni è associato a un'istanza database o a una snapshot DB crittografati.

L'esempio seguente rimuove la crittografia TDE da un database denominato `customerDatabase`. 

```
 1. ------------- Removing TDE ----------------
 2. 
 3. USE [customerDatabase]
 4. GO
 5. 
 6. -- Turn off encryption of the database
 7. ALTER DATABASE [customerDatabase]
 8. SET ENCRYPTION OFF
 9. GO
10. 
11. -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while
12. SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
13. GO
14. 
15. -- Drop the DEK used for encryption
16. DROP DATABASE ENCRYPTION KEY
17. GO
18. 
19. -- Drop a user TDE certificate if it was restored (imported)
20. EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
21. 
22. -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated
23. USE [master]
24. GO
25. ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE
26. GO
```

Quando tutti gli oggetti vengono decrittografati, sono disponibili due opzioni.

1. Puoi modificare l'istanza database da associare a un gruppo di opzioni senza l'opzione TDE.

1. Puoi rimuovere l'opzione TDE dal gruppo di opzioni.

# Audit in SQL Server
<a name="Appendix.SQLServer.Options.Audit"></a>

In Amazon RDS, si può eseguire l'audit dei database Microsoft SQL Server utilizzando il meccanismo di audit integrato in SQL Server. Si possono creare audit e specifiche di audit nello stesso modo in cui vengono creati per i server di database locali. 

RDS carica i log completi dell'audit nel bucket S3 utilizzando il ruolo IAM che viene fornito. Se si abilita la retention, RDS conserva i log di audit nell'istanza database per il periodo di tempo configurato.

Per ulteriori informazioni, consulta [Audit in SQL Server (Motore di database)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) nella documentazione di Microsoft SQL Server.

## Audit di SQL Server con flussi di attività del database
<a name="Appendix.SQLServer.DAS.Audit"></a>

È possibile utilizzare i flussi di attività del database per RDS per integrare gli eventi di controllo di SQL Server con gli strumenti di monitoraggio delle attività del database di Imperva, McAfee e IBM. Per ulteriori informazioni sull'audit con i flussi di attività del database per RDS in SQL Server, consulta [Verifica in Microsoft SQL Server](DBActivityStreams.md#DBActivityStreams.Overview.SQLServer-auditing) 

**Topics**
+ [Audit di SQL Server con flussi di attività del database](#Appendix.SQLServer.DAS.Audit)
+ [Supporto per l'audit in SQL Server](#Appendix.SQLServer.Options.Audit.Support)
+ [Aggiunta dell'audit in SQL Server alle opzioni dell'istanza database](Appendix.SQLServer.Options.Audit.Adding.md)
+ [Utilizzo dell'audit in SQL Server](Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications.md)
+ [Visualizzazione dei log di audit](Appendix.SQLServer.Options.Audit.AuditRecords.md)
+ [Utilizzo dell'audit in SQL Server con le istanze Multi-AZ](#Appendix.SQLServer.Options.Audit.Multi-AZ)
+ [Configurazione di un bucket S3](Appendix.SQLServer.Options.Audit.S3bucket.md)
+ [Creazione manuale di un ruolo IAM per l'audit in SQL Server](Appendix.SQLServer.Options.Audit.IAM.md)

## Supporto per l'audit in SQL Server
<a name="Appendix.SQLServer.Options.Audit.Support"></a>

In Amazon RDS, a partire da SQL Server 2016, tutte le edizioni di SQL Server supportano gli audit a livello di server; inoltre, l’edizione Enterprise supporta anche gli audit a livello di database. A partire da SQL Server 2016 (13.x) SP1, tutte le edizioni supportano gli audit sia a livello di server che di database. Per ulteriori informazioni, consulta [Audit in SQL Server (Motore di database)](https://docs.microsoft.com/sql/relational-databases/security/auditing/sql-server-audit-database-engine) nella documentazione di SQL Server.

RDS supporta la configurazione delle seguenti impostazioni delle opzioni per l'audit in SQL Server. 


| Impostazione opzioni | Valori validi | Descrizione | 
| --- | --- | --- | 
| IAM\$1ROLE\$1ARN | Amazon Resource Name (ARN) valido nel formato arn:aws:iam::account-id:role/role-name. | L'ARN del ruolo IAM che concede l'accesso al bucket S3 dove si desidera archiviare i log di audit. Per ulteriori informazioni, consulta [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-iam) nella Riferimenti generali di AWS. | 
| S3\$1BUCKET\$1ARN | Un ARN valido nel formato arn:aws:s3:::amzn-s3-demo-bucket o arn:aws:s3:::amzn-s3-demo-bucket/key-prefix | L'ARN del bucket S3 dove si desidera archiviare i log di audit. | 
| ENABLE\$1COMPRESSION | true o false | Controlla la compressione dei log di audit. Per impostazione predefinita, la compressione è abilitata (impostata su true). | 
| RETENTION\$1TIME | 0 Da a 840 | Il periodo di retention (in ore) in cui i log di audit in SQL Server vengono conservati nell'istanza RDS. Per impostazione predefinita, la retention è disabilitata. | 

# Aggiunta dell'audit in SQL Server alle opzioni dell'istanza database
<a name="Appendix.SQLServer.Options.Audit.Adding"></a>

L'abilitazione dell'audit in SQL Server richiede due fasi: l'abilitazione dell'opzione nell'istanza database e l'abilitazione della funzione in SQL Server. La procedura per aggiungere l'opzione dell'audit in SQL Server a un'istanza database è la seguente: 

1. Creare un nuovo gruppo di opzioni oppure copiare o modificare un gruppo di opzioni esistente. 

1. Aggiungere e configurare tutte le opzioni necessarie.

1. Associare il gruppo di opzioni a questa istanza database.

Dopo aver aggiunto l'opzione dell'audit in SQL Server, non è necessario riavviare l'istanza database. Non appena il gruppo di opzioni diventa attivo, è possibile creare audit e archiviarne i log nel bucket S3. 

**Per aggiungere e configurare l'audit in SQL Server su un gruppo di opzioni di un'istanza database**

1. Scegliere una delle seguenti opzioni:
   + Utilizzare un gruppo di opzioni esistente.
   + Creare un gruppo di opzioni database personalizzato e utilizzarlo. Per ulteriori informazioni, consulta [Creazione di un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create). 

1. Aggiungere l'opzione **SQLSERVER\$1AUDIT** al gruppo di opzioni e configurare le impostazioni dell'opzione. Per ulteriori informazioni sull'aggiunta di opzioni, consulta [Aggiunta di un'opzione a un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption). 
   + Per **ruolo IAM**, se già si dispone di un ruolo IAM con le policy richieste, è possibile sceglierlo. Per creare un nuovo ruolo IAM, selezionare **Create a New Role (Crea un nuovo ruolo)**. Per informazioni sulle policy richieste, consulta [Creazione manuale di un ruolo IAM per l'audit in SQL Server](Appendix.SQLServer.Options.Audit.IAM.md).
   + Per **Seleziona destinazione S3**, se già si dispone di un bucket S3 che si desidera utilizzare, selezionarlo. Per creare un nuovo bucket, selezionare **Crea un nuovo bucket S3**. 
   + Per **Abilita compressione**, lasciare selezionata quest'opzione per comprimere i file dell'audit. Per impostazione predefinita, la compressione è abilitata. Per disabilitare la compressione, deselezionare **Enable Compression (Abilita compressione)**. 
   + Per **Retention log di audit**, per conservare i log di audit nell'istanza database, selezionare questa opzione. Specificare un periodo di retention in ore. Il periodo di retention massimo è di 35 giorni.

1. Applicare il gruppo di opzioni a un'istanza database nuova o esistente. Scegliere una delle seguenti opzioni:
   + Se si sta creando una nuova istanza database, applicare il gruppo di opzioni quando viene avviata l'istanza. 
   + In un’istanza database esistente, applicare il gruppo di opzioni modificando l’istanza e poi collegando il nuovo gruppo di opzioni. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 

## Modifica dell'opzione Audit in SQL Server
<a name="Appendix.SQLServer.Options.Audit.Modifying"></a>

Dopo aver abilitato l'opzione Audit in SQL Server, si possono modificare le impostazioni. Per informazioni su come modificare le impostazioni dell'opzione, consulta [Modifica di un'impostazione di un'opzione](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

## Rimozione dell'audit in SQL Server dalle opzioni dell'istanza database
<a name="Appendix.SQLServer.Options.Audit.Removing"></a>

È possibile disattivare la funzione Audit in SQL Server disabilitando gli audit ed eliminando l'opzione. 

**Per rimuovere gli audit**

1. Disabilitare tutte le impostazioni di audit in SQL Server. Per scoprire le posizioni in cui sono in esecuzione gli audit, eseguire una query sulle visualizzazioni del catalogo di sicurezza di SQL Server. Per ulteriori informazioni, consulta la sezione [Visualizzazioni del catalogo di sicurezza](https://docs.microsoft.com/sql/relational-databases/system-catalog-views/security-catalog-views-transact-sql) nella documentazione di Microsoft SQL Server. 

1. Rimuovere l'opzione dell'audit in SQL Server dall'istanza database. Scegliere una delle seguenti opzioni: 
   + Eliminare l'opzione dell'audit in SQL Server dal gruppo di opzioni utilizzato dall'istanza database. Questa modifica coinvolge tutte le istanze database che utilizzano lo stesso gruppo di opzioni. Per ulteriori informazioni, consulta [Rimozione di un'opzione da un gruppo di opzioni](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption).
   + Modificare l'istanza database, quindi selezionare un gruppo di opzioni che non contenga l'opzione dell'audit in SQL Server. Questa modifica influisce solo sull'istanza database che viene modificata. È possibile specificare il gruppo di opzioni predefinito (vuoto) o un gruppo di opzioni personalizzato diverso. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

1. Una volta eliminata l'opzione dell'audit in SQL Server dall'istanza database, non è necessario riavviare l'istanza. Rimozione di file di audit superflui dal bucket S3.

# Utilizzo dell'audit in SQL Server
<a name="Appendix.SQLServer.Options.Audit.CreateAuditsAndSpecifications"></a>

È possibile controllare gli audit del server, le specifiche degli audit del server e le specifiche degli audit del database allo stesso modo in cui si controllano per i server di database locali.

## Creazione degli audit
<a name="Appendix.SQLServer.Options.Audit.CreateAudits"></a>

Si possono creare audit di server nello stesso modo in cui vengono creati per i server di database locali. Per informazioni su come creare audit di server, consulta la sezione [CREAZIONE DI AUDIT DI SERVER](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-transact-sql) nella documentazione di Microsoft SQL Server.

Per evitare errori, rispettare le seguenti restrizioni:
+ Non superare il numero massimo di 50 audit di server supportati per ogni istanza. 
+ Istruire SQL Server a scrivere dati in un file binario.
+ Non utilizzare `RDS_` come prefisso del nome dell'audit di server.
+ Per `FILEPATH`, specificare `D:\rdsdbdata\SQLAudit`.
+ Per `MAXSIZE`, specificare una dimensione compresa tra 2 MB e 50 MB.
+ Non configurare `MAX_ROLLOVER_FILES` o `MAX_FILES`.
+ Non configurare SQL Server per l'interruzione dell'istanza database se non riesce a scrivere il registro dell'audit.

## Creazione delle specifiche dell'audit
<a name="Appendix.SQLServer.Options.Audit.CreateSpecifications"></a>

È possibile creare le specifiche degli audit del server e le specifiche degli audit del database allo stesso modo in cui vengono create per i server di database locali. Per informazioni sulla creazione delle specifiche dell'audit, consulta le sezioni [CREAZIONE DELLE SPECIFICHE DELL'AUDIT DEL SERVER](https://docs.microsoft.com/sql/t-sql/statements/create-server-audit-specification-transact-sql) e [CREAZIONE DELLE SPECIFICHE DELL'AUDIT DEL DATABASE](https://docs.microsoft.com/sql/t-sql/statements/create-database-audit-specification-transact-sql) nella documentazione di Microsoft SQL Server.

Per evitare errori, non utilizzare `RDS_` come prefisso del nome della specifica dell'audit del database o del server. 

# Visualizzazione dei log di audit
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

I log di audit vengono archiviati in `D:\rdsdbdata\SQLAudit`.

Quando SQL Server finisce di scrivere un file di log di audit—quando il file raggiunge la dimensione massima—Amazon RDS carica il file nel bucket S3. Se la retention è abilitata, Amazon RDS sposta il file nella cartella di retentio: `D:\rdsdbdata\SQLAudit\transmitted`. 

Per informazioni sulla configurazione della retention, consulta [Aggiunta dell'audit in SQL Server alle opzioni dell'istanza database](Appendix.SQLServer.Options.Audit.Adding.md).

I registri dell'audit vengono conservati nell'istanza database fino a quando non viene caricato il file di log dell'audit. È possibile visualizzare i registri dell'audit eseguendo il seguente comando.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

Lo stesso comando si può utilizzare per visualizzare i registri dell'audit nella cartella di retention modificando il filtro in `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit`.

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## Utilizzo dell'audit in SQL Server con le istanze Multi-AZ
<a name="Appendix.SQLServer.Options.Audit.Multi-AZ"></a>

Per le istanze Multi-AZ, il processo per inviare i file di log dell'audit a Amazon S3 è simile a quello per le istanze Single-AZ. Tuttavia, vi sono alcune differenze importanti: 
+ Gli oggetti delle specifiche dell'audit del database vengono replicati su tutti i nodi.
+ Gli audit del server e le relative specifiche non vengono replicate sui nodi secondari. Occorre crearli o modificarli manualmente.

Per acquisire gli audit del server o una specifica dell'audit del server da entrambi i nodi:

1. Creare un audit del server o una specifica dell'audit del server nel nodo primario:

1. Eseguire il failover sul nodo secondario e creare un audit del server o una specifica dell'audit del server con lo stesso nome e GUID nel nodo secondario. Utilizzare il parametro `AUDIT_GUID` per specificare il GUID.

# Configurazione di un bucket S3
<a name="Appendix.SQLServer.Options.Audit.S3bucket"></a>

I file di log di audit vengono caricati automaticamente dall'istanza database al bucket S3. Per il bucket S3 utilizzato come destinazione dei file dell'audit valgono le seguenti restrizioni: 
+ Deve trovarsi nella stessa AWS regione e nello stesso AWS account dell'istanza DB.
+ Non deve essere aperto al pubblico.
+ Il proprietario del bucket deve essere anche il proprietario del ruolo IAM.
+ Il ruolo IAM deve disporre delle autorizzazioni per la chiave KMS gestita dal cliente associata alla crittografia lato server del bucket S3.

La chiave di destinazione utilizzata per archiviare i dati segue questo schema di denominazion: `amzn-s3-demo-bucket/key-prefix/instance-name/audit-name/node_file-name.ext` 

**Nota**  
I valori del nome del bucket e del prefisso della chiave vanno configurati entrambi con l'impostazione dell'opzione (`S3_BUCKET_ARN`).

Lo schema è costituito dai seguenti elementi:
+ ***amzn-s3-demo-bucket*** – Il nome del bucket S3.
+ **`key-prefix`** – Il prefisso della chiave personalizzata da utilizzare per i log di audit.
+ **`instance-name`** – Il nome dell'istanza Amazon RDS.
+ **`audit-name`** – Il nome dell'audit.
+ **`node`** – L'identificatore del nodo che funge da origine dell'audit (`node1` o `node2`). Esiste un nodo per un'istanza Single-AZ e due nodi di replica per un'istanza Multi-AZ. Non si tratta di nodi primari e secondari, poiché i ruoli del nodo primario e di quello secondario cambiano nel tempo. L'identificatore del nodo è piuttosto una semplice etichetta. 
  + **`node1`** – Il primo nodo di replica (un'istanza Single-AZ ha un solo nodo).
  + **`node2`** – Il secondo nodo di replica (un'istanza Multi-AZ ha due nodi).
+ **`file-name`** – Il nome del file di destinazione. Il nome del file è preso così com'è da SQL Server.
+ **`ext`** – L'estensione del file (`zip` o `sqlaudit`):
  + **`zip`** – Se la compressione è abilitata (impostazione predefinita).
  + **`sqlaudit`** – Se la compressione è disabilitata.

# Creazione manuale di un ruolo IAM per l'audit in SQL Server
<a name="Appendix.SQLServer.Options.Audit.IAM"></a>

In genere, quando crei una nuova opzione, Console di gestione AWS crea automaticamente il ruolo IAM e la policy di fiducia IAM. Si può tuttavia creare manualmente un nuovo ruolo IAM da utilizzare con gli audit in SQL Server, in modo che l'utente possa personalizzarlo con tutti gli ulteriori requisiti che potrebbero servire. Per far ciò, l'utente crea un ruolo IAM e delega le autorizzazioni in modo che il servizio Amazon RDS possa utilizzare il bucket Amazon S3. Quando si crea un ruolo IAM, vengono collegate le policy di attendibilità e autorizzazione. La policy di attendibilità consente a Amazon RDS di assumere questo ruolo. La policy di autorizzazione definisce le operazioni che questo ruolo può eseguire. Per ulteriori informazioni, vedere [Creazione di un ruolo per delegare le autorizzazioni a un AWS servizio](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) nella Guida per l'*utente di AWS Identity and Access Management*. 

Si possono utilizzare gli esempi riportati in questa sezione per creare le relazioni di attendibilità e le policy di autorizzazione necessarie.

Il seguente esempio mostra una relazione di attendibilità per la verifica in SQL Server. Utilizza l'*entità servizio* `rds.amazonaws.com` per autorizzare RDS a scrivere nel bucket S3. Un'*entità servizio* è un identificatore che viene utilizzato per concedere autorizzazioni a un servizio. Ogni volta che si autorizza l'accesso a `rds.amazonaws.com`, si consente a RDS di eseguire un'operazione per conto dell'utente. Per ulteriori informazioni sulle entità principali del servizio, consulta [Elementi della policy JSON AWS: Entità principale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

**Example relazione di attendibilità per la verifica in SQL Server**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Principal": {
	                "Service": "rds.amazonaws.com"
	            },
	            "Action": "sts:AssumeRole"
	        }
	    ]
	}
```

Si consiglia di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Questo è il modo più efficace per proteggersi dal [problema di deputy confused](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

Puoi usare le chiavi di contesto delle condizioni globali e avere il valore `aws:SourceArn` che contiene l'ID dell'account. In questo caso, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione.
+ Utilizzare `aws:SourceArn` se si desidera un accesso cross-service per una singola risorsa.
+ Utilizzare `aws:SourceAccount` se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

Nella relazione di trust, assicurati di utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con l'Amazon Resource Name (ARN) completo delle risorse che accedono al ruolo. Perla verifica in SQL Server assicurati di includere sia il gruppo di opzioni database che le istanze database, come illustrato nell'esempio seguente.

**Example relazione di affidabilità con la chiave di contesto delle condizioni globali per la verifica in SQL Server**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier",
                        "arn:aws:rds:Region:my_account_ID:og:option_group_name"
                    ]
                }
            }
        }
    ]
}
```

Nel seguente esempio di policy di autorizzazione per la verifica in SQL Server, specifichiamo un ARN per il bucket Amazon S3. Puoi utilizzarlo ARNs per identificare un account, un utente o un ruolo specifico a cui desideri concedere l'accesso. Per ulteriori informazioni sull'utilizzo ARNs, consulta [Amazon resource names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

**Example policy di autorizzazione per la verifica in SQL Server**    
****  

```
{
	    "Version":"2012-10-17",		 	 	 
	    "Statement": [
	        {
	            "Effect": "Allow",
	            "Action": "s3:ListAllMyBuckets",
	            "Resource": "*"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:ListBucket",
	                "s3:GetBucketACL",
	                "s3:GetBucketLocation"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
	        },
	        {
	            "Effect": "Allow",
	            "Action": [
	                "s3:PutObject",
	                "s3:ListMultipartUploadParts",
	                "s3:AbortMultipartUpload"
	            ],
	            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*"
	        }
	    ]
	}
```

**Nota**  
L'`s3:ListAllMyBuckets`azione è necessaria per verificare che lo stesso AWS account possieda sia il bucket S3 che l'istanza DB di SQL Server. L'operazione elenca i nomi dei bucket dell'account.  
Gli spazi dei nomi dei bucket S3 sono globali. Se elimini accidentalmente il bucket, un altro utente può creare un bucket con lo stesso nome in un account diverso. Quindi i dati di audit di SQL Server vengono scritti nel nuovo bucket.

# Supporto for SQL Server Analysis Services in Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSAS"></a>

Microsoft SQL Server Analysis Services (SSAS) fa parte della suite Microsoft Business Intelligence (MSBI). SSAS è uno strumento di elaborazione analitica online (OLAP) e data mining installato all'interno di SQL Server. SSAS viene utilizzato per analizzare i dati per prendere decisioni aziendali. SSAS differisce dal database relazionale di SQL Server perché SSAS è ottimizzato per query e calcoli comuni in un ambiente di business intelligence.

 È possibile abilitare SSAS per le istanze database esistenti o nuove. È installato sulla stessa istanza database del motore del database. Per ulteriori informazioni su SSAS, consulta la [documentazione di Microsoft Analysis Services](https://docs.microsoft.com/en-us/analysis-services).

Amazon RDS supporta le edizioni Standard ed Enterprise di SSAS per SQL nelle seguenti versioni:
+ Modalità tabulare:
  + SQL Server 2019, versione 15.00.4043.16.v1 e successive
  + SQL Server 2017, versione 14.00.3223.3.v1 e successive
  + SQL Server 2016, versione 13.00.5426.0.v1 e successive
+ Modalità multidimensionale:
  + SQL Server 2019, versione 15.00.4153.1.v1 e successive
  + SQL Server 2017, versione 14.00.3381.3.v1 e successive
  + SQL Server 2016, versione 13.00.5882.1.v1 e successive

**Contents**
+ [Limitazioni](#SSAS.Limitations)
+ [Attivazione di SSAS](SSAS.Enabling.md)
  + [Creazione di un gruppo di opzioni per SSAS](SSAS.Enabling.md#SSAS.OptionGroup)
  + [Aggiunta dell'opzione SSAS al gruppo di opzioni](SSAS.Enabling.md#SSAS.Add)
  + [Associazione del gruppo di opzioni all'istanza database](SSAS.Enabling.md#SSAS.Apply)
  + [Consentire l'accesso in ingresso al gruppo di sicurezza VPC](SSAS.Enabling.md#SSAS.InboundRule)
  + [Abilitazione dell'integrazione Amazon S3](SSAS.Enabling.md#SSAS.EnableS3)
+ [Distribuzione di progetti SSAS su Amazon RDS](SSAS.Deploy.md)
+ [Monitoraggio dello stato di un'attività di distribuzione](SSAS.Monitor.md)
+ [Utilizzo di SSAS su Amazon RDS](SSAS.Use.md)
  + [Configurazione di un utente autenticato da Windows per SSAS](SSAS.Use.md#SSAS.Use.Auth)
  + [Aggiunta di un utente di dominio come amministratore di database](SSAS.Use.md#SSAS.Admin)
  + [Creazione di un proxy SSAS](SSAS.Use.md#SSAS.Use.Proxy)
  + [Pianificazione dell'elaborazione del database SSAS utilizzando SQL Server Agent](SSAS.Use.md#SSAS.Use.Schedule)
  + [Revoca dell'accesso SSAS dal proxy](SSAS.Use.md#SSAS.Use.Revoke)
+ [Backup di un database SSAS](SSAS.Backup.md)
+ [Ripristino di un database SSAS](SSAS.Restore.md)
  + [Ripristino a un'ora specifica per un'istanza database](SSAS.Restore.md#SSAS.PITR)
+ [Modifica della modalità SSAS](SSAS.ChangeMode.md)
+ [Disattivazione di SSAS](SSAS.Disable.md)
+ [Risoluzione dei problemi SSAS](SSAS.Trouble.md)

## Limitazioni
<a name="SSAS.Limitations"></a>

Le seguenti limitazioni si applicano all'uso di SSAS su RDS per SQL Server:
+ RDS for SQL Server supporta l'esecuzione di SSAS in modalità tabulare o multidimensionale. Per ulteriori informazioni, consulta [Comparing tabular and multidimensional solutions](https://docs.microsoft.com/en-us/analysis-services/comparing-tabular-and-multidimensional-solutions-ssas) (Confronto tra soluzioni tabulari e multidimensionali) nella documentazione di Microsoft.
+ Puoi utilizzare una sola modalità SSAS alla volta. Prima di cambiare modalità, assicurati di eliminare tutti i database SSAS.

  Per ulteriori informazioni, consulta [Modifica della modalità SSAS](SSAS.ChangeMode.md).
+ Le istanze multi-AZ non sono supportate.
+ Le istanze devono utilizzare Active Directory autogestita oppure AWS Directory Service for Microsoft Active Directory per l'autenticazione SSAS. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).
+ Agli utenti non viene concesso l'accesso all'amministratore del server SSAS, ma è possibile concedere loro l'accesso amministratore a livello di database.
+ L'unica porta supportata per l'accesso a SSAS è 2383.
+ Non è possibile distribuire direttamente i progetti. A tale scopo forniamo una stored procedure RDS. Per ulteriori informazioni, consulta [Distribuzione di progetti SSAS su Amazon RDS](SSAS.Deploy.md).
+ L'elaborazione durante la distribuzione non è supportata.
+ L'utilizzo di file xmla per la distribuzione non è supportato.
+ I file di input del progetto SSAS e i file di output di backup del database possono essere solo `D:\S3` nella cartella dell'istanza database.

# Attivazione di SSAS
<a name="SSAS.Enabling"></a>

Utilizza il seguente processo per attivare SSAS per l'istanza database:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `SSAS` al gruppo di opzioni.

1. Associare il gruppo di opzioni a questa istanza database.

1. Consentire l'accesso in ingresso al gruppo di sicurezza Virtual Private Cloud (VPC) per la porta listener SSAS.

1. Attiva l'integrazione Amazon S3.

## Creazione di un gruppo di opzioni per SSAS
<a name="SSAS.OptionGroup"></a>

Utilizzare la Console di gestione AWS o l'AWS CLI per creare un gruppo di opzioni che corrisponde al motore di SQL Server e alla versione dell'istanza database che si intende utilizzare.

**Nota**  
È inoltre possibile utilizzare un gruppo di opzioni esistente se si tratta del motore e della versione di SQL Server corretti.

### Console
<a name="SSAS.OptionGroup.Console"></a>

La seguente procedura della console crea un gruppo di opzioni per SQL Server Standard Edition 2017.

**Per creare il gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, immettere un nome per il gruppo di opzioni che sia univoco all'interno dell'account AWS, ad esempio **ssas-se-2017**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **SSAS option group for SQL Server SE 2017**. La descrizione viene usata per la visualizzazione.

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Major engine version (Versione principale del motore)**, scegli **14.00**.

1. Scegliere **Create (Crea)**.

### CLI
<a name="SSAS.OptionGroup.CLI"></a>

Nell'esempio seguente di CLI viene creato un gruppo di opzioni per SQL Server Standard Edition 2017.

**Per creare il gruppo di opzioni**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-option-group \
      --option-group-name ssas-se-2017 \
      --engine-name sqlserver-se \
      --major-engine-version 14.00 \
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

  Per Windows:

  ```
  aws rds create-option-group ^
      --option-group-name ssas-se-2017 ^
      --engine-name sqlserver-se ^
      --major-engine-version 14.00 ^
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

## Aggiunta dell'opzione SSAS al gruppo di opzioni
<a name="SSAS.Add"></a>

Utilizzare la Console di gestione AWS o l'AWS CLI per aggiungere l'opzione `SSAS` al gruppo di opzioni.

### Console
<a name="SSAS.Add.Console"></a>

**Per aggiungere l'opzione SSAS**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni appena creato.

1. Scegliere **Add option (Aggiungi opzione)**.

1. In **Option details (Dettagli opzione)**, scegliere **SSAS** per **Option name (Nome opzione)**.

1. In **Impostazioni delle opzioni**, effettuare le seguenti operazioni:

   1. Per **Max memory** (Memoria massima), inserisci un valore nell'intervallo da 10 a 80.

      **Max memory (Memoria massima)** specifica la soglia superiore al di sopra della quale SSAS inizia a rilasciare la memoria in modo più aggressivo per fare spazio alle richieste in esecuzione e anche alle nuove richieste ad alta priorità. Il numero è una percentuale della memoria totale dell'istanza database. I valori validi sono compresi tra 10–80 e 45 è il valore predefinito.

   1. Per **Mode** (Modalità), scegli la modalità server SSAS, **Tabular** (Tabulare) o **Multidimensional** (Multidimensionale).

      Se non vedi le impostazioni dell'opzione **Mode** (Modalità), significa che la modalità multidimensionale non è supportata nella tua regione AWS. Per ulteriori informazioni, consulta [Limitazioni](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

      **Tabular** (Tabulare) è il valore di default.

   1. Per **Security groups (Gruppi di sicurezza)**, scegliere il gruppo di sicurezza VPC da associare all'opzione.
**Nota**  
La porta per l'accesso a SSAS, 2383, è prepopolata.

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

### CLI
<a name="SSAS.Add.CLI"></a>

**Per aggiungere l'opzione SSAS**

1. Creare un file JSON, ad esempio `ssas-option.json`, con i seguenti parametri:
   + `OptionGroupName` – Il gruppo di opzioni creato o scelto in precedenza (`ssas-se-2017` nell'esempio seguente).
   + `Port` – La porta utilizzata per accedere a SSAS. L'unica porta supportata è 2383.
   + `VpcSecurityGroupMemberships` – Appartenenze ai gruppi di sicurezza VPC per l'istanza database RDS.
   + `MAX_MEMORY` – Specifica la soglia superiore al di sopra della quale SSAS deve iniziare a rilasciare la memoria in modo più aggressivo per fare spazio alle richieste in esecuzione e anche alle nuove richieste ad alta priorità. Il numero è una percentuale della memoria totale dell'istanza database. I valori validi sono compresi tra 10–80 e 45 è il valore predefinito.
   + `MODE` – La modalità server SSAS, `Tabular` o `Multidimensional`. `Tabular` è il valore di default.

     Se ricevi un errore che indica che le impostazioni dell'opzione `MODE` non sono valide, significa che la modalità multidimensionale non è supportata nella tua regione AWS. Per ulteriori informazioni, consulta [Limitazioni](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations).

   Di seguito è riportato un esempio di file JSON con impostazioni delle opzioni SSAS.

   ```
   {
   "OptionGroupName": "ssas-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSAS",
   	"Port": 2383,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [{"Name":"MAX_MEMORY","Value":"60"},{"Name":"MODE","Value":"Multidimensional"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Aggiungere l'opzione `SSAS` al gruppo di opzioni.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssas-option.json \
       --apply-immediately
   ```

   Per Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssas-option.json ^
       --apply-immediately
   ```

## Associazione del gruppo di opzioni all'istanza database
<a name="SSAS.Apply"></a>

È possibile utilizzare la console o la CLI per associare il gruppo di opzioni all'istanza database.

### Console
<a name="SSAS.Apply.Console"></a>

Associare il gruppo di opzioni a un'istanza database nuova o esistente:
+ Per una nuova istanza database, associare il gruppo di opzioni all'istanza database quando si avvia l'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, modificare l'istanza e associare il nuovo gruppo di opzioni con essa. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).
**Nota**  
Se si utilizza un'istanza esistente, è necessario che siano già associati un dominio Active Directory e un ruolo AWS Identity and Access Management (IAM) associato. Se si crea una nuova istanza, specificare un dominio Active Directory esistente e un ruolo IAM. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### CLI
<a name="SSAS.Apply.CLI"></a>

È possibile associare il gruppo di opzioni a un'istanza database nuova o esistente.

**Nota**  
Se si utilizza un'istanza esistente, è necessario che siano già associati un dominio Active Directory e un ruolo IAM. Se si crea una nuova istanza, specificare un dominio Active Directory esistente e un ruolo IAM. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

**Per creare un'istanza database che utilizza il gruppo di opzioni**
+ Specificare lo stesso tipo di motore database e la versione principale utilizzata durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssasinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssas-se-2017
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssasinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssas-se-2017
  ```

**Per modificare un'istanza database per associare il gruppo di opzioni**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssasinstance \
      --option-group-name ssas-se-2017 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssasinstance ^
      --option-group-name ssas-se-2017 ^
      --apply-immediately
  ```

## Consentire l'accesso in ingresso al gruppo di sicurezza VPC
<a name="SSAS.InboundRule"></a>

Creare una regola in ingresso per la porta del listener SSAS specificata nel gruppo di sicurezza VPC associato all'istanza database. Per ulteriori informazioni sulla configurazione di un gruppo di sicurezza, consulta [Fornisci accesso alla istanza database nel VPC creando un gruppo di sicurezza](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Abilitazione dell'integrazione Amazon S3
<a name="SSAS.EnableS3"></a>

Per scaricare i file di configurazione del modello nell'host per l'implementazione, utilizza l'integrazione Amazon S3. Per ulteriori informazioni, consulta [Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md). 

# Distribuzione di progetti SSAS su Amazon RDS
<a name="SSAS.Deploy"></a>

In RDS, non è possibile distribuire progetti SSAS direttamente utilizzando SQL Server Management Studio (SSMS). Per distribuire i progetti, utilizzare una stored procedure RDS.

**Nota**  
L'utilizzo di file xmla per la distribuzione non è supportato.

Prima di distribuire i progetti, assicurarsi che:
+ L'integrazione Amazon S3 è attivata. Per ulteriori informazioni, consulta [Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).
+ L'impostazione `Processing Option` di configurazione è impostata su `Do Not Process`. Questa impostazione indica che non viene eseguita alcuna elaborazione dopo la distribuzione.
+ Hai entrambi i file `myssasproject.asdatabase` e `myssasproject.deploymentoptions`. Vengono generati automaticamente quando si crea il progetto SSAS.

**Per distribuire un progetto SSAS in RDS**

1. Scaricare il file `.asdatabase` (modello SSAS) dal bucket S3 all'istanza database, come mostrato nell'esempio seguente. Per ulteriori informazioni sui parametri di download, consulta [Download di file da un bucket Amazon S3 in un'istanza database SQL Server](Appendix.SQLServer.Options.S3-integration.using.md#Appendix.SQLServer.Options.S3-integration.using.download).

   ```
   exec msdb.dbo.rds_download_from_s3 
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.asdatabase', 
   [@rds_file_path='D:\S3\myssasproject.asdatabase'],
   [@overwrite_file=1];
   ```

1. Scarica il file `.deploymentoptions` dal bucket S3 all'istanza database.

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.deploymentoptions', 
   [@rds_file_path='D:\S3\myssasproject.deploymentoptions'],
   [@overwrite_file=1];
   ```

1. Distribuisci il progetto

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSAS_DEPLOY_PROJECT',
   @file_path='D:\S3\myssasproject.asdatabase';
   ```

# Monitoraggio dello stato di un'attività di distribuzione
<a name="SSAS.Monitor"></a>

Per tenere traccia dello stato dell'attività di distribuzione (o download), chiamare la funzione `rds_fn_task_status`. accetta due parametri. Il primo parametro deve essere sempre `NULL` perché non si applica a SSAS. Il secondo parametro accetta un ID attività. 

Per visualizzare l'elenco di tutte le attività, imposta il primo parametro su `NULL` e il secondo parametro su `0`, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Per ottenere un'attività specifica, imposta il primo parametro su `NULL` e il secondo parametro sull'ID attività, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La funzione `rds_fn_task_status` restituisce le seguenti informazioni.


| Parametro di output | Descrizione | 
| --- | --- | 
| `task_id` | L'ID dell'attività. | 
| `task_type` | Per SSAS, le attività possono avere i seguenti tipi di attività: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `database_name` | Non applicabile alle attività SSAS. | 
| `% complete` | L'avanzamento dell'attività espresso come percentuale. | 
| `duration (mins)` | La quantità di tempo dedicato all'attività, in minuti. | 
| `lifecycle` |  Lo stato dell'attività. I possibili stati sono i seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `task_info` | Ulteriori informazioni sull'attività. Se si verifica un errore durante l'elaborazione, questa colonna contiene informazioni sull'errore. Per ulteriori informazioni, consulta [Risoluzione dei problemi SSAS](SSAS.Trouble.md). | 
| `last_updated` | La data e l'ora dell'ultimo aggiornamento dello stato dell'attività. | 
| `created_at` | La data e l'ora di creazione dell'attività. | 
| `S3_object_arn` |  Non applicabile alle attività SSAS.  | 
| `overwrite_S3_backup_file` | Non applicabile alle attività SSAS. | 
| `KMS_master_key_arn` |  Non applicabile alle attività SSAS.  | 
| `filepath` |  Non applicabile alle attività SSAS.  | 
| `overwrite_file` |  Non applicabile alle attività SSAS.  | 
| `task_metadata` | Metadati associati all'attività SSAS. | 

# Utilizzo di SSAS su Amazon RDS
<a name="SSAS.Use"></a>

Dopo aver distribuito il progetto SSAS, è possibile elaborare direttamente il database OLAP in SSMS.

**Per utilizzare SSAS in RDS**

1. In SSMS, connettersi a SSAS utilizzando il nome utente e la password per il dominio Active Directory.

1. Espandere **Databases (Database)**. Viene visualizzato il database SSAS appena distribuito.

1. Individua la stringa di connessione e aggiorna il nome utente e la password per consentire l'accesso al database SQL di origine. Questa operazione è necessaria per l'elaborazione degli oggetti SSAS.

   1. Per la modalità tabulare, procedi come segue:

      1. Espandi la scheda **Connections** (Connessioni).

      1. Apri il menu di scelta rapida (tasto destro del mouse) per l'oggetto connessione e quindi scegli **Properties** (Proprietà).

      1. Aggiorna il nome utente e la password nella stringa di connessione.

   1. Per la modalità multidimensionale, procedi come segue:

      1. Espandi la scheda **Data Sources** (Origini dati).

      1. Apri il menu di scelta rapida (tasto destro del mouse) per l'oggetto origine dati e quindi scegli **Properties** (Proprietà).

      1. Aggiorna il nome utente e la password nella stringa di connessione.

1. Aprire il menu di scelta rapida (destro del mouse) per il database SSAS creato e scegliere **Process Database (Elabora database)**.

   A seconda delle dimensioni dei dati di input, l'operazione di elaborazione potrebbe richiedere alcuni minuti per il completamento.

**Topics**
+ [Configurazione di un utente autenticato da Windows per SSAS](#SSAS.Use.Auth)
+ [Aggiunta di un utente di dominio come amministratore di database](#SSAS.Admin)
+ [Creazione di un proxy SSAS](#SSAS.Use.Proxy)
+ [Pianificazione dell'elaborazione del database SSAS utilizzando SQL Server Agent](#SSAS.Use.Schedule)
+ [Revoca dell'accesso SSAS dal proxy](#SSAS.Use.Revoke)

## Configurazione di un utente autenticato da Windows per SSAS
<a name="SSAS.Use.Auth"></a>

L'utente amministratore principale (a volte chiamato utente master) può utilizzare l'esempio di codice riportato di seguito per impostare un accesso autenticato da Windows e concedere le autorizzazioni necessarie per la procedura. In questo modo vengono concesse autorizzazioni all'utente del dominio per eseguire le attività del cliente SSAS, utilizzare procedure di trasferimento file S3, creare credenziali e lavorare con il proxy Agente SQL Server. Per ulteriori informazioni, consulta [Credentials (Database Engine)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) e [Create a SQL Server Agent Proxy](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) nella documentazione di Microsoft.

È possibile concedere alcune o tutte le autorizzazioni seguenti, se necessario, agli utenti autenticati da Windows.

**Example**  

```
-- Create a server-level domain user login, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO

-- Create domain user, if it doesn't already exist
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]
GO

-- Grant necessary privileges to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO

USE [msdb]
GO
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] with grant option
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO
```

## Aggiunta di un utente di dominio come amministratore di database
<a name="SSAS.Admin"></a>

È possibile aggiungere un utente di dominio come amministratore del database SSAS nei seguenti modi:
+ Un amministratore di database può utilizzare SSMS per creare un ruolo con privilegi `admin`, quindi aggiungere utenti a tale ruolo.
+ È possibile utilizzare la seguente stored procedure.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_ADD_DB_ADMIN_MEMBER',
  @database_name='myssasdb',
  @ssas_role_name='exampleRole',
  @ssas_role_member='domain_name\domain_user_name';
  ```

  I parametri seguenti sono obbligatori:
  + `@task_type` – Il tipo di attività MSBI, in questo caso `SSAS_ADD_DB_ADMIN_MEMBER`.
  + `@database_name` – Il nome del database SSAS a cui si concedono i privilegi di amministratore.
  + `@ssas_role_name` – Il nome del ruolo amministratore del database SSAS. Se il ruolo non esiste già, viene creato.
  + `@ssas_role_member` – L'utente del database SSAS che si sta aggiungendo al ruolo di amministratore.

## Creazione di un proxy SSAS
<a name="SSAS.Use.Proxy"></a>

Per pianificare l'elaborazione del database SSAS utilizzando SQL Server Agent, crea una credenziale SSAS e un proxy SSAS. Eseguire queste procedure come utente autenticato da Windows.

**Per creare le credenziali SSAS**
+ Creare le credenziali per il proxy. A tale scopo, è possibile utilizzare SSMS o la seguente istruzione SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**Nota**  
`IDENTITY` deve essere un accesso autenticato dal dominio. Sostituire `mysecret` con la password per l'accesso autenticato dal dominio.

**Per creare il proxy SSAS**

1. Utilizzare l'istruzione SQL seguente per creare il proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N''
   GO
   ```

1. Utilizzare l'istruzione SQL seguente per concedere l'accesso al proxy ad altri utenti.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Utilizzare la seguente istruzione SQL per dare al sottosistema SSAS l'accesso al proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

**Per visualizzare il proxy e le concessioni sul proxy**

1. Utilizzare l'istruzione SQL seguente per visualizzare gli assegnatari del proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Utilizzare l'istruzione SQL seguente per visualizzare i privilegi del sottosistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Pianificazione dell'elaborazione del database SSAS utilizzando SQL Server Agent
<a name="SSAS.Use.Schedule"></a>

Dopo aver creato le credenziali e il proxy e dopo aver concesso l'accesso SSAS al proxy, è possibile creare un processo Agente SQL Server per pianificare l'elaborazione del database SSAS.

**Per pianificare l'elaborazione del database SSAS**
+ Usa SSMS o T-SQL per creare il processo SQL Server Agent. L'esempio seguente utilizza T-SQL. Puoi configurare ulteriormente la pianificazione dei processi tramite SSMS o T-SQL.
  + Il parametro `@command` delinea il comando XML for Analysis (XMLA) da eseguire tramite il processo SQL Server Agent. Questo esempio configura l'elaborazione del database multidimensionale SSAS.
  + Il parametro `@server` delinea il nome del server SSAS di destinazione del processo SQL Server Agent.

    Per chiamare il servizio SSAS all'interno della stessa istanza database RDS in cui risiede il processo SQL Server Agent, utilizza `localhost:2383`.

    Per chiamare il servizio SSAS dall'esterno dell'istanza database RDS, utilizza l'endpoint RDS. Puoi anche utilizzare l'endpoint Kerberos Active Directory (AD) (`your-DB-instance-name.your-AD-domain-name`) se le istanze database RDS sono unite dallo stesso dominio. Per le istanze database esterne, assicurati di configurare correttamente il gruppo di sicurezza VPC associato all'istanza database RDS per una connessione sicura.

  Puoi modificare ulteriormente la query per supportare varie operazioni XMLA. Apporta le modifiche modificando direttamente la query T-SQL o utilizzando l'interfaccia utente SSMS dopo la creazione del processo di SQL Server Agent.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'SSAS_Job', 
      @enabled=1, 
      @notify_level_eventlog=0, 
      @notify_level_email=0, 
      @notify_level_netsend=0, 
      @notify_level_page=0, 
      @delete_level=0, 
      @category_name=N'[Uncategorized (Local)]', 
      @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver 
      @job_name=N'SSAS_Job', 
      @server_name = N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'SSAS_Job', @step_name=N'Process_SSAS_Object', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=1, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'ANALYSISCOMMAND', 
      @command=N'<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
          <Parallel>
              <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" 
                  xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" 
                  xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" 
                  xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" 
                  xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" 
                  xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
                  <Object>
                      <DatabaseID>Your_SSAS_Database_ID</DatabaseID>
                  </Object>
                  <Type>ProcessFull</Type>
                  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
              </Process>
          </Parallel>
      </Batch>', 
      @server=N'localhost:2383', 
      @database_name=N'master', 
      @flags=0, 
      @proxy_name=N'SSAS_Proxy'
  GO
  ```

## Revoca dell'accesso SSAS dal proxy
<a name="SSAS.Use.Revoke"></a>

È possibile revocare l'accesso al sottosistema SSAS ed eliminare il proxy SSAS utilizzando le seguenti procedure memorizzate.

**Per revocare l'accesso ed eliminare il proxy**

1. Revocare l'accesso al sottosistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

1. Revocare le concessioni per la delega.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Eliminare il proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSAS_Proxy'
   GO
   ```

# Backup di un database SSAS
<a name="SSAS.Backup"></a>

È possibile creare file di backup del database SSAS solo nella cartella `D:\S3` dell'istanza database. Per spostare i file di backup nel bucket S3, utilizzare Amazon S3.

È possibile eseguire il backup di un database SSAS come segue:
+ Un utente di dominio con il ruolo `admin` di un determinato database può utilizzare SSMS per eseguire il backup del database nella cartella `D:\S3`.

  Per ulteriori informazioni, consulta [Aggiunta di un utente di dominio come amministratore di database](SSAS.Use.md#SSAS.Admin).
+ È possibile utilizzare la seguente stored procedure. Questa stored procedure non supporta la crittografia.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_BACKUP_DB',
  @database_name='myssasdb',
  @file_path='D:\S3\ssas_db_backup.abf',
  [@ssas_apply_compression=1],
  [@ssas_overwrite_file=1];
  ```

  I parametri seguenti sono obbligatori:
  + `@task_type` – Il tipo di attività MSBI, in questo caso `SSAS_BACKUP_DB`.
  + `@database_name` – Il nome del database SSAS di cui si esegue il backup.
  + `@file_path` – Il percorso del file di backup SSAS. L'estensione `.abf` è obbligatoria.

  I parametri seguenti sono facoltativi:
  + `@ssas_apply_compression` – Indica se applicare la compressione di backup SSAS. I valori validi sono 1 (Sì) e 0 (No).
  + `@ssas_overwrite_file` – Indica se sovrascrivere il file di backup SSAS. I valori validi sono 1 (Sì) e 0 (No).

# Ripristino di un database SSAS
<a name="SSAS.Restore"></a>

Utilizzare la seguente stored procedure per ripristinare un database SSAS da un backup. 

Non è possibile ripristinare un database se esiste già un database SSAS con lo stesso nome. La stored procedure per il ripristino non supporta i file di backup crittografati.

```
exec msdb.dbo.rds_msbi_task
@task_type='SSAS_RESTORE_DB',
@database_name='mynewssasdb',
@file_path='D:\S3\ssas_db_backup.abf';
```

I parametri seguenti sono obbligatori:
+ `@task_type` – Il tipo di attività MSBI, in questo caso `SSAS_RESTORE_DB`.
+ `@database_name` – Il nome del nuovo database SSAS che si sta ripristinando.
+ `@file_path` – Il percorso del file di backup SSAS.

## Ripristino a un'ora specifica per un'istanza database
<a name="SSAS.PITR"></a>

Il ripristino point-in-time (PITR) non si applica ai database SSAS. Se si esegue PITR, solo i dati SSAS nell'ultimo snapshot prima dell'ora richiesta sono disponibili nell'istanza ripristinata.

**Per disporre di database SSAS aggiornati in un'istanza database ripristinata**

1. Eseguire il backup dei database SSAS nella cartella `D:\S3` dell'istanza di origine.

1. Trasferire i file di backup nel bucket S3.

1. Trasferire i file di backup dal bucket S3 alla cartella `D:\S3` sull'istanza ripristinata.

1. Eseguire la stored procedure per ripristinare i database SSAS nell'istanza ripristinata.

   È inoltre possibile rielaborare il progetto SSAS per ripristinare i database.

# Modifica della modalità SSAS
<a name="SSAS.ChangeMode"></a>

Puoi modificare la modalità in cui viene eseguito SSAS, Tabular (Tabulare) o Multidimensional (Multidimensionale). Per cambiare la modalità, utilizza la Console di gestione AWS o la AWS CLI per modificare le impostazioni delle opzioni nell'opzione SSAS.

**Importante**  
Puoi utilizzare una sola modalità SSAS alla volta. Assicurati di eliminare tutti i database SSAS prima di cambiare la modalità, altrimenti riceverai un errore.

## Console
<a name="SSAS.ChangeMode.CON"></a>

La seguente procedura della console Amazon RDS cambia la modalità SSAS in Tabular (Tabulare) e imposta il parametro `MAX_MEMORY` al 70 percento.

**Per modificare l'opzione SSAS**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegli il gruppo di opzioni con l'opzione `SSAS` che desideri modificare (`ssas-se-2017` negli esempi precedenti).

1. Scegli **Modify option** (Modifica l'opzione).

1. Modifica le impostazioni delle opzioni:

   1. Per **Max memory** (Memoria massima), inserisci **70**.

   1. Per **Mode** (Modalità), scegli **Tabular** (Tabulare).

1. Scegli **Modify option** (Modifica l'opzione).

## AWS CLI
<a name="SSAS.ChangeMode.CLI"></a>

Il seguente esempio della AWS CLI cambia la modalità SSAS in Tabular (Tabulare) e imposta il parametro `MAX_MEMORY` al 70 percento.

Affinché il comando CLI funzioni, assicurati di includere tutti i parametri richiesti, anche se non li stai modificando.

**Per modificare l'opzione SSAS**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssas-se-2017 \
      --options "OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}]" \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssas-se-2017 ^
      --options OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}] ^
      --apply-immediately
  ```

# Disattivazione di SSAS
<a name="SSAS.Disable"></a>

Per disattivare SSAS, rimuovi l'opzione `SSAS` dal relativo gruppo di opzioni.

**Importante**  
Prima di rimuovere l'opzione `SSAS`, eliminare i database SSAS.  
Si consiglia di eseguire il backup dei database SSAS prima di eliminarli e rimuovere l'opzione `SSAS`.

## Console
<a name="SSAS.Disable.Console"></a>

**Per rimuovere l'opzione SSAS dal suo gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegli il gruppo di opzioni con l'opzione `SSAS` che desideri rimuovere (`ssas-se-2017` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. In **Deletion options (Opzioni di eliminazione)**, scegliere **SSAS** per **Options to delete (Opzioni da eliminare)**.

1. In **Apply immediately (Applica immediatamente)**, scegliere **Yes (Sì)** per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegliere **Delete (Elimina)**.

## AWS CLI
<a name="SSAS.Disable.CLI"></a>

**Per rimuovere l'opzione SSAS dal suo gruppo di opzioni**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssas-se-2017 \
      --options SSAS \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssas-se-2017 ^
      --options SSAS ^
      --apply-immediately
  ```

# Risoluzione dei problemi SSAS
<a name="SSAS.Trouble"></a>

È possibile che si verifichino i seguenti problemi durante l'utilizzo di SSAS.


| Problema | Tipo | Suggerimenti sulla risoluzione dei problemi | 
| --- | --- | --- | 
| Impossibile configurare l'opzione SSAS. La modalità SSAS richiesta è new\$1mode, ma l'attuale istanza database ha number database current\$1mode. Elimina i database esistenti prima di passare alla modalità new\$1mode. Per riottenere l'accesso alla modalità current\$1mode per l'eliminazione del database, aggiorna il gruppo di opzioni del database corrente oppure collega un nuovo gruppo di opzioni con %s come valore di impostazione dell'opzione MODE per l'opzione SSAS. | Evento RDS | Non puoi modificare la modalità SSAS se disponi ancora di database SSAS che utilizzano la modalità corrente. Elimina i database SSAS, quindi riprova. | 
| Impossibile rimuovere l'opzione SSAS perché esistono number database mode. L'opzione SSAS non può essere rimossa finché non vengono eliminati tutti i database SSAS. Aggiungi nuovamente l'opzione SSAS, elimina tutti i database SSAS e riprova. | Evento RDS | Non puoi disattivare SSAS se disponi ancora di database SSAS. Elimina i database SSAS, quindi riprova. | 
| L'opzione SSAS non è abilitata o è in fase di abilitazione. Riprova più tardi. | Stored procedure RDS | Non puoi eseguire stored procedure SSAS quando l'opzione è disattivata o quando è attivata. | 
| L'opzione SSAS non è configurata correttamente. Assicurati che lo stato di appartenenza al gruppo di opzioni sia "in-sync" e controlla i log di eventi RDS per i messaggi di errore di configurazione SSAS pertinenti. Dopo questi controlli, riprova. Se continuano a verificarsi errori, contatta AWS Support. | Stored procedure RDS |  Non è possibile eseguire stored procedure SSAS quando l'appartenenza al gruppo di opzioni non è presente nello stato `in-sync`. Questa operazione mette l'opzione SSAS in uno stato di configurazione errato. Se lo stato di appartenenza al gruppo di opzioni cambia in `failed` a causa della modifica dell'opzione SSAS, ci sono due possibili motivi:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSAS.Trouble.html) Riconfigura l'opzione SSAS, poiché RDS consente solo una modalità SSAS alla volta e non supporta la rimozione delle opzioni SSAS con i database SSAS presenti. Controlla i log di eventi RDS per verificare la presenza di errori di configurazione per l'istanza SSAS e risolvere i problemi di conseguenza.  | 
| Implementazione non riuscita. La modifica può essere implementata solo su un server in esecuzione in modalità deployment\$1file\$1mode. La modalità server attuale è current\$1mode. | Stored procedure RDS |  Non puoi implementare un database tabulare su un server multidimensionale o un database multidimensionale su un server tabulare. Assicurati di utilizzare file con la modalità corretta e verifica che l'impostazione dell'opzione `MODE` sia impostata sul valore appropriato.  | 
| Ripristino non riuscito. Il file di backup può essere ripristinato solo su un server in esecuzione in modalità restore\$1file\$1mode. La modalità server attuale è current\$1mode. | Stored procedure RDS |  Non puoi ripristinare un database tabulare su un server multidimensionale o un database multidimensionale su un server tabulare. Assicurati di utilizzare file con la modalità corretta e verifica che l'impostazione dell'opzione `MODE` sia impostata sul valore appropriato.  | 
| Ripristino non riuscito. Il file di backup e le versioni dell'istanza database RDS non sono compatibili. | Stored procedure RDS |  Non puoi ripristinare un database SSAS con una versione incompatibile con la versione dell'istanza di SQL Server. Per ulteriori informazioni, consulta [Compatibility levels for tabular models](https://docs.microsoft.com/en-us/analysis-services/tabular-models/compatibility-level-for-tabular-models-in-analysis-services) (Livelli di compatibilità per modelli tabulari) e [Compatibility level of a multidimensional database](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/compatibility-level-of-a-multidimensional-database-analysis-services) (Livello di compatibilità per un database multidimensionale) nella documentazione di Microsoft.  | 
| Ripristino non riuscito. Il file di backup specificato nell'operazione di ripristino è danneggiato o non è un file di backup SSAS. Assicurati che @rds\$1file\$1path sia formattato correttamente. | Stored procedure RDS |  Non puoi ripristinare un database SSAS con un file danneggiato. Assicurati che il file non sia danneggiato o corrotto. Questo errore può anche essere generato quando `@rds_file_path` non è formattato correttamente (ad esempio, ha doppie barre rovesciate come in `D:\S3\\incorrect_format.abf`).  | 
| Ripristino non riuscito. Il nome del database ripristinato non può contenere parole riservate o caratteri non validi: . , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > o avere più di 100 caratteri. | Stored procedure RDS |  Il nome del database ripristinato non può contenere parole riservate o caratteri non validi o avere più di 100 caratteri. Per le convenzioni di denominazione degli oggetti SSAS, consulta [Object naming rules](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) (Regole di denominazione degli oggetti) nella documentazione di Microsoft.  | 
| È stato fornito un nome del ruolo non valido. Il nome del ruolo non può contenere stringhe riservate. | Stored procedure RDS |  Il nome del ruolo non può contenere stringhe riservate. Per le convenzioni di denominazione degli oggetti SSAS, consulta [Object naming rules](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) (Regole di denominazione degli oggetti) nella documentazione di Microsoft.  | 
| È stato fornito un nome del ruolo non valido. Il nome del ruolo non può contenere nessuno dei seguenti caratteri riservati: . , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | Stored procedure RDS |  Il nome del ruolo non può contenere caratteri riservati. Per le convenzioni di denominazione degli oggetti SSAS, consulta [Object naming rules](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services) (Regole di denominazione degli oggetti) nella documentazione di Microsoft.  | 

# Supporto per SQL Server Integration Services in Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSIS"></a>

Microsoft SQL Server Integration Services (SSIS) è un componente che è possibile utilizzare per eseguire un'ampia gamma di attività di migrazione dei dati. SSIS è una piattaforma per l'integrazione dei dati e le applicazioni di workflow. È dotato di uno strumento di data warehousing utilizzato per l'estrazione, la trasformazione e il caricamento dei dati (ETL). È inoltre possibile utilizzare questo strumento per automatizzare la manutenzione dei database di SQL Server e degli aggiornamenti ai dati del cubo multidimensionale.

I progetti SSIS sono organizzati in pacchetti salvati come file dtsx basati su XML. I pacchetti possono contenere flussi di controllo e flussi di dati. I flussi di dati vengono utilizzati per rappresentare le operazioni ETL. Dopo la distribuzione, i pacchetti vengono archiviati in SQL Server nel database SSISDB. SSISDB è un database OLTP (Online Transaction Processing) in modalità di recupero completo.

Amazon RDS for SQL Server supporta l'esecuzione di SSIS direttamente su istanze database RDS. È possibile abilitare SSIS su un'istanza database esistente o nuova. È installato sulla stessa istanza database del motore di database.

RDS supporta SSIS per SQL Server Standard ed Enterprise Edition nelle seguenti versioni:
+ SQL Server 2022, tutte le versioni
+ SQL Server 2019, versione 15.00.4043.16.v1 e successive
+ SQL Server 2017, versione 14.00.3223.3.v1 e successive
+ SQL Server 2016, versione 13.00.5426.0.v1 e successive

**Contents**
+ [Limitazioni e consigli](#SSIS.Limitations)
+ [Abilitazione di SSIS](#SSIS.Enabling)
  + [Creazione del gruppo di opzioni per SSIS](#SSIS.OptionGroup)
  + [Aggiunta dell'opzione SSIS al gruppo di opzioni](#SSIS.Add)
  + [Creazione del gruppo di parametri per SSIS](#SSIS.CreateParamGroup)
  + [Modifica del parametro per SSIS](#SSIS.ModifyParam)
  + [Associazione del gruppo di opzioni e del gruppo di parametri all'istanza database](#SSIS.Apply)
  + [Abilitazione dell'integrazione di S3](#SSIS.EnableS3)
+ [Autorizzazioni amministrative su SSISDB](SSIS.Permissions.md)
  + [Configurazione di un utente autenticato da Windows per SSIS](SSIS.Permissions.md#SSIS.Use.Auth)
+ [Distribuzione di un progetto SSIS](SSIS.Deploy.md)
+ [Monitoraggio dello stato di un'attività di distribuzione](SSIS.Monitor.md)
+ [Utilizzo di SSIS](SSIS.Use.md)
  + [Impostazione di gestori di connessioni al database per i progetti SSIS](SSIS.Use.md#SSIS.Use.ConnMgrs)
  + [Creazione di un proxy SSIS](SSIS.Use.md#SSIS.Use.Proxy)
  + [Pianificazione di un pacchetto SSIS utilizzando SQL Server Agent](SSIS.Use.md#SSIS.Use.Schedule)
  + [Revoca dell'accesso SSIS dal proxy](SSIS.Use.md#SSIS.Use.Revoke)
+ [Disabilitazione ed eliminazione del database SSIS](SSIS.DisableDrop.md)
  + [Disabilitazione di SSIS](SSIS.DisableDrop.md#SSIS.Disable)
  + [Eliminazione del database SSISDB](SSIS.DisableDrop.md#SSIS.Drop)

## Limitazioni e consigli
<a name="SSIS.Limitations"></a>

Le limitazioni e i suggerimenti riportati di seguito si applicano all'esecuzione di SSIS su RDS per SQL Server:
+ L'istanza database deve avere un gruppo di parametri associato con il parametro `clr enabled` impostato su 1. Per ulteriori informazioni, consulta [Modifica del parametro per SSIS](#SSIS.ModifyParam).
**Nota**  
Se si abilita il parametro `clr enabled` su SQL Server 2017 o 2019, non è possibile utilizzare il Common Language Runtime (CLR) sull'istanza database. Per ulteriori informazioni, consulta [Caratteristiche non supportate e caratteristiche con supporto limitato](SQLServer.Concepts.General.FeatureNonSupport.md).
+ Sono supportate le seguenti attività del flusso di controllo:
  + Analysis Services esegue task DDL
  + Attività di elaborazione di Analysis Services
  + Attività di inserimento in blocco
  + Verifica dell'attività di integrità del database
  + Attività flusso di dati
  + Attività di query di data mining
  + Attività di profilazione dati
  + Esecuzione di attività del pacchetto
  + Esecuzione di attività del processo agente SQL Server
  + Esecuzione di attività SQL
  + Esecuzione di attività istruzione T-SQL
  + Notifica di attività operatore
  + Ricostruzione attività indice
  + Riorganizzazione attività indice
  + Riduzione attività del database
  + Trasferimento attività database
  + Trasferimento attività processo
  + Trasferimento operazioni di accesso
  + Trasferimento attività oggetti SQL Server
  + Aggiornamento attività statistiche
+ È supportata solo la distribuzione del progetto.
+ È supportata l'esecuzione di pacchetti SSIS utilizzando SQL Server Agent.
+ I record di log SSIS possono essere inseriti solo nei database creati dall'utente.
+ Utilizzare solo la cartella `D:\S3` per lavorare con i file. I file inseriti in qualsiasi altra directory vengono eliminati. A questo punto è necessario conoscere alcuni altri dettagli sulla posizione dei file:
  + Inserire i file di input e output del progetto SSIS nella cartella `D:\S3`.
  + Per l'attività Flusso di dati, modificare il percorso per `BLOBTempStoragePath` e `BufferTempStoragePath` su un file all'interno della cartella `D:\S3`. Il percorso del file deve iniziare con `D:\S3\`.
  + Assicurarsi che tutti i parametri, le variabili e le espressioni utilizzate per le connessioni ai file puntino alla cartella `D:\S3`.
  + Nelle istanze Multi-AZ, i file creati da SSIS nella cartella `D:\S3` vengono eliminati dopo un failover. Per ulteriori informazioni, consulta [Limitazioni Multi-AZ per l'integrazione S3](User.SQLServer.Options.S3-integration.md#S3-MAZ).
  + Carica i file creati da SSIS nella cartella `D:\S3` nel tuo bucket Amazon S3 per renderli durevoli.
+ Le trasformazioni Importa colonne ed Esporta colonne e il componente Script nell'attività Flusso di dati non sono supportati.
+ Non è possibile abilitare il dump sull'esecuzione del pacchetto SSIS e non è possibile aggiungere dati ai pacchetti SSIS.
+ La funzionalità Scale Out SSIS non è supportata.
+ Non è possibile distribuire direttamente i progetti. Forniamo procedure archiviate RDS per farlo. Per ulteriori informazioni, consulta [Distribuzione di un progetto SSIS](SSIS.Deploy.md).
+ Creare file di progetto SSIS (.ispac) con la modalità di protezione `DoNotSavePasswords` per la distribuzione su RDS.
+ SSIS non è supportato nelle istanze Always On con repliche di lettura.
+ Non è possibile eseguire il backup del database SSISDB associato all'opzione `SSIS`.
+ L'importazione e il ripristino del database SSISDB da altre istanze di SSIS non sono supportati.
+ È possibile connettersi ad altre istanze database SQL Server o a un'origine dei dati Oracle. La connessione ad altri motori di database, come MySQL o PostgreSQL, non è supportata per SSIS su RDS per SQL Server. Per ulteriori informazioni sulla connessione a un'origine dei dati Oracle, consulta [Server collegati con Oracle OLEDB](Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB.md). 
+ SSIS non supporta un’istanza unita al dominio con un trust in uscita verso un dominio on-premises. Quando si utilizza un trust in uscita, eseguire il job SSIS da un account nel dominio locale AWS .
+ L'esecuzione di pacchetti basati su file system non è supportata.

## Abilitazione di SSIS
<a name="SSIS.Enabling"></a>

Si abilita SSIS aggiungendo l'opzione SSIS all'istanza database. Utilizzare il seguente processo:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `SSIS` al gruppo di opzioni.

1. Creare un nuovo gruppo di parametri o scegliere un gruppo di parametri esistente.

1. Modificare il gruppo di parametri per impostare il parametro `clr enabled` su 1 o 2.

1. Associare il gruppo di opzioni e il gruppo di parametri all'istanza database.

1. Abilita l'integrazione Amazon S3.

**Nota**  
Se un database con il nome SSISDB o un account di accesso SSIS riservato esiste già nell'istanza database, non è possibile abilitare SSIS sull'istanza.

### Creazione del gruppo di opzioni per SSIS
<a name="SSIS.OptionGroup"></a>

Per utilizzare SSIS, creare un gruppo di opzioni o modificare un gruppo di opzioni che corrisponda all'edizione di SQL Server e alla versione dell'istanza database che si intende utilizzare. A tale scopo, utilizzare Console di gestione AWS o il AWS CLI.

#### Console
<a name="SSIS.OptionGroup.Console"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2016.

**Per creare il gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, inserisci un nome per il gruppo di opzioni che sia unico all'interno del tuo AWS account, ad esempio**ssis-se-2016**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **SSIS option group for SQL Server SE 2016**. La descrizione viene usata per la visualizzazione. 

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Versione del motore principale**, scegliere **13.00**.

1. Scegliere **Create (Crea)**.

#### CLI
<a name="SSIS.OptionGroup.CLI"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2016.

**Per creare il gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-option-group \
      --option-group-name ssis-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

  Per Windows:

  ```
  aws rds create-option-group ^
      --option-group-name ssis-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "SSIS option group for SQL Server SE 2016"
  ```

### Aggiunta dell'opzione SSIS al gruppo di opzioni
<a name="SSIS.Add"></a>

Quindi, usa Console di gestione AWS o AWS CLI per aggiungere l'`SSIS`opzione al tuo gruppo di opzioni.

#### Console
<a name="SSIS.Add.Console"></a>

**Per aggiungere l'opzione SSIS**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni appena creato, **ssis-se-2016** in questo esempio.

1. Scegliere **Add option (Aggiungi opzione)**.

1. In **Dettagli opzione**, scegliere **SSIS** per **Nome opzione**.

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

#### CLI
<a name="SSIS.Add.CLI"></a>

**Per aggiungere l'opzione SSIS**
+ Aggiungere l'opzione `SSIS` al gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssis-se-2016 \
      --options OptionName=SSIS \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssis-se-2016 ^
      --options OptionName=SSIS ^
      --apply-immediately
  ```

### Creazione del gruppo di parametri per SSIS
<a name="SSIS.CreateParamGroup"></a>

Creare o modificare un gruppo di parametri per il parametro `clr enabled` corrispondente all'edizione di SQL Server e alla versione dell'istanza database che si pianifica di utilizzare per SSIS.

#### Console
<a name="SSIS.CreateParamGroup.Console"></a>

Nella procedura seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione, scegli **Parameter groups** (Gruppi di parametri).

1. Scegliere **Create parameter group (Crea gruppo di parametri)**.

1. Nel riquadro **Create parameter group (Crea gruppi di parametri)**, procedi nel modo seguente:

   1. Per **Famiglia del gruppo di parametri**, scegliere **sqlserver-se-13.0**.

   1. Per **Group name (Nome gruppo)**, immettere un identificatore per il gruppo di parametri, ad esempio **ssis-sqlserver-se-13**.

   1. Per **Description (Descrizione)**, immettere **clr enabled parameter group**.

1. Scegliere **Create (Crea)**.

#### CLI
<a name="SSIS.CreateParamGroup.CLI"></a>

Nella procedura seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "clr enabled parameter group"
  ```

  Per Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "clr enabled parameter group"
  ```

### Modifica del parametro per SSIS
<a name="SSIS.ModifyParam"></a>

Modifica il parametro `clr enabled` nel gruppo di parametri che corrisponde all'edizione di SQL Server e alla versione dell'istanza database. Per SSIS, impostare il parametro `clr enabled` su 1.

#### Console
<a name="SSIS.ModifyParam.Console"></a>

Nella procedura seguente, il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**.

1. Scegli il gruppo di parametri, ad esempio **ssis-sqlserver-se-13**.

1. In **Parameters (Parametri)**, filtrare l'elenco dei parametri per **clr**.

1. Scegliere **clr abilitato**.

1. Scegliere **Edit parameters (Modifica parametri)**.

1. Da **Valori**, scegliere **1**.

1. Seleziona **Save changes** (Salva modifiche).

#### CLI
<a name="SSIS.ModifyParam.CLI"></a>

Nella procedura seguente, il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

  Per Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --parameters "ParameterName='clr enabled',ParameterValue=1,ApplyMethod=immediate"
  ```

### Associazione del gruppo di opzioni e del gruppo di parametri all'istanza database
<a name="SSIS.Apply"></a>

Per associare il gruppo di opzioni SSIS e il gruppo di parametri alla tua istanza DB, usa Console di gestione AWS o AWS CLI 

**Nota**  
Se utilizzi un'istanza esistente, deve già avere un dominio Active Directory e un ruolo AWS Identity and Access Management (IAM) associati. Se si crea una nuova istanza, specificare un dominio Active Directory esistente e un ruolo IAM. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

#### Console
<a name="SSIS.Apply.Console"></a>

Per completare l'abilitazione di SSIS, associare il gruppo di opzioni SSIS e il gruppo di parametri a un'istanza database nuova o esistente:
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

#### CLI
<a name="SSIS.Apply.CLI"></a>

Puoi associare il gruppo di opzioni SSIS e il gruppo di parametri a un'istanza database nuova o esistente.

**Per creare un'istanza con il gruppo di opzioni SSIS e il gruppo di parametri**
+ Specificare lo stesso tipo di motore di database e la versione principale utilizzati durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssisinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssisinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13
  ```

**Per modificare un'istanza database e associare il gruppo di opzioni SSIS e il gruppo di parametri**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssisinstance \
      --option-group-name ssis-se-2016 \
      --db-parameter-group-name ssis-sqlserver-se-13 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssisinstance ^
      --option-group-name ssis-se-2016 ^
      --db-parameter-group-name ssis-sqlserver-se-13 ^
      --apply-immediately
  ```

### Abilitazione dell'integrazione di S3
<a name="SSIS.EnableS3"></a>

Per scaricare i file del progetto SSIS (.ispac) sull'host per la distribuzione, utilizzare l'integrazione dei file S3. Per ulteriori informazioni, consulta [Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3](User.SQLServer.Options.S3-integration.md).

# Autorizzazioni amministrative su SSISDB
<a name="SSIS.Permissions"></a>

Quando l'istanza viene creata o modificata con l'opzione SSIS, il risultato è un database SSISDB con i ruoli ssis\$1admin e ssis\$1logreader concessi all'utente master. L'utente master dispone dei seguenti privilegi in SSISDB:
+ modifica del ruolo ssis\$1admin
+ modifica del ruolo ssis\$1logreader
+ modifica di qualsiasi utente

Poiché l'utente principale è un utente autenticato SQL, non è possibile utilizzare l'utente master per l'esecuzione di pacchetti SSIS. L'utente master può utilizzare questi privilegi per creare nuovi utenti SSISDB e aggiungerli ai ruoli ssis\$1admin e ssis\$1logreader. Questa operazione è utile per dare accesso agli utenti del dominio per l'utilizzo di SSIS.

## Configurazione di un utente autenticato da Windows per SSIS
<a name="SSIS.Use.Auth"></a>

L'utente master può utilizzare l'esempio di codice riportato di seguito per impostare un accesso autenticato da Windows in SSISDB e concedere le autorizzazioni necessarie per la procedura. In questo modo vengono concesse autorizzazioni all'utente del dominio per distribuire ed eseguire pacchetti SSIS, utilizzare procedure di trasferimento file S3, creare credenziali e lavorare con il proxy Agente SQL Server. Per ulteriori informazioni, consulta [Credentials (Database Engine)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) e [Create a SQL Server Agent Proxy](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) nella documentazione di Microsoft.

**Nota**  
È possibile concedere alcune o tutte le autorizzazioni seguenti, se necessario, agli utenti autenticati da Windows.

**Example**  

```
-- Create a server-level SQL login for the domain user, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO						
						
-- Create a database-level account for the domain user, if it doesn't already exist						
USE [SSISDB]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Add SSIS role membership to the domain user
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

-- Add MSDB role membership to the domain user
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]

-- Grant MSDB stored procedure privileges to the domain user
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name]  with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] WITH GRANT OPTION


-- Add the SQLAgentUserRole privilege to the domain user
USE [msdb]
GO
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO

-- Grant the ALTER ANY CREDENTIAL privilege to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO
```

# Distribuzione di un progetto SSIS
<a name="SSIS.Deploy"></a>

In RDS, non è possibile distribuire progetti SSIS direttamente utilizzando procedure SQL Server Management Studio (SSMS) o SSIS. Per scaricare i file di progetto da Amazon S3 e quindi distribuirli, utilizzare le procedure archiviate di RDS.

Per eseguire le procedure archiviate, accedere come o qualsiasi utente a cui sono state concesse le autorizzazioni di esecuzione per le procedure archiviate. Per ulteriori informazioni, consulta [Configurazione di un utente autenticato da Windows per SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Per distribuire il progetto SSIS**

1. Scaricare il file di progetto (.ispac).

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/ssisproject.ispac',
   @rds_file_path='D:\S3\ssisproject.ispac',
   @overwrite_file=1;
   ```

1. Inviare l'attività di distribuzione, verificando quanto segue:
   + La cartella è presente nel catalogo SSIS.
   + Il nome del progetto corrisponde al nome del progetto utilizzato durante lo sviluppo del progetto SSIS.

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSIS_DEPLOY_PROJECT',
   @folder_name='DEMO',
   @project_name='ssisproject',
   @file_path='D:\S3\ssisproject.ispac';
   ```

# Monitoraggio dello stato di un'attività di distribuzione
<a name="SSIS.Monitor"></a>

Per tenere traccia dello stato dell'attività di distribuzione, chiamare la funzione `rds_fn_task_status`. accetta due parametri. Il primo parametro deve essere sempre `NULL` perché non si applica a SSIS. Il secondo parametro accetta un ID attività. 

Per visualizzare l'elenco di tutte le attività, imposta il primo parametro su `NULL` e il secondo parametro su `0`, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Per ottenere un'attività specifica, imposta il primo parametro su `NULL` e il secondo parametro sull'ID attività, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La funzione `rds_fn_task_status` restituisce le seguenti informazioni.


| Parametro di output | Descrizione | 
| --- | --- | 
| `task_id` | L'ID dell'attività. | 
| `task_type` | `SSIS_DEPLOY_PROJECT` | 
| `database_name` | Non applicabile alle attività SSIS. | 
| `% complete` | L'avanzamento dell'attività espresso come percentuale. | 
| `duration (mins)` | La quantità di tempo dedicato all'attività, in minuti. | 
| `lifecycle` |  Lo stato dell'attività. I possibili stati sono i seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSIS.Monitor.html)  | 
| `task_info` | Ulteriori informazioni sull'attività. Se si verifica un errore durante l'elaborazione, questa colonna contiene informazioni sull'errore. | 
| `last_updated` | La data e l'ora dell'ultimo aggiornamento dello stato dell'attività. | 
| `created_at` | La data e l'ora di creazione dell'attività. | 
| `S3_object_arn` |  Non applicabile alle attività SSIS.  | 
| `overwrite_S3_backup_file` | Non applicabile alle attività SSIS. | 
| `KMS_master_key_arn` |  Non applicabile alle attività SSIS.  | 
| `filepath` |  Non applicabile alle attività SSIS.  | 
| `overwrite_file` |  Non applicabile alle attività SSIS.  | 
| `task_metadata` | Metadati associati all'attività SSIS. | 

# Utilizzo di SSIS
<a name="SSIS.Use"></a>

Dopo aver distribuito il progetto SSIS nel catalogo SSIS, è possibile eseguire i pacchetti direttamente da SSMS o pianificarli utilizzando SQL Server Agent. È necessario utilizzare un accesso autenticato da Windows per l'esecuzione di pacchetti SSIS. Per ulteriori informazioni, consulta [Configurazione di un utente autenticato da Windows per SSIS](SSIS.Permissions.md#SSIS.Use.Auth).

**Topics**
+ [Impostazione di gestori di connessioni al database per i progetti SSIS](#SSIS.Use.ConnMgrs)
+ [Creazione di un proxy SSIS](#SSIS.Use.Proxy)
+ [Pianificazione di un pacchetto SSIS utilizzando SQL Server Agent](#SSIS.Use.Schedule)
+ [Revoca dell'accesso SSIS dal proxy](#SSIS.Use.Revoke)

## Impostazione di gestori di connessioni al database per i progetti SSIS
<a name="SSIS.Use.ConnMgrs"></a>

Quando si utilizza un gestore di connessione, è possibile utilizzare i seguenti tipi di autenticazione:
+ Per le connessioni al database locale mediante Active Directory gestito da AWS, puoi utilizzare l'autenticazione SQL o l'autenticazione di Windows. Per l'autenticazione di Windows, utilizzare `DB_instance_name.fully_qualified_domain_name` come nome del server della stringa di connessione.

  Un esempio è `myssisinstance.corp-ad.example.com`, dove `myssisinstance` è il nome dell'istanza database ed `corp-ad.example.com` è il nome di dominio completo.
+ Per le connessioni remote, utilizzare sempre l'autenticazione SQL.
+ Per le connessioni al database locale mediante Active Directory gestito dal cliente, puoi utilizzare l'autenticazione SQL o l'autenticazione di Windows. Per l'autenticazione di Windows, utilizza `.` o `LocalHost` come nome del server della stringa di connessione.

## Creazione di un proxy SSIS
<a name="SSIS.Use.Proxy"></a>

Per pianificare pacchetti SSIS utilizzando SQL Server Agent, creare una credenziale SSIS e un proxy SSIS. Eseguire queste procedure come utente autenticato da Windows.

**Per creare le credenziali SSIS**
+ Creare le credenziali per il proxy. A tale scopo, è possibile utilizzare SSMS o la seguente istruzione SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**Nota**  
`IDENTITY` deve essere un accesso autenticato dal dominio. Sostituire `mysecret` con la password per l'accesso autenticato dal dominio.  
Ogni volta che l'host primario SSISDB viene modificato, modificare le credenziali proxy SSIS per consentire al nuovo host di accedervi.

**Per creare il proxy SSIS**

1. Utilizzare l'istruzione SQL seguente per creare il proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N''
   GO
   ```

1. Utilizzare l'istruzione SQL seguente per concedere l'accesso al proxy ad altri utenti.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Utilizzare la seguente istruzione SQL per dare al sottosistema SSIS l'accesso al proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

**Per visualizzare il proxy e le concessioni sul proxy**

1. Utilizzare l'istruzione SQL seguente per visualizzare gli assegnatari del proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Utilizzare l'istruzione SQL seguente per visualizzare i privilegi del sottosistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Pianificazione di un pacchetto SSIS utilizzando SQL Server Agent
<a name="SSIS.Use.Schedule"></a>

Dopo aver creato le credenziali e il proxy e dopo aver concesso l'accesso SSIS al proxy, è possibile creare un processo Agente SQL Server per pianificare il pacchetto SSIS.

**Per pianificare il pacchetto SSIS**
+ È possibile utilizzare SSMS o T-SQL per creare il processo Agente SQL Server. L'esempio seguente utilizza T-SQL.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=2,
  @notify_level_page=2,
  @delete_level=0,
  @category_name=N'[Uncategorized (Local)]',
  @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_fail_action=2,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0,
  @subsystem=N'SSIS',
  @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" 
  /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E',
  @database_name=N'master',
  @flags=0,
  @proxy_name=N'SSIS_Proxy'
  GO
  ```

## Revoca dell'accesso SSIS dal proxy
<a name="SSIS.Use.Revoke"></a>

È possibile revocare l'accesso al sottosistema SSIS ed eliminare il proxy SSIS utilizzando le seguenti procedure memorizzate.

**Per revocare l'accesso ed eliminare il proxy**

1. Revocare l'accesso al sottosistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS'
   GO
   ```

1. Revocare le concessioni per la delega.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Eliminare il proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy'
   GO
   ```

# Disabilitazione ed eliminazione del database SSIS
<a name="SSIS.DisableDrop"></a>

I passaggi seguenti consentono di disabilitare o eliminare i database SSIS:

**Topics**
+ [Disabilitazione di SSIS](#SSIS.Disable)
+ [Eliminazione del database SSISDB](#SSIS.Drop)

## Disabilitazione di SSIS
<a name="SSIS.Disable"></a>

Per disabilitare SSIS, rimuovere l'opzione `SSIS` dal relativo gruppo di opzioni.

**Importante**  
La rimozione dell'opzione non elimina il database SSISDB, quindi è possibile rimuovere in modo sicuro l'opzione senza perdere i progetti SSIS.  
È possibile riattivare l'opzione `SSIS` dopo la rimozione per riutilizzare i progetti SSIS precedentemente distribuiti nel catalogo SSIS.

### Console
<a name="SSIS.Disable.Console"></a>

La procedura seguente rimuove l'opzione `SSIS`.

**Per rimuovere l'opzione SSIS dal suo gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l'opzione `SSIS` (`ssis-se-2016` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. In **Opzioni di eliminazione**, scegliere **SSIS** per **Opzioni da eliminare**.

1. In **Apply immediately (Applica immediatamente)**, scegliere **Yes (Sì)** per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegliere **Delete (Elimina)**.

### CLI
<a name="SSIS.Disable.CLI"></a>

La procedura seguente rimuove l'opzione `SSIS`.

**Per rimuovere l'opzione SSIS dal suo gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssis-se-2016 \
      --options SSIS \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssis-se-2016 ^
      --options SSIS ^
      --apply-immediately
  ```

## Eliminazione del database SSISDB
<a name="SSIS.Drop"></a>

Dopo aver rimosso l'opzione SSIS, il database SSISDB non viene eliminato. Per eliminare il database SSISDB, utilizzare la procedura memorizzata `rds_drop_ssis_database` dopo aver rimosso l'opzione SSIS.

**Per eliminare il database SSIS**
+ Utilizzare la seguente stored procedure.

  ```
  USE [msdb]
  GO
  EXEC dbo.rds_drop_ssis_database
  GO
  ```

Dopo aver eliminato il database SSISDB, se si riattiva l'opzione SSIS si ottiene un nuovo catalogo SSISDB.

# Supporto per SQL Server Reporting Services in Amazon RDS for SQL Server
<a name="Appendix.SQLServer.Options.SSRS"></a>

Microsoft SQL Server Reporting Services (SSRS) è un'applicazione basata su server utilizzata per la generazione e la distribuzione di report. Fa parte di una suite di servizi SQL Server che include anche SQL Server Analysis Services (SSAS) e SQL Server Integration Services (SSIS). SSRS è un servizio basato su SQL Server. Puoi utilizzarlo per raccogliere dati da varie origini dati e presentarli in un modo facilmente comprensibile e pronto per l'analisi.

Amazon RDS for SQL Server supporta l'esecuzione di SSRS direttamente su istanze database RDS. È possibile utilizzare SSRS con istanze database nuove o esistenti.

RDS supporta SSRS per SQL Server Standard ed Enterprise Edition nelle seguenti versioni:
+ SQL Server 2022, tutte le versioni
+ SQL Server 2019, versione 15.00.4043.16.v1 e successive
+ SQL Server 2017, versione 14.00.3223.3.v1 e successive
+ SQL Server 2016, versione 13.00.5820.21.v1 e successive

**Contents**
+ [Limitazioni e consigli](#SSRS.Limitations)
+ [Attivazione di SSRS](SSRS.Enabling.md)
  + [Creazione di un gruppo di opzioni per SSRS](SSRS.Enabling.md#SSRS.OptionGroup)
  + [Aggiunta dell'opzione SSRS al gruppo di opzioni](SSRS.Enabling.md#SSRS.Add)
  + [Associazione del gruppo di opzioni all'istanza database](SSRS.Enabling.md#SSRS.Apply)
  + [Consentire l'accesso in ingresso al gruppo di sicurezza VPC](SSRS.Enabling.md#SSRS.Inbound)
+ [Database del server di report](#SSRS.DBs)
+ [File di log SSRS](#SSRS.Logs)
+ [Accesso al portale Web SSRS](SSRS.Access.md)
  + [Utilizzo di SSL su RDS](SSRS.Access.md#SSRS.Access.SSL)
  + [Concessione dell'accesso agli utenti del dominio](SSRS.Access.md#SSRS.Access.Grant)
  + [Accesso al portale Web](SSRS.Access.md#SSRS.Access)
+ [Implementazione dei report e configurazione delle origini dati dei report](SSRS.DeployConfig.md)
  + [Distribuzione di report su SSRS](SSRS.DeployConfig.md#SSRS.Deploy)
  + [Configurazione dell'origine dati del report](SSRS.DeployConfig.md#SSRS.ConfigureDataSource)
+ [Utilizzo di SSRS Email per inviare report](SSRS.Email.md)
+ [Revoca delle autorizzazioni a livello di sistema](SSRS.Access.Revoke.md)
+ [Monitoraggio dello stato di un'attività](SSRS.Monitor.md)
+ [Disabilitazione ed eliminazione dei database SSRS](SSRS.DisableDelete.md)
  + [Disattivazione di SSRS](SSRS.DisableDelete.md#SSRS.Disable)
  + [Eliminazione dei database SSRS](SSRS.DisableDelete.md#SSRS.Drop)

## Limitazioni e consigli
<a name="SSRS.Limitations"></a>

Le seguenti limitazioni e i suggerimenti riportati di seguito si applicano all'esecuzione di SSRS su RDS per SQL Server:
+ Non è possibile utilizzare SSRS su istanze database con repliche di lettura.
+ Le istanze devono utilizzare Active Directory autogestita o AWS Directory Service for Microsoft Active Directory per l'autenticazione del portale web e del server web SSRS. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md). 
+ Non è possibile eseguire il backup dei database dei server di reporting creati con l'opzione SSRS.
+ L'importazione e il ripristino dei database del server di report da altre istanze di SSRS non sono operazioni supportate. Per ulteriori informazioni, consulta [Database del server di report](#SSRS.DBs).
+ Non è possibile configurare SSRS per l'ascolto sulla porta SSL predefinita (443). I valori consentiti sono 1150–49511, eccetto 1234, 1434, 3260, 3343, 3389 e 47001.
+ Le sottoscrizioni tramite una condivisione di file di Microsoft Windows non sono supportate.
+ L'utilizzo di Reporting Services Configuration Manager non è supportato.
+ Le operazioni di creazione e modifica dei ruoli non sono supportate.
+ La modifica delle proprietà del server di report non è supportata.
+ I ruoli di amministratore di sistema e utente di sistema non sono concessi.
+ Non è possibile modificare assegnazioni dei ruoli a livello di sistema tramite il portale Web.

# Attivazione di SSRS
<a name="SSRS.Enabling"></a>

Utilizza il seguente processo per attivare SSRS per l'istanza database:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `SSRS` al gruppo di opzioni.

1. Associare il gruppo di opzioni a questa istanza database.

1. Consentire l'accesso in ingresso al gruppo di sicurezza Virtual Private Cloud (VPC) per la porta listener SSRS.

## Creazione di un gruppo di opzioni per SSRS
<a name="SSRS.OptionGroup"></a>

Per utilizzare SSRS, creare un gruppo di opzioni che corrisponde al motore SQL Server e alla versione dell'istanza database che si intende utilizzare. Per fare ciò, usa il Console di gestione AWS o il AWS CLI. 

**Nota**  
È inoltre possibile utilizzare un gruppo di opzioni esistente se si tratta del motore e della versione di SQL Server corretti.

### Console
<a name="SSRS.OptionGroup.Console"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2017.

**Per creare il gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, inserisci un nome per il gruppo di opzioni che sia unico all'interno del tuo gruppo Account AWS, ad esempio**ssrs-se-2017**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **SSRS option group for SQL Server SE 2017**. La descrizione viene usata per la visualizzazione.

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Major engine version (Versione principale del motore)**, scegli **14.00**.

1. Scegliere **Create (Crea)**.

### CLI
<a name="SSRS.OptionGroup.CLI"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2017.

**Per creare il gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.

**Example**  
Per Linux, macOS o Unix:  

```
aws rds create-option-group \
    --option-group-name ssrs-se-2017 \
    --engine-name sqlserver-se \
    --major-engine-version 14.00 \
    --option-group-description "SSRS option group for SQL Server SE 2017"
```
Per Windows:  

```
aws rds create-option-group ^
    --option-group-name ssrs-se-2017 ^
    --engine-name sqlserver-se ^
    --major-engine-version 14.00 ^
    --option-group-description "SSRS option group for SQL Server SE 2017"
```

## Aggiunta dell'opzione SSRS al gruppo di opzioni
<a name="SSRS.Add"></a>

Quindi, usa Console di gestione AWS o AWS CLI per aggiungere l'`SSRS`opzione al tuo gruppo di opzioni.

### Console
<a name="SSRS.Add.CON"></a>

**Per aggiungere l'opzione SSRS**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona il gruppo di opzioni precedentemente creato, quindi scegli **Add Option** (Aggiungi opzione).

1. In **Dettagli opzione**, scegliere **SSRS** per **Nome opzione**.

1. In **Impostazioni delle opzioni**, effettuare le seguenti operazioni:

   1. Immettere la porta su cui rimanere in ascolto del servizio SSRS. L'impostazione predefinita è 8443. Per un elenco dei valori consentiti, consulta [Limitazioni e consigli](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).

   1. Immettere un valore per **Memoria massima**.

      L'opzione **Memoria massima** specifica la soglia superiore al di sopra della quale non vengono concesse nuove richieste di allocazione di memoria alle applicazioni del server di report. Il numero è una percentuale della memoria totale dell'istanza database. I valori consentiti sono compresi tra 10 e 80.

   1. Per **Security groups (Gruppi di sicurezza)**, scegliere il gruppo di sicurezza VPC da associare all'opzione. Utilizzare lo stesso gruppo di sicurezza associato all'istanza database.

1. Per utilizzare SSRS Email per inviare report, scegli la casella di controllo **Configure email delivery options** (Configura opzioni di consegna e-mail) nell'area **Email delivery in reporting services** (Consegna e-mail in Reporting Services) e quindi esegui le seguenti operazioni:

   1. In **Sender email address** (Indirizzo e-mail mittente), immetti l'indirizzo e-mail da utilizzare nell campo **From** (Da) dei messaggi inviati da SSRS Email.

      Specifica un account utente con il permesso di inviare posta dal server SMTP.

   1. In **SMTP server** (Server SMTP), specifica il server o il gateway SMTP da utilizzare.

      Può essere un indirizzo IP, il nome NetBIOS di un computer sulla rete Intranet aziendale o un nome di dominio completo.

   1. In **SMTP port** (Porta SMTP), immetti la porta da utilizzare per connetterti al server di posta. Il valore predefinito è 25.

   1. Per utilizzare l'autenticazione:

      1. Seleziona la casella di controllo **Use authentication** (Utilizza autenticazione).

      1. Per **Secret Amazon Resource Name (ARN), inserisci l' Gestione dei segreti AWS ARN** per le credenziali dell'utente.

         Utilizza il seguente formato:

         **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

         Ad esempio:

         **arn:aws:secretsmanager:*us-west-2*:*123456789012*:secret:*MySecret-a1b2c3***

         Per ulteriori informazioni sulla creazione del segreto, consulta [Utilizzo di SSRS Email per inviare report](SSRS.Email.md).

   1. Seleziona la casella di controllo **Use Secure Sockets Layer (SSL)** (Utilizza Secure Sockets Layer (SSL)) per crittografare i messaggi e-mail tramite SSL.

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

### CLI
<a name="SSRS.Add.CLI"></a>

**Per aggiungere l'opzione SSRS**

1. Crea un file JSON, ad esempio `ssrs-option.json`.

   1. Imposta i parametri obbligatori seguenti:
      + `OptionGroupName` – Il gruppo di opzioni creato o scelto in precedenza (`ssrs-se-2017` nell'esempio seguente).
      + `Port` – La porta per il servizio SSRS su cui rimanere in ascolto. L'impostazione predefinita è 8443. Per un elenco dei valori consentiti, consulta [Limitazioni e consigli](Appendix.SQLServer.Options.SSRS.md#SSRS.Limitations).
      + `VpcSecurityGroupMemberships` – Appartenenze ai gruppi di sicurezza VPC per l'istanza database RDS.
      + `MAX_MEMORY` – La soglia superiore al di sopra della quale non vengono concesse nuove richieste di allocazione di memoria alle applicazioni del server di report. Il numero è una percentuale della memoria totale dell'istanza database. I valori consentiti sono compresi tra 10 e 80.

   1. (Facoltativo) Imposta i seguenti parametri per utilizzare SSRS Email:
      + `SMTP_ENABLE_EMAIL`: imposta su `true` per utilizzare SSRS Email. Il valore predefinito è `false`.
      + `SMTP_SENDER_EMAIL_ADDRESS`: l'indirizzo e-mail da utilizzare nel campo **From** (Da) dei messaggi inviati da SSRS Email. Specifica un account utente con il permesso di inviare posta dal server SMTP.
      + `SMTP_SERVER`: il server o il gateway SMTP da utilizzare. Può essere un indirizzo IP, il nome NetBIOS di un computer sulla rete Intranet aziendale o un nome di dominio completo.
      + `SMTP_PORT`: la porta da utilizzare per la connessione al server di posta. Il valore predefinito è 25.
      + `SMTP_USE_SSL`: imposta su `true` per crittografare i messaggi e-mail tramite SSL. Il valore predefinito è `true`.
      + `SMTP_EMAIL_CREDENTIALS_SECRET_ARN`: l'ARN di Secrets Manager che contiene le credenziali dell'utente. Utilizza il seguente formato:

        **arn:aws:secretsmanager:*Region*:*AccountId*:secret:*SecretName*-*6RandomCharacters***

        Per ulteriori informazioni sulla creazione del segreto, consulta [Utilizzo di SSRS Email per inviare report](SSRS.Email.md).
      + `SMTP_USE_ANONYMOUS_AUTHENTICATION`: imposta su `true` e non includere `SMTP_EMAIL_CREDENTIALS_SECRET_ARN` se non desideri utilizzare l'autenticazione.

        Il valore predefinito è `false` quando `SMTP_ENABLE_EMAIL` è `true`.

   L'esempio seguente include i parametri SSRS Email, utilizzando l'ARN segreto.

   ```
   {
   "OptionGroupName": "ssrs-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSRS",
   	"Port": 8443,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [
               {"Name": "MAX_MEMORY","Value": "60"},
               {"Name": "SMTP_ENABLE_EMAIL","Value": "true"}
               {"Name": "SMTP_SENDER_EMAIL_ADDRESS","Value": "nobody@example.com"},
               {"Name": "SMTP_SERVER","Value": "email-smtp.us-west-2.amazonaws.com"},
               {"Name": "SMTP_PORT","Value": "25"},
               {"Name": "SMTP_USE_SSL","Value": "true"},
               {"Name": "SMTP_EMAIL_CREDENTIALS_SECRET_ARN","Value": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3"}
               ]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Aggiungere l'opzione `SSRS` al gruppo di opzioni.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssrs-option.json \
       --apply-immediately
   ```

   Per Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssrs-option.json ^
       --apply-immediately
   ```

## Associazione del gruppo di opzioni all'istanza database
<a name="SSRS.Apply"></a>

Usa Console di gestione AWS o AWS CLI per associare il tuo gruppo di opzioni alla tua istanza DB.

Se si utilizza un'istanza database esistente, un dominio Active Directory e un ruolo AWS Identity and Access Management (IAM) devono già essere associati all'istanza. Se si crea una nuova istanza, specificare un dominio Active Directory esistente e un ruolo IAM. Per ulteriori informazioni, consulta [Utilizzo di Active Directory con RDS per SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

### Console
<a name="SSRS.Apply.Console"></a>

È possibile associare il gruppo di opzioni a un'istanza database nuova o esistente:
+ Per una nuova istanza database, associare il gruppo di opzioni quando viene avviata l'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, modificare l'istanza e associare il nuovo gruppo di opzioni. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="SSRS.Apply.CLI"></a>

È possibile associare il gruppo di opzioni a un'istanza database nuova o esistente.

**Per creare un'istanza database che utilizza il gruppo di opzioni**
+ Specificare lo stesso tipo di motore del database e la versione principale utilizzati durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssrsinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.v1 \
      --allocated-storage 100 \
      --manage-master-user-password  \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssrs-se-2017
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssrs-se-2017
  ```

**Per modificare un'istanza database per utilizzare il gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssrsinstance \
      --option-group-name ssrs-se-2017 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssrsinstance ^
      --option-group-name ssrs-se-2017 ^
      --apply-immediately
  ```

## Consentire l'accesso in ingresso al gruppo di sicurezza VPC
<a name="SSRS.Inbound"></a>

Per consentire l'accesso in ingresso al gruppo di sicurezza VPC associato all'istanza database, creare una regola in entrata per la porta listener SSRS specificata. Per ulteriori informazioni sulla configurazione di un gruppo di sicurezza, consulta [Fornisci accesso alla istanza database nel VPC creando un gruppo di sicurezza](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

## Database del server di report
<a name="SSRS.DBs"></a>

Quando l'istanza database è associata all'opzione SSRS, nell'istanza database vengono creati due nuovi database:
+ `rdsadmin_ReportServer`
+ `rdsadmin_ReportServerTempDB`

Questi database fungono da database ReportServer e ReportServerTempDB. SSRS archivia i suoi dati nel database ReportServer e memorizza i dati nella cache nel database ReportServerTempDB. Per ulteriori informazioni, consulta [Database del server di report](https://learn.microsoft.com/en-us/sql/reporting-services/report-server/report-server-database-ssrs-native-mode?view=sql-server-ver15) nella documentazione Microsoft.

RDS possiede e gestisce questi database, pertanto le operazioni del database su di essi, come ALTER e DROP, non sono consentite. L'accesso al database `rdsadmin_ReportServerTempDB` non è consentito. Tuttavia, puoi eseguire operazioni di lettura sul database `rdsadmin_ReportServer`.

## File di log SSRS
<a name="SSRS.Logs"></a>

Puoi elencare, visualizzare e scaricare file di log SSRS. I file di log SSRS seguono una convenzione di denominazione di ReportServerService\$1*timestamp*.log. Questi log del server di report si trovano nella directory `D:\rdsdbdata\Log\SSRS`. La directory `D:\rdsdbdata\Log` è anche la directory principale dei log degli errori e dei log di SQL Server Agent. Per ulteriori informazioni, consulta [Visualizzazione ed elenco dei file di log del database](USER_LogAccess.Procedural.Viewing.md).

Per le istanze SSRS esistenti, potrebbe essere necessario riavviare il servizio SSRS per accedere ai log del server di report. È possibile riavviare il servizio aggiornando l'opzione `SSRS`.

Per ulteriori informazioni, consulta [Utilizzo dei log di Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md).

# Accesso al portale Web SSRS
<a name="SSRS.Access"></a>

Utilizzare il seguente processo per accedere al portale Web SSRS:

1. Attiva Secure Sockets Layer (SSL).

1. Concedere l'accesso agli utenti del dominio.

1. Accedere al portale Web utilizzando un browser e le credenziali utente di dominio.

## Utilizzo di SSL su RDS
<a name="SSRS.Access.SSL"></a>

SSRS utilizza il protocollo HTTPS/SSL per le sue connessioni. Per utilizzare questo protocollo, importare un certificato SSL nel sistema operativo Microsoft Windows sul computer client.

Per ulteriori informazioni sui certificati SSL, consulta [](UsingWithRDS.SSL.md). Per ulteriori informazioni sull'uso di SSL con SQL Server, consulta [Utilizzo di SSL con un'istanza database Microsoft SQL Server](SQLServer.Concepts.General.SSL.Using.md).

## Concessione dell'accesso agli utenti del dominio
<a name="SSRS.Access.Grant"></a>

In una nuova attivazione SSRS, non ci sono assegnazioni dei ruoli in SSRS. Per concedere a un utente del dominio o a un gruppo di utenti l'accesso al portale Web, RDS fornisce una stored procedure.

**Per concedere l'accesso a un utente del dominio nel portale Web**
+ Utilizzare la seguente stored procedure.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_GRANT_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

All'utente del dominio o al gruppo di utenti viene concesso il ruolo di sistema `RDS_SSRS_ROLE`. A questo ruolo sono concesse le seguenti attività a livello di sistema:
+ Esecuzione di report
+ Gestione dei processi 
+ Gestione di pianificazioni condivise
+ Visualizzazione di pianificazioni condivise

Viene inoltre concesso il ruolo a livello di elemento di `Content Manager` nella cartella root.

## Accesso al portale Web
<a name="SSRS.Access"></a>

Al termine dell'attività `SSRS_GRANT_PORTAL_PERMISSION`, è possibile accedere al portale utilizzando un browser Web. Il formato dell'URL del portale Web è il seguente.

```
https://rds_endpoint:port/Reports
```

In questo formato, è previsto quanto segue:
+ *`rds_endpoint`* – L'endpoint per l'istanza database RDS utilizzata con SSRS.

  L'endpoint è disponibile nella scheda **Connettività e sicurezza** dell'istanza database. Per ulteriori informazioni, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).
+ `port` – La porta del listener per SSRS impostata nell'opzione `SSRS`.

**Per accedere al portale Web**

1. Immettere l'URL del portale Web nel browser.

   ```
   https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/Reports
   ```

1. Accedere con le credenziali per un utente del dominio a cui è stato concesso l'accesso con l'attività `SSRS_GRANT_PORTAL_PERMISSION`.

# Implementazione dei report e configurazione delle origini dati dei report
<a name="SSRS.DeployConfig"></a>

Le seguenti procedure consentono di implementare i report su SSRS e configurare le origini dati dei report:

**Topics**
+ [Distribuzione di report su SSRS](#SSRS.Deploy)
+ [Configurazione dell'origine dati del report](#SSRS.ConfigureDataSource)

## Distribuzione di report su SSRS
<a name="SSRS.Deploy"></a>

Dopo avere effettuato l'accesso al portale Web, è possibile distribuire report su di esso. È possibile utilizzare lo strumento di caricamento nel portale Web per caricare report o distribuire direttamente da [SQL Server Data Tools (SSDT)](https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt). Quando si esegue la distribuzione da SSDT, verificare quanto segue:
+ L'utente che ha avviato SSDT ha accesso al portale Web SSRS.
+ Il valore `TargetServerURL` nelle proprietà del progetto SSRS è impostato sull'endpoint HTTPS dell'istanza database RDS con suffisso `ReportServer`, ad esempio:

  ```
  https://myssrsinstance.cg034itsfake.us-east-1.rds.amazonaws.com:8443/ReportServer
  ```

## Configurazione dell'origine dati del report
<a name="SSRS.ConfigureDataSource"></a>

Dopo aver distribuito un report su SSRS, occorre configurare l'origine dati del report. Durante la configurazione dell'origine dati del report, verifica quanto segue:
+ Per le istanze database RDS per SQL Server unite a AWS Directory Service for Microsoft Active Directory, utilizza il nome di dominio completo (FQDN) come nome dell'origine dati della stringa di connessione. Un esempio è `myssrsinstance.corp-ad.example.com`, dove `myssrsinstance` è il nome dell'istanza database ed `corp-ad.example.com` è il nome di dominio completo. 
+ Per le istanze database RDS per SQL Server unite ad Active Directory autogestita, utilizza `.` o `LocalHost` come il nome dell'origine dati della stringa di connessione.

# Utilizzo di SSRS Email per inviare report
<a name="SSRS.Email"></a>

SSRS include l'estensione SSRS Email, che è possibile utilizzare per inviare report agli utenti.

Per configurare SSRS Email, utilizza le impostazioni delle opzioni `SSRS`. Per ulteriori informazioni, consulta [Aggiunta dell'opzione SSRS al gruppo di opzioni](SSRS.Enabling.md#SSRS.Add).

Dopo aver configurato SSRS Email, è possibile sottoscrivere i report sul server di report. Per ulteriori informazioni, consulta la pagina relativa alla [consegna di e-mail in Reporting Services](https://docs.microsoft.com/en-us/sql/reporting-services/subscriptions/e-mail-delivery-in-reporting-services) nella documentazione di Microsoft.

L'integrazione con Gestione dei segreti AWS è necessaria per il funzionamento di SSRS Email su RDS. Per l'integrazione con Secrets Manager, crea un segreto.

**Nota**  
Se modifichi il segreto in un secondo momento, devi anche aggiornare l'opzione `SSRS` nel gruppo di opzioni.

**Per creare un segreto per SSRS Email**

1. Segui la procedura riportata in [Creazione di un segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida per l'utente di Gestione dei segreti AWS*.

   1. In **Select secret type (Seleziona tipo di segreto)**, scegliere **Other type of secrets (Altro tipo di segreti)**.

   1. In **Key/value pairs** (Coppia chiave/valore), immetti quanto segue:
      + **SMTP\$1USERNAME**: immetti un utente con il permesso di inviare posta dal server SMTP.
      + **SMTP\$1PASSWORD** immetti una password per l'utente SMTP.

   1. In **Encryption key** (Chiave crittografia), non utilizzare la AWS KMS key predefinita. Utilizza una chiave esistente o creane una nuova.

      La policy della chiave del KMS deve consentire l'operazione `kms:Decrypt`, ad esempio:

      ```
      {
          "Sid": "Allow use of the key",
          "Effect": "Allow",
          "Principal": {
              "Service": [
                  "rds.amazonaws.com"
              ]
          },
          "Action": [
              "kms:Decrypt"
          ],
          "Resource": "*"
      }
      ```

1. Segui i passaggi contenuti nella pagina [Allegare una policy di autorizzazione a un segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_resource-policies.html) nella *Guida per l'utente di Gestione dei segreti AWS*. La policy delle autorizzazioni fornisce l'operazione `secretsmanager:GetSecretValue` all principale del servizio `rds.amazonaws.com`.

   Si consiglia di utilizzare le condizione `aws:sourceAccount` e `aws:sourceArn` nella policy per evitare problemi di tipo *confused deputy*. Usa il tuo Account AWS for `aws:sourceAccount` e il gruppo di opzioni ARN per. `aws:sourceArn` Per ulteriori informazioni, consulta [Prevenzione del problema "confused deputy" tra servizi](cross-service-confused-deputy-prevention.md).

   Di seguito viene illustrato un esempio di policy di autorizzazione.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [ {
       "Effect" : "Allow",
       "Principal" : {
         "Service" : "rds.amazonaws.com"
       },
       "Action" : "secretsmanager:GetSecretValue",
       "Resource" : "*",
       "Condition" : {
         "StringEquals" : {
           "aws:sourceAccount" : "123456789012"
         },
         "ArnLike" : {
           "aws:sourceArn" : "arn:aws:rds:us-west-2:123456789012:og:ssrs-se-2017"
         }
       }
     } ]
   }
   ```

------

   Per altri esempi, consulta [Esempi di policy sulle autorizzazioni per AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) nella *Guida per l'Gestione dei segreti AWSutente*.

# Revoca delle autorizzazioni a livello di sistema
<a name="SSRS.Access.Revoke"></a>

Il ruolo di sistema `RDS_SSRS_ROLE` non dispone di autorizzazioni sufficienti per eliminare le assegnazioni di ruolo a livello di sistema. Per rimuovere un utente o un gruppo di utenti da `RDS_SSRS_ROLE`, utilizzare la stessa stored procedure utilizzata per concedere il ruolo, ma utilizzare il tipo di attività `SSRS_REVOKE_PORTAL_PERMISSION`.

**Per revocare l'accesso da un utente del dominio per il portale Web**
+ Utilizzare la seguente stored procedure.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSRS_REVOKE_PORTAL_PERMISSION',
  @ssrs_group_or_username=N'AD_domain\user';
  ```

In questo modo l'utente viene eliminato dal ruolo di sistema `RDS_SSRS_ROLE`. Inoltre, l'utente viene eliminato dal ruolo a livello di elemento `Content Manager`, se uno esiste per l'utente.

# Monitoraggio dello stato di un'attività
<a name="SSRS.Monitor"></a>

Per tenere traccia dello stato dell'attività di concessione o revoca, chiamare la funzione `rds_fn_task_status` che accetta due parametri. Il primo parametro deve essere sempre `NULL` perché non si applica a SSRS. Il secondo parametro accetta un ID attività. 

Per visualizzare l'elenco di tutte le attività, imposta il primo parametro su `NULL` e il secondo parametro su `0`, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

Per ottenere un'attività specifica, imposta il primo parametro su `NULL` e il secondo parametro sull'ID attività, come indicato nell'esempio seguente.

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

La funzione `rds_fn_task_status` restituisce le seguenti informazioni.


| Parametro di output | Descrizione | 
| --- | --- | 
| `task_id` | L'ID dell'attività. | 
| `task_type` | Per SSRS, le attività possono avere i seguenti tipi di attività: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `database_name` | Non applicabile alle attività SSRS. | 
| `% complete` | L'avanzamento dell'attività espresso come percentuale. | 
| `duration (mins)` | La quantità di tempo dedicato all'attività, in minuti. | 
| `lifecycle` |  Lo stato dell'attività. I possibili stati sono i seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/SSRS.Monitor.html)  | 
| `task_info` | Ulteriori informazioni sull'attività. Se si verifica un errore durante l'elaborazione, questa colonna contiene informazioni sull'errore.  | 
| `last_updated` | La data e l'ora dell'ultimo aggiornamento dello stato dell'attività.  | 
| `created_at` | La data e l'ora di creazione dell'attività. | 
| `S3_object_arn` |  Non applicabile alle attività SSRS.  | 
| `overwrite_S3_backup_file` | Non applicabile alle attività SSRS. | 
| `KMS_master_key_arn` |  Non applicabile alle attività SSRS.  | 
| `filepath` |  Non applicabile alle attività SSRS.  | 
| `overwrite_file` |  Non applicabile alle attività SSRS.  | 
| `task_metadata` | Metadati associati all'attività SSRS. | 

# Disabilitazione ed eliminazione dei database SSRS
<a name="SSRS.DisableDelete"></a>

Le seguenti procedure consentono di disabilitare SSRS ed eliminare i database SSRS:

**Topics**
+ [Disattivazione di SSRS](#SSRS.Disable)
+ [Eliminazione dei database SSRS](#SSRS.Drop)

## Disattivazione di SSRS
<a name="SSRS.Disable"></a>

Per disattivare SSRS, rimuovi l'opzione `SSRS` dal relativo gruppo di opzioni. La rimozione dell'opzione non elimina i database SSRS. Per ulteriori informazioni, consulta [Eliminazione dei database SSRS](#SSRS.Drop).

È possibile riattivare SSRS aggiungendo nuovamente l'opzione `SSRS`. Se sono stati eliminati anche i database SSRS, la nuova aggiunta dell'opzione sulla stessa istanza database crea nuovi database del server di report.

### Console
<a name="SSRS.Disable.Console"></a>

**Per rimuovere l'opzione SSRS dal suo gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l'opzione `SSRS` (`ssrs-se-2017` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. In **Opzioni di eliminazione**, scegliere **SSRS** per **Opzioni da eliminare**.

1. In **Apply immediately (Applica immediatamente)**, scegliere **Yes (Sì)** per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegliere **Delete (Elimina)**.

### CLI
<a name="SSRS.Disable.CLI"></a>

**Per rimuovere l'opzione SSRS dal suo gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssrs-se-2017 \
      --options SSRS \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssrs-se-2017 ^
      --options SSRS ^
      --apply-immediately
  ```

## Eliminazione dei database SSRS
<a name="SSRS.Drop"></a>

La rimozione dell'opzione `SSRS` non elimina i database del server di report. Per eliminarli, utilizzare la stored procedure seguente. 

Per eliminare i database del server di report, assicurarsi di rimuovere prima l'opzione `SSRS`.

**Per eliminare i database SSRS**
+ Utilizzare la seguente stored procedure.

  ```
  exec msdb.dbo.rds_drop_ssrs_databases
  ```

# Supporto per Microsoft Distributed Transaction Coordinator in RDS per SQL Server
<a name="Appendix.SQLServer.Options.MSDTC"></a>

Una *transazione distribuita* è una transazione di database in cui sono coinvolti due o più host di rete. RDS per SQL Server supporta transazioni distribuite tra host, in cui un singolo host può essere uno dei seguenti:
+ Istanza database RDS per SQL Server
+ Host SQL Server locale
+ Host Amazon EC2 con SQL Server installato
+ Qualsiasi altro host EC2 o istanza database RDS con un motore del database che supporta le transazioni distribuite

In RDS, a partire da SQL Server 2012 (versione 11.00.5058.0.v1 e successive), tutte le edizioni di RDS per SQL Server supportano le transazioni distribuite. Il supporto viene fornito utilizzando Microsoft Distributed Transaction Coordinator (MSDTC). Per informazioni dettagliate su MSDTC, consulta [Distributed Transaction Coordinator](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms684146(v=vs.85)) nella documentazione Microsoft.

**Contents**
+ [Limitazioni](#Appendix.SQLServer.Options.MSDTC.Limitations)
+ [Abilitazione di MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md)
  + [Creazione del gruppo di opzioni per MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.OptionGroup)
  + [Aggiunta dell'opzione MSDTC al gruppo di opzioni](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Add)
  + [Creazione del gruppo di parametri per MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.CreateParamGroup)
  + [Modifica del parametro per MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC)
  + [Associazione del gruppo di opzioni e del gruppo di parametri all'istanza database](Appendix.SQLServer.Options.MSDTC.Enabling.md#MSDTC.Apply)
  + [Modifica dell'opzione MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#Appendix.SQLServer.Options.MSDTC.Modify)
+ [Utilizzo di transazioni](#Appendix.SQLServer.Options.MSDTC.Using)
  + [Utilizzo di transazioni distribuite](#Appendix.SQLServer.Options.MSDTC.UsingXA)
  + [Utilizzo di transazioni XA](#MSDTC.XA)
  + [Utilizzo del tracciamento delle transazioni](#MSDTC.Tracing)
+ [Disabilitazione di MSDTC](Appendix.SQLServer.Options.MSDTC.Disable.md)
+ [Risoluzione dei problemi relativi a MSDTC per RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.Troubleshooting.md)

## Limitazioni
<a name="Appendix.SQLServer.Options.MSDTC.Limitations"></a>

Le seguenti limitazioni si applicano all'utilizzo di MSDTC su RDS per SQL Server:
+ MSDTC non è supportato nelle istanze che utilizzano il mirroring del database SQL Server. Per ulteriori informazioni, consulta [Transactions - availability groups and database mirroring](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-ver15#non-support-for-distributed-transactions).
+ Il parametro `in-doubt xact resolution` deve essere impostato su 1 o 2. Per ulteriori informazioni, consulta [Modifica del parametro per MSDTC](Appendix.SQLServer.Options.MSDTC.Enabling.md#ModifyParam.MSDTC).
+ MSDTC richiede che tutti i nomi host che partecipano alle transazioni distribuite siano risolvibili utilizzando i nomi host. RDS mantiene automaticamente questa funzionalità per le istanze aggiunte al dominio. Tuttavia, per le istanze standalone assicurarsi di configurare manualmente il server DNS.
+ le transazioni XA di Java Database Connectivity (JDBC) sono supportate per SQL Server 2017 versione 14.00.3223.3 e successive e SQL Server 2019.
+ Le transazioni distribuite che dipendono dalle librerie di collegamento dinamico del client (DLLs) sulle istanze RDS non sono supportate.
+ L'utilizzo di librerie a collegamento dinamico XA personalizzate non è supportato.

# Abilitazione di MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Enabling"></a>

Utilizzare il seguente processo per abilitare MSDTC per l'istanza database:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `MSDTC` al gruppo di opzioni.

1. Creare un nuovo gruppo di parametri o scegliere un gruppo di parametri esistente.

1. Modificare il gruppo di parametri per impostare il parametro `in-doubt xact resolution` su 1 o 2.

1. Associare il gruppo di opzioni e il gruppo di parametri all'istanza database.

## Creazione del gruppo di opzioni per MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.OptionGroup"></a>

Utilizzare la Console di gestione AWS o AWS CLI per creare un gruppo di opzioni che corrisponde al motore SQL Server e alla versione dell'istanza database.

**Nota**  
È inoltre possibile utilizzare un gruppo di opzioni esistente se si tratta del motore e della versione di SQL Server corretti.

### Console
<a name="OptionGroup.MSDTC.Console"></a>

La seguente procedura crea un gruppo di opzioni per SQL Server Standard Edition 2016.

**Per creare il gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, immettere un nome per il gruppo di opzioni che sia univoco all'interno dell'account AWS, ad esempio **msdtc-se-2016**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **MSDTC option group for SQL Server SE 2016**. La descrizione viene usata per la visualizzazione. 

   1. Per **Engine (Motore)**, scegliere **sqlserver-se**.

   1. Per **Versione del motore principale**, scegliere **13.00**.

1. Scegli **Create** (Crea).

### CLI
<a name="OptionGroup.MSDTC.CLI"></a>

Nell'esempio seguente viene creato un gruppo di opzioni per SQL Server Standard Edition 2016.

**Per creare il gruppo di opzioni**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-option-group \
      --option-group-name msdtc-se-2016 \
      --engine-name sqlserver-se \
      --major-engine-version 13.00 \
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

  Per Windows:

  ```
  aws rds create-option-group ^
      --option-group-name msdtc-se-2016 ^
      --engine-name sqlserver-se ^
      --major-engine-version 13.00 ^
      --option-group-description "MSDTC option group for SQL Server SE 2016"
  ```

## Aggiunta dell'opzione MSDTC al gruppo di opzioni
<a name="Appendix.SQLServer.Options.MSDTC.Add"></a>

Utilizzare la Console di gestione AWS o l'AWS CLI per aggiungere l'opzione `MSDTC` al gruppo di opzioni.

Sono richieste le seguenti impostazioni delle opzioni:
+ **Porta** – La porta utilizzata per accedere a MSDTC. I valori consentiti sono compresi tra 1150 e 49151, ad eccezione di 1234, 1434, 3260, 3343, 3389 e 47001. Il valore predefinito è 5000.

  Assicurarsi che la porta che si desidera utilizzare sia abilitata nelle regole del firewall. Assicurarsi, inoltre, che, se necessario, questa porta sia abilitata nelle regole in entrata e in uscita per il gruppo di sicurezza associato all'istanza database. Per ulteriori informazioni, consulta [Impossibile connettersi all'istanza database di Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 
+ **Security groups** (Gruppi di sicurezza): le appartenenze a gruppi di sicurezza VPC per l'istanza database RDS.
+ **Tipo di autenticazione** – La modalità di autenticazione tra gli host. Sono supportati i seguenti tipi di autenticazione:
  + Reciproco – Le istanze RDS vengono autenticate reciprocamente l'una con l'altra utilizzando l'autenticazione integrata. Se questa opzione è selezionata, tutte le istanze associate a questo gruppo di opzioni devono essere aggiunte al dominio.
  + Nessuna – Nessuna autenticazione viene eseguita tra gli host. Non è consigliabile utilizzare questa modalità in ambienti di produzione.
+ **Dimensione del log delle transazioni** – La dimensione del log delle transazioni MSDTC. I valori consentiti sono compresi tra 4 e 1024 MB. La dimensione predefinita è 4 MB.

Le seguenti impostazioni delle opzioni sono facoltative:
+ **Abilitazione delle connessioni in entrata** – Indica se consentire connessioni MSDTC in entrata alle istanze associate a questo gruppo di opzioni.
+ **Abilitazione delle connessioni in uscita** – Indica se consentire connessioni MSDTC in uscita dalle istanze associate a questo gruppo di opzioni.
+ **Abilita XA** – Indica se consentire transazioni XA. Per ulteriori informazioni sul protocollo XA, consulta [XA Specification](https://publications.opengroup.org/c193).
+ **Abilita LU SNA** – Indica se consentire l'utilizzo del protocollo LU SNA per le transazioni distribuite. Per ulteriori informazioni sul supporto del protocollo LU SNA, consulta [Managing IBM CICS LU 6.2 Transactions](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms685136(v=vs.85)) nella documentazione Microsoft.

### Console
<a name="Options.MSDTC.Add.Console"></a>

**Per aggiungere l'opzione MSDTC**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni appena creato.

1. Scegliere **Add option (Aggiungi opzione)**.

1. In **Dettagli opzione**, scegliere **MSDTC** per **Nome opzione**.

1. In **Impostazioni delle opzioni**:

   1. Per **Porta**, immettere il numero di porta per accedere a MSDTC. L'impostazione predefinita è **5000**.

   1. Per **Security groups (Gruppi di sicurezza)**, scegliere il gruppo di sicurezza VPC da associare all'opzione.

   1. Per **Tipo di autenticazione**, scegliere **Reciproco** o **Nessuna**.

   1. Per **Dimensioni del log delle transazioni**, immettere un valore compreso tra 4 e 1024. Il valore di default è **4**.

1. In **Configurazione aggiuntiva**, eseguire le operazioni seguenti:

   1. Per **Connessioni**, se necessario, scegliere **Abilitazione delle connessioni in entrata** e **Abilitazione delle connessioni in uscita**.

   1. Per **Protocolli consentiti**, se necessario, scegliere **Abilita XA** e **Abilita LU SNA**.

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

   Per aggiungere questa opzione, non è richiesto alcun riavvio.

### CLI
<a name="Options.MSDTC.Add.CLI"></a>

**Per aggiungere l'opzione MSDTC**

1. Creare un file JSON, ad esempio `msdtc-option.json`, con i seguenti parametri obbligatori.

   ```
   {
   "OptionGroupName":"msdtc-se-2016",
   "OptionsToInclude": [
   	{
   	"OptionName":"MSDTC",
   	"Port":5000,
   	"VpcSecurityGroupMemberships":["sg-0abcdef123"],
   	"OptionSettings":[{"Name":"AUTHENTICATION","Value":"MUTUAL"},{"Name":"TRANSACTION_LOG_SIZE","Value":"4"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. Aggiungere l'opzione `MSDTC` al gruppo di opzioni.  
**Example**  

   Per Linux, macOS o Unix:

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://msdtc-option.json \
       --apply-immediately
   ```

   Per Windows:

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://msdtc-option.json ^
       --apply-immediately
   ```

   Non è richiesto alcun riavvio.

## Creazione del gruppo di parametri per MSDTC
<a name="MSDTC.CreateParamGroup"></a>

Creare o modificare un gruppo di parametri per il parametro `in-doubt xact resolution` corrispondente all'edizione di SQL Server e alla versione dell'istanza database.

### Console
<a name="CreateParamGroup.MSDTC.Console"></a>

Nell'esempio seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**.

1. Scegliere **Create parameter group (Crea gruppo di parametri)**.

1. Nel riquadro **Create parameter group (Crea gruppi di parametri)**, procedi nel modo seguente:

   1. Per **Famiglia del gruppo di parametri**, scegliere **sqlserver-se-13.0**.

   1. Per **Group name (Nome gruppo)**, immettere un identificatore per il gruppo di parametri, ad esempio **msdtc-sqlserver-se-13**.

   1. Per **Description (Descrizione)**, immettere **in-doubt xact resolution**.

1. Scegli **Create** (Crea).

### CLI
<a name="CreateParamGroup.MSDTC.CLI"></a>

Nell'esempio seguente viene creato un gruppo di parametri per SQL Server Standard Edition 2016.

**Per creare il gruppo di parametri**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --db-parameter-group-family "sqlserver-se-13.0" \
      --description "in-doubt xact resolution"
  ```

  Per Windows:

  ```
  aws rds create-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --db-parameter-group-family "sqlserver-se-13.0" ^
      --description "in-doubt xact resolution"
  ```

## Modifica del parametro per MSDTC
<a name="ModifyParam.MSDTC"></a>

Modifica il parametro `in-doubt xact resolution` nel gruppo di parametri che corrisponde all'edizione di SQL Server e alla versione dell'istanza database.

Per MSDTC, impostare il parametro `in-doubt xact resolution` su una delle seguenti opzioni:
+ `1` - `Presume commit`. Si ipotizza che sia stato eseguito il commit di tutte le transazioni dubbie MSDTC.
+ `2` - `Presume abort`. Si ipotizza che tutte le transazioni dubbie MSDTC siano state interrotte.

Per ulteriori informazioni, consulta [in-doubt xact resolution Server Configuration Option](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/in-doubt-xact-resolution-server-configuration-option) nella documentazione Microsoft.

### Console
<a name="ModifyParam.MSDTC.Console"></a>

Nell'esempio seguente il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione, scegli **Parameter groups** (Gruppi di parametri).

1. Scegliere il gruppo di parametri, ad esempio **msdtc-sqlserver-se-13**.

1. In **Parameters (Parametri)**, filtrare l'elenco dei parametri per **xact**.

1. Scegliere **in-doubt xact resolution**.

1. Scegliere **Edit parameters (Modifica parametri)**.

1. Immetti **1** o **2**.

1. Seleziona **Save changes** (Salva modifiche).

### CLI
<a name="ModifyParam.MSDTC.CLI"></a>

Nell'esempio seguente il gruppo di parametri creato per SQL Server Standard Edition 2016 viene modificato.

**Per modificare il gruppo di parametri**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-parameter-group \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

  Per Windows:

  ```
  aws rds modify-db-parameter-group ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --parameters "ParameterName='in-doubt xact resolution',ParameterValue=1,ApplyMethod=immediate"
  ```

## Associazione del gruppo di opzioni e del gruppo di parametri all'istanza database
<a name="MSDTC.Apply"></a>

Puoi utilizzare la Console di gestione AWS o AWS CLI per associare il gruppo di opzioni MSDTC e il gruppo di parametri all'istanza database.

### Console
<a name="MSDTC.Apply.Console"></a>

Puoi associare il gruppo di opzioni MSDTC e il gruppo di parametri a un'istanza database nuova o esistente.
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).
**Nota**  
Se utilizzi un'istanza database esistente aggiunta la dominio, ad essa devono già essere associati un dominio Active Directory e un ruolo AWS Identity and Access Management (IAM). Se crei una nuova istanza aggiunta la dominio, specifica un dominio Active Directory e un ruolo IAM esistenti. Per ulteriori informazioni, consulta [Utilizzo di Active Directory AWS gestita con RDS per SQL Server](USER_SQLServerWinAuth.md).

### CLI
<a name="MSDTC.Apply.CLI"></a>

Puoi associare il gruppo di opzioni MSDTC e il gruppo di parametri a un'istanza database nuova o esistente.

**Nota**  
Se utilizzi un'istanza database aggiunta la dominio esistente, ad essa devono già essere associati un dominio Active Directory e un ruolo IAM. Se crei una nuova istanza aggiunta la dominio, specifica un dominio Active Directory e un ruolo IAM esistenti. Per ulteriori informazioni, consulta [Utilizzo di Active Directory AWS gestita con RDS per SQL Server](USER_SQLServerWinAuth.md).

**Per creare un'istanza database con il gruppo di opzioni MSDTC e il gruppo di parametri**
+ Specificare lo stesso tipo di motore del database e la versione principale utilizzati durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mydbinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 13.00.5426.0.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mydbinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 13.00.5426.0.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13
  ```

**Per modificare un'istanza database e associare il gruppo di opzioni MSDTC e il gruppo di parametri**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mydbinstance \
      --option-group-name msdtc-se-2016 \
      --db-parameter-group-name msdtc-sqlserver-se-13 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mydbinstance ^
      --option-group-name msdtc-se-2016 ^
      --db-parameter-group-name msdtc-sqlserver-se-13 ^
      --apply-immediately
  ```

## Modifica dell'opzione MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Modify"></a>

Dopo aver abilitato l'opzione `MSDTC`, puoi modificarne le impostazioni. Per informazioni su come modificare le impostazioni dell'opzione, consulta [Modifica di un'impostazione di un'opzione](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption).

**Nota**  
Alcune modifiche alle impostazioni delle opzioni MSDTC richiedono il riavvio del servizio MSDTC. Questo requisito può influenzare l'esecuzione di transazioni distribuite.

## Utilizzo di transazioni
<a name="Appendix.SQLServer.Options.MSDTC.Using"></a>

### Utilizzo di transazioni distribuite
<a name="Appendix.SQLServer.Options.MSDTC.UsingXA"></a>

In Amazon RDS for SQL Server, le transazioni distribuite vengono eseguite allo stesso modo delle transazioni distribuite eseguite in locale:
+ Utilizzando le transazioni promuovibili `System.Transactions` di .NET Framework, che ottimizza le transazioni distribuite posticipandone la creazione fino a quando non sono necessarie.

  In questo caso, la promozione è automatica e non richiede alcun intervento. Se all'interno della transazione è presente un solo gestore risorse, non viene eseguita alcuna promozione. Per ulteriori informazioni sugli ambiti di transazioni implicite, consulta [Implementing an Implicit Transaction using Transaction Scope](https://docs.microsoft.com/en-us/dotnet/framework/data/transactions/implementing-an-implicit-transaction-using-transaction-scope) nella documentazione Microsoft.

  Le transazioni promuovibili sono supportate con queste implementazioni .NET: 
  + A partire da ADO.NET 2.0, `System.Data.SqlClient` supporta le transazioni promuovibili con SQL Server. Per ulteriori informazioni, consulta [System.Transactions Integration with SQL Server](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/system-transactions-integration-with-sql-server) nella documentazione Microsoft.
  + ODP.NET supporta `System.Transactions`. Viene creata una transazione locale per la prima connessione nell'ambito `TransactionsScope` aperta a Oracle Database 11g release 1 (versione 11.1) e successive. Quando viene aperta una seconda connessione, questa transazione viene automaticamente promossa a una transazione distribuita. Per ulteriori informazioni sul supporto di transazioni distribuite in ODP.NET, consulta [Microsoft Distributed Transaction Coordinator Integration](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/18.3/ntmts/using-mts-with-oracledb.html) nella documentazione Microsoft.
+ Utilizzando l'istruzione `BEGIN DISTRIBUTED TRANSACTION`. Per ulteriori informazioni, consulta [BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql) nella documentazione Microsoft.

### Utilizzo di transazioni XA
<a name="MSDTC.XA"></a>

A partire da RDS per SQL Server 2017 versione 14.00.3223.3, è possibile controllare transazioni distribuite utilizzando JDBC. Quando si imposta l'opzione `Enable XA` su `true` nell'opzione `MSDTC`, RDS abilita automaticamente le transazioni JDBC e concede il ruolo `SqlJDBCXAUser` all'utente `guest`. Ciò consente di eseguire transazioni distribuite tramite JDBC. Per ulteriori informazioni, tra cui un codice di esempio, consulta [Comprendere le transazioni XA](https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions) nella documentazione di Microsoft.

### Utilizzo del tracciamento delle transazioni
<a name="MSDTC.Tracing"></a>

RDS supporta il controllo delle tracce delle transazioni MSDTC e il loro download dall'istanza database RDS per la risoluzione dei problemi. Puoi controllare le sessioni di tracciamento delle transazioni eseguendo la seguente stored procedure di RDS.

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'trace_action',
[@traceall='0|1'],
[@traceaborted='0|1'],
[@tracelong='0|1'];
```

Il parametro seguente è obbligatorio:
+ `trace_action` – L'operazione di tracciamento. Può essere `START`, `STOP` o `STATUS`.

I parametri seguenti sono facoltativi:
+ `@traceall` – Impostare su 1 per tracciare tutte le transazioni distribuite. Il valore predefinito è 0.
+ `@traceaborted` – Impostare su 1 per tracciare le transazioni distribuite annullate. Il valore predefinito è 0.
+ `@tracelong` – Impostare su 1 per tracciare le transazioni distribuite di lunga durata. Il valore predefinito è 0.

**Example dell'operazione di tracciamento START**  
Per avviare una nuova sessione di tracciamento delle transazioni, eseguire l'istruzione di esempio seguente.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'START',
@traceall='0',
@traceaborted='1',
@tracelong='1';
```
Può essere attiva una sola sessione di tracciamento delle transazioni alla volta. Se viene emesso un nuovo comando `START` di sessione di tracciamento mentre una sessione di tracciamento è attiva, viene restituito un errore e la sessione di tracciamento attiva rimane invariata.

**Example di operazione di tracciamento STOP**  
Per interrompere una sessione di tracciamento delle transazioni, eseguire l'istruzione seguente.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STOP'
```
Questa istruzione interrompe la sessione di tracciamento delle transazioni attiva e salva i dati di tracciamento delle transazioni nella directory di log nell'istanza database RDS. La prima riga dell'output contiene il risultato complessivo dell'esecuzione e le righe seguenti indicano i dettagli dell'operazione.  
Di seguito è riportato un esempio di interruzione della sessione di tracciamento.  

```
OK: Trace session has been successfully stopped.
Setting log file to: D:\rdsdbdata\MSDTC\Trace\dtctrace.log
Examining D:\rdsdbdata\MSDTC\Trace\msdtctr.mof for message formats,  8 found.
Searching for TMF files on path: (null)
Logfile D:\rdsdbdata\MSDTC\Trace\dtctrace.log:
 OS version    10.0.14393  (Currently running on 6.2.9200)
 Start Time    <timestamp>
 End Time      <timestamp>
 Timezone is   @tzres.dll,-932 (Bias is 0mins)
 BufferSize            16384 B
 Maximum File Size     10 MB
 Buffers  Written      Not set (Logger may not have been stopped).
 Logger Mode Settings (11000002) ( circular paged
 ProcessorCount         1 
Processing completed   Buffers: 1, Events: 3, EventsLost: 0 :: Format Errors: 0, Unknowns: 3
Event traces dumped to d:\rdsdbdata\Log\msdtc_<timestamp>.log
```
Puoi utilizzare le informazioni dettagliate per eseguire query sul nome del file di log generato. Per ulteriori informazioni sul download dei file di log dall'istanza database RDS, consulta [Monitoraggio dei file di log di Amazon RDS](USER_LogAccess.md).  
I log delle sessioni di traccia rimangono sull'istanza per 35 giorni. Tutti i log delle sessioni di traccia più vecchi vengono eliminati automaticamente.

**Example dell'operazione di tracciamento STATUS**  
Per tracciare lo stato di una sessione di tracciamento delle transazioni, eseguire l'istruzione seguente.  

```
exec msdb.dbo.rds_msdtc_transaction_tracing 'STATUS'
```
Questa istruzione restituisce quanto segue come righe separate del set di risultati.  

```
OK
SessionStatus: <Started|Stopped>
TraceAll: <True|False>
TraceAborted: <True|False>
TraceLongLived: <True|False>
```
La prima riga indica il risultato complessivo dell'operazione: `OK` o `ERROR` con i dettagli, se applicabile. Le righe successive indicano i dettagli sullo stato della sessione di tracciamento:   
+ `SessionStatus`Il valore di può essere uno dei seguenti:
  + `Started` se una sessione di tracciamento è in esecuzione.
  + `Stopped` se nessuna sessione di tracciamento è in esecuzione.
+ I flag della sessione di tracciamento possono essere `True` o `False` a seconda di come sono stati impostati nel comando `START`.

# Disabilitazione di MSDTC
<a name="Appendix.SQLServer.Options.MSDTC.Disable"></a>

Per disabilitare MSDTC, rimuovere l'opzione `MSDTC` dal relativo gruppo di opzioni.

## Console
<a name="Options.MSDTC.Disable.Console"></a>

**Per rimuovere l'opzione MSDTC dal suo gruppo di opzioni**

1. Accedi alla Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel riquadro di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l'opzione `MSDTC` (`msdtc-se-2016` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. In **Opzioni di eliminazione**, scegliere **MSDTC** per **Opzioni da eliminare**.

1. In **Apply immediately (Applica immediatamente)**, scegliere **Yes (Sì)** per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegliere **Delete** (Elimina).

## CLI
<a name="Options.MSDTC.Disable.CLI"></a>

**Per rimuovere l'opzione MSDTC dal suo gruppo di opzioni**
+ Utilizzare uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name msdtc-se-2016 \
      --options MSDTC \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name msdtc-se-2016 ^
      --options MSDTC ^
      --apply-immediately
  ```

# Risoluzione dei problemi relativi a MSDTC per RDS for SQL Server
<a name="Appendix.SQLServer.Options.MSDTC.Troubleshooting"></a>

In alcuni casi, potrebbero verificarsi problemi durante il tentativo di stabilire una connessione tra MSDTC in esecuzione su un computer client e il servizio MSDTC in esecuzione in un'istanza database RDS for SQL Server. In tal caso, assicurati che siano soddisfatte le seguenti condizioni:
+ Le regole in entrata per il gruppo di sicurezza associato all'istanza database sono configurate correttamente. Per ulteriori informazioni, consulta [Impossibile connettersi all'istanza database di Amazon RDS](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting).
+ Il computer client è configurato correttamente.
+ Le regole del firewall MSDTC sul computer client sono abilitate.

**Per configurare il computer client**

1. Aprire **Servizi di componenti**.

   Oppure, in **Server Manager**, scegliere **Strumenti** e quindi **Servizi di componenti**.

1. Espandere **Servizi di componenti**, espandere **Computer**, espandere **Risorse del computer** e quindi espandere **Distributed Transaction Coordinator**.

1. Aprire il menu contestuale (pulsante destro del mouse) per **DTC locale** e scegliere **Proprietà**.

1. Scegliere la scheda **Sicurezza** .

1. Scegliere tutte le opzioni seguenti:
   + **Accesso DTC di rete**
   + **Consenti in entrata**
   + **Consenti in uscita**

1. Assicurarsi di scegliere la modalità di autenticazione corretta:
   + **Autenticazione reciproca obbligatoria** – Il computer client viene aggiunto allo stesso dominio di altri nodi che partecipano alla transazione distribuita oppure esiste una relazione di attendibilità configurata tra domini.
   + **Nessuna autenticazione richiesta** – Tutti gli altri casi.

1. Scegliere **OK** per salvare le modifiche.

1. Se viene richiesto di riavviare il servizio, scegliere **Sì**.

**Per abilitare le regole firewall MSDTC**

1. Aprire Windows Firewall, quindi scegliere **Impostazioni avanzate**.

   Oppure, in **Server Manager**, scegliere **Strumenti**, quindi selezionare **Windows Firewall con sicurezza avanzata**.
**Nota**  
A seconda del sistema operativo in uso, Windows Firewall potrebbe essere chiamato Windows Defender Firewall.

1. Scegliere **Regole in entrata** nel riquadro sinistro.

1. Abilitare le regole del firewall riportate di seguito, se non sono già abilitate:
   + **Distributed Transaction Coordinator (RPC)**
   + **Distributed Transaction Coordinator (RPC)-EPMAP**
   + **Distributed Transaction Coordinator (TCP-In)**

1. Chiudere Windows Firewall.

# Governatore delle risorse di Microsoft SQL Server con RDS per SQL Server
<a name="Appendix.SQLServer.Options.ResourceGovernor"></a>

Resource governor è una funzionalità di SQL Server Enterprise Edition che ti offre un controllo preciso sulle risorse delle tue istanze. Consente di impostare limiti specifici sul modo in cui i carichi di lavoro utilizzano CPU, memoria e I/O risorse fisiche. Con Resource Governor, puoi:
+ Previeni la monopolizzazione delle risorse in ambienti multi-tenant gestendo il modo in cui carichi di lavoro diversi condividono le risorse delle istanze
+ Offri prestazioni prevedibili impostando limiti e priorità di risorse specifici per diversi utenti e applicazioni

È possibile abilitare Resource Governor su un'istanza DB RDS for SQL Server esistente o nuova.

Resource Governor utilizza tre concetti fondamentali:
+ **Pool di risorse**: un contenitore che gestisce le risorse fisiche dell'istanza (CPU, memoria e I/O). Ottieni due pool integrati (interni e predefiniti) e puoi creare pool personalizzati aggiuntivi.
+ **Gruppo di carichi di** lavoro: un contenitore per sessioni di database con caratteristiche simili. Ogni gruppo di carichi di lavoro appartiene a un pool di risorse. Ottieni due gruppi di carichi di lavoro integrati (interni e predefiniti) e puoi creare gruppi di carichi di lavoro aggiuntivi personalizzati.
+ **Classificazione**: il processo che determina quale gruppo di carichi di lavoro gestisce le sessioni in entrata in base al nome utente, al nome dell'applicazione, al nome del database o al nome host.

Per ulteriori dettagli sulla funzionalità del gestore delle risorse in SQL Server, vedere [Resource Governor](https://learn.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor?view=sql-server-ver16) nella documentazione Microsoft.

**Contents**
+ [Versioni e regioni supportate](#ResourceGovernor.SupportedVersions)
+ [Limitazioni e consigli](#ResourceGovernor.Limitations)
+ [Abilitazione del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server](ResourceGovernor.Enabling.md)
  + [Creazione del gruppo di opzioni per `RESOURCE_GOVERNOR`](ResourceGovernor.Enabling.md#ResourceGovernor.OptionGroup)
  + [Aggiunta dell'opzione `RESOURCE_GOVERNOR` al gruppo di opzioni](ResourceGovernor.Enabling.md#ResourceGovernor.Add)
  + [Associazione del gruppo di opzioni all'istanza database](ResourceGovernor.Enabling.md#ResourceGovernor.Apply)
+ [Utilizzo del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server](ResourceGovernor.Using.md)
  + [Gestisci il pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.ManageResourcePool)
    + [Crea un pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.CreateResourcePool)
    + [Modifica il pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.AlterResourcePool)
    + [Elimina il pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.DropResourcePool)
  + [Gestisci i gruppi di carichi di lavoro](ResourceGovernor.Using.md#ResourceGovernor.ManageWorkloadGroups)
    + [Crea un gruppo di carichi di lavoro](ResourceGovernor.Using.md#ResourceGovernor.CreateWorkloadGroup)
    + [Modifica il gruppo di carichi di lavoro](ResourceGovernor.Using.md#ResourceGovernor.AlterWorkloadGroup)
    + [Eliminare il gruppo di carichi di lavoro](ResourceGovernor.Using.md#ResourceGovernor.DropWorkloadGroup)
  + [Crea e registra una funzione di classificazione](ResourceGovernor.Using.md#ResourceGovernor.ClassifierFunction)
  + [Funzione Drop Classifier](ResourceGovernor.Using.md#ResourceGovernor.DropClassifier)
  + [Funzione di classificazione per annullare la registrazione](ResourceGovernor.Using.md#ResourceGovernor.DeregisterClassifier)
  + [Reimposta le statistiche](ResourceGovernor.Using.md#ResourceGovernor.ResetStats)
  + [modifiche alla configurazione del Resource Governor](ResourceGovernor.Using.md#ResourceGovernor.ConfigChanges)
  + [Associare TempDB a un pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.BindTempDB)
  + [Scollegare TempDB da un pool di risorse](ResourceGovernor.Using.md#ResourceGovernor.UnbindTempDB)
  + [Cleanup Resource Governor](ResourceGovernor.Using.md#ResourceGovernor.Cleanup)
+ [Considerazioni sull’implementazione Multi-AZ](#ResourceGovernor.Considerations)
+ [Considerazioni sulle repliche di lettura](#ResourceGovernor.ReadReplica)
+ [Monitora il regolatore delle risorse di Microsoft SQL Server utilizzando le visualizzazioni di sistema per l'istanza di RDS per SQL Server](ResourceGovernor.Monitoring.md)
  + [Statistiche di runtime del pool di risorse](ResourceGovernor.Monitoring.md#ResourceGovernor.ResourcePoolStats)
+ [Disattivazione del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server](ResourceGovernor.Disabling.md)
+ [Procedure consigliate per la configurazione del gestore delle risorse su RDS per SQL Server](ResourceGovernor.BestPractices.md)

## Versioni e regioni supportate
<a name="ResourceGovernor.SupportedVersions"></a>

Amazon RDS supporta Resource Governor per le seguenti versioni ed edizioni di SQL Server in tutte le aree in Regioni AWS cui è disponibile RDS per SQL Server:
+ Edizioni SQL Server 2022 Developer ed Enterprise
+ SQL Server 2019 Enterprise Edition
+ SQL Server 2017 Enterprise Edition
+ SQL Server 2016 Enterprise Edition

## Limitazioni e consigli
<a name="ResourceGovernor.Limitations"></a>

Le seguenti limitazioni e raccomandazioni si applicano al gestore delle risorse:
+ Restrizioni relative all'edizione e al servizio:
  + Disponibile solo in SQL Server Enterprise Edition.
  + La gestione delle risorse è limitata al motore di database di SQL Server. Il regolatore delle risorse per Analysis Services, Integration Services e Reporting Services non è supportato.
+ Restrizioni di configurazione:
  + È necessario utilizzare le stored procedure di Amazon RDS per tutte le configurazioni.
  + Le istruzioni DDL native e le configurazioni della GUI di SQL Server Management Studio non sono supportate.
+ Parametri del pool di risorse:
  + I nomi dei pool che iniziano con `rds_` non sono supportati.
  + Le modifiche interne e predefinite al pool di risorse non sono consentite.
  + Per i pool di risorse definiti dall'utente, i seguenti parametri del pool di risorse non sono supportati:
    + `MIN_MEMORY_PERCENT`
    + `MIN_CPU_PERCENT`
    + `MIN_IOPS_PER_VOLUME`
    + `AFFINITY`
+ Parametri del gruppo di carico di lavoro:
  + I nomi dei gruppi di carico di lavoro che iniziano con `rds_` non sono supportati.
  + La modifica del gruppo di carico di lavoro interno non è consentita.
  + Per il gruppo di carichi di lavoro predefinito:
    + È possibile modificare solo il `REQUEST_MAX_MEMORY_GRANT_PERCENT` parametro.
    + Per il gruppo di carichi di lavoro predefinito, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve essere compreso tra 1 e 70.
    + Tutti gli altri parametri sono bloccati e non possono essere modificati.
  + I gruppi di carichi di lavoro definiti dall'utente consentono la modifica di tutti i parametri.
+ Limitazioni della funzione di classificazione:
  + La funzione di classificazione indirizza le connessioni a gruppi di carichi di lavoro personalizzati in base a criteri specifici (nome utente, database, host o nome dell'applicazione).
  + Supporta fino a due gruppi di carichi di lavoro definiti dall'utente con le rispettive condizioni di routing.
  + Combina il criterio con `AND` le condizioni all'interno di ciascun gruppo.
  + Richiede almeno un criterio di routing per gruppo di carico di lavoro.
  + Sono supportati solo i metodi di classificazione sopra elencati.
  + Il nome della funzione deve iniziare con`rg_classifier_`.
  + Assegnazione predefinita al gruppo se nessuna condizione corrisponde.

# Abilitazione del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server
<a name="ResourceGovernor.Enabling"></a>

Abilita il regolatore delle risorse aggiungendo l'`RESOURCE_GOVERNOR`opzione all'istanza DB di RDS per SQL Server. Utilizzare il seguente processo:

1. Creare un nuovo gruppo di opzioni oppure utilizzare un gruppo di opzioni esistente.

1. Aggiungere l'opzione `RESOURCE_GOVERNOR` al gruppo di opzioni.

1. Associare il gruppo di opzioni a questa istanza database.

**Nota**  
L'abilitazione del regolatore delle risorse tramite un gruppo di opzioni non richiede il riavvio.

## Creazione del gruppo di opzioni per `RESOURCE_GOVERNOR`
<a name="ResourceGovernor.OptionGroup"></a>

Per abilitare Resource Governor, crea un gruppo di opzioni o modifica un gruppo di opzioni che corrisponde all'edizione e alla versione di SQL Server dell'istanza DB che intendi utilizzare. Per completare questa procedura, utilizzare Console di gestione AWS o il AWS CLI.

### Console
<a name="ResourceGovernor.OptionGroup.Console"></a>

Utilizzare la procedura seguente per creare un gruppo di opzioni per SQL Server Enterprise Edition 2022.

**Per creare il gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Seleziona **Create group** (Crea gruppo).

1. Nella finestra **Create option group (Crea gruppo di opzioni)** eseguire queste operazioni:

   1. Per **Nome**, inserisci un nome per il gruppo di opzioni che sia unico all'interno del tuo AWS account, ad esempio**resource-governor-ee-2022**. Il nome può includere solo lettere, cifre e trattini.

   1. Per **Descrizione**, immettere una breve descrizione del gruppo di opzioni, ad esempio **RESOURCE\$1GOVERNOR option group for SQL Server EE 2022**. La descrizione viene usata per la visualizzazione.

   1. Per **Engine**, scegli **sqlserver-ee**.

   1. **Per la **versione Major Engine**, scegli 16.00.**

1. Scegli **Create** (Crea).

### CLI
<a name="ResourceGovernor.OptionGroup.CLI"></a>

La procedura seguente crea un gruppo di opzioni per SQL Server Enterprise Edition 2022.

**Per creare il gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-option-group \
      --option-group-name resource-governor-ee-2022 \
      --engine-name sqlserver-ee \
      --major-engine-version 16.00 \
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

  Per Windows:

  ```
  aws rds create-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --engine-name sqlserver-ee ^
      --major-engine-version 16.00 ^
      --option-group-description "RESOURCE_GOVERNOR option group for SQL Server EE 2022"
  ```

## Aggiunta dell'opzione `RESOURCE_GOVERNOR` al gruppo di opzioni
<a name="ResourceGovernor.Add"></a>

Quindi, usa Console di gestione AWS o AWS CLI per aggiungere l'`RESOURCE_GOVERNOR`opzione al tuo gruppo di opzioni.

### Console
<a name="ResourceGovernor.Add.Console"></a>

**Per aggiungere l'opzione RESOURCE\$1GOVERNOR**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegli il gruppo di opzioni che hai appena creato, **resource-governor-ee-2022** in questo esempio.

1. Scegliere **Add option (Aggiungi opzione)**.

1. **In **Dettagli dell'opzione**, scegliete **RESOURCE\$1GOVERNOR** come nome dell'opzione.**

1. In **Scheduling (Pianificazione)**, scegliere se aggiungere l'opzione immediatamente o alla finestra di manutenzione successiva.

1. Scegliere **Add option (Aggiungi opzione)**.

### CLI
<a name="ResourceGovernor.Add.CLI"></a>

**Per aggiungere l’opzione `RESOURCE_GOVERNOR`**
+ Aggiungere l'opzione `RESOURCE_GOVERNOR` al gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds add-option-to-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options "OptionName=RESOURCE_GOVERNOR" \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds add-option-to-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options "OptionName=RESOURCE_GOVERNOR" ^
      --apply-immediately
  ```

## Associazione del gruppo di opzioni all'istanza database
<a name="ResourceGovernor.Apply"></a>

Per associare il gruppo di `RESOURCE_GOVERNOR` opzioni alla tua istanza DB, usa o il. Console di gestione AWS AWS CLI

### Console
<a name="ResourceGovernor.Apply.Console"></a>

Per completare l'attivazione del Resource Governor, associa il tuo gruppo di `RESOURCE_GOVERNOR` opzioni a un'istanza DB nuova o esistente:
+ Per una nuova istanza database, associarli all'avvio dell'istanza. Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md).
+ Per un'istanza database esistente, associarli modificando l'istanza. Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

### CLI
<a name="ResourceGovernor.Apply.CLI"></a>

È possibile associare il gruppo di `RESOURCE_GOVERNOR` opzioni a un'istanza DB nuova o esistente.

**Per creare un'istanza con il gruppo di `RESOURCE_GOVERNOR` opzioni**
+ Specificare lo stesso tipo di motore database e la versione principale utilizzata durante la creazione del gruppo di opzioni.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds create-db-instance \
      --db-instance-identifier mytestsqlserverresourcegovernorinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-ee \
      --engine-version 16.00 \
      --license-model license-included \
      --allocated-storage 100 \
      --master-username admin \
      --master-user-password password \
      --storage-type gp2 \
      --option-group-name resource-governor-ee-2022
  ```

  Per Windows:

  ```
  aws rds create-db-instance ^
      --db-instance-identifier mytestsqlserverresourcegovernorinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-ee ^
      --engine-version 16.00 ^
      --license-model license-included ^
      --allocated-storage 100 ^
      --master-username admin ^
      --master-user-password password ^
      --storage-type gp2 ^
      --option-group-name resource-governor-ee-2022
  ```

**Per modificare un'istanza e associare il gruppo di opzioni `RESOURCE_GOVERNOR`**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds modify-db-instance \
      --db-instance-identifier mytestinstance \
      --option-group-name resource-governor-ee-2022 \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier mytestinstance ^
      --option-group-name resource-governor-ee-2022 ^
      --apply-immediately
  ```

# Utilizzo del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server
<a name="ResourceGovernor.Using"></a>

Dopo aver aggiunto l'opzione Resource Governor al gruppo di opzioni, Resource Governor non è ancora attivo a livello di motore di database. Per abilitare completamente il Resource Governor, è necessario utilizzare le stored procedure di RDS per SQL Server per abilitarlo e creare gli oggetti Resource Governor necessari. Per ulteriori informazioni, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Innanzitutto, connettiti al database di SQL Server, quindi richiama le stored procedure RDS for SQL Server appropriate per completare la configurazione. Per istruzioni sulla connessione al tuo database, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md).

Per istruzioni su come chiamare ciascuna stored procedure, consulta i seguenti argomenti:

**Topics**
+ [Gestisci il pool di risorse](#ResourceGovernor.ManageResourcePool)
+ [Gestisci i gruppi di carichi di lavoro](#ResourceGovernor.ManageWorkloadGroups)
+ [Crea e registra una funzione di classificazione](#ResourceGovernor.ClassifierFunction)
+ [Funzione Drop Classifier](#ResourceGovernor.DropClassifier)
+ [Funzione di classificazione per annullare la registrazione](#ResourceGovernor.DeregisterClassifier)
+ [Reimposta le statistiche](#ResourceGovernor.ResetStats)
+ [modifiche alla configurazione del Resource Governor](#ResourceGovernor.ConfigChanges)
+ [Associare TempDB a un pool di risorse](#ResourceGovernor.BindTempDB)
+ [Scollegare TempDB da un pool di risorse](#ResourceGovernor.UnbindTempDB)
+ [Cleanup Resource Governor](#ResourceGovernor.Cleanup)

## Gestisci il pool di risorse
<a name="ResourceGovernor.ManageResourcePool"></a>

### Crea un pool di risorse
<a name="ResourceGovernor.CreateResourcePool"></a>

Una volta abilitato il regolatore delle risorse nel gruppo di opzioni, è possibile creare pool di risorse personalizzati utilizzando`rds_create_resource_pool`. Questi pool consentono di allocare percentuali specifiche di CPU, memoria e IOPS a diversi carichi di lavoro.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_create_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value
```

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome di un gruppo di carichi di lavoro definito dall'utente esistente.
+ `@pool_name`- È il nome definito dall'utente per il pool di risorse. *pool\$1name*è alfanumerico, può contenere fino a 128 caratteri, deve essere univoco all'interno di un'istanza di Database Engine e deve rispettare le regole per gli identificatori del database.

I parametri seguenti sono facoltativi:
+ `@MAX_CPU_PERCENT`- Speciifica la larghezza di banda media massima della CPU ricevuta da tutte le richieste nel pool di risorse in caso di conflitto tra CPU. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@CAP_CPU_PERCENT`- Speciifica un limite massimo per la larghezza di banda della CPU ricevuta da tutte le richieste nel pool di risorse. Limita il livello massimo di larghezza di banda della CPU in modo che sia uguale al valore specificato. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@MAX_MEMORY_PERCENT`- Speciifica la quantità massima di memoria dell'area di lavoro per le interrogazioni che possono essere utilizzate dalle richieste in questo pool di risorse. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@MAX_IOPS_PER_VOLUME`- Speciifica il numero massimo di I/O operazioni al secondo (IOPS) per volume del disco per consentire l'utilizzo del pool di risorse. L'intervallo consentito per *value* è compreso tra 0 e 2^31-1 (2.147.483.647). Specificare 0 per rimuovere un limite IOPS per il pool. Il valore predefinito è 0.

**Esempi**

Esempio di creazione di un pool di risorse con tutti i valori predefiniti:

```
--This creates resource pool 'SalesPool' with all default values
USE [msdb]
EXEC rds_create_resource_pool @pool_name = 'SalesPool';
     
--Apply changes
USE [msdb]
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
     
--Validate configuration
select * from sys.resource_governor_resource_pools
```

Esempio di creazione di un pool di risorse con diversi parametri specificati:

```
--creates resource pool
USE [msdb]
EXEC dbo.rds_create_resource_pool    
@pool_name='analytics',
@MAX_CPU_PERCENT = 30,
@CAP_CPU_PERCENT = 40,
@MAX_MEMORY_PERCENT = 20;
            
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
    
--Validate configuration
select * from sys.resource_governor_resource_pools
```

### Modifica il pool di risorse
<a name="ResourceGovernor.AlterResourcePool"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name=value,
    @MAX_CPU_PERCENT=value,
    @CAP_CPU_PERCENT=value,
    @MAX_MEMORY_PERCENT=value,
    @MAX_IOPS_PER_VOLUME=value;
```

I parametri seguenti sono obbligatori:
+ `@pool_name`- È il nome di un pool di risorse definito dall'utente esistente. La modifica del pool di risorse predefinito non è consentita in Amazon RDS SQL Server.

È necessario specificare almeno uno dei parametri opzionali:
+ `@MAX_CPU_PERCENT`- Speciifica la larghezza di banda media massima della CPU ricevuta da tutte le richieste nel pool di risorse in caso di conflitto tra CPU. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@CAP_CPU_PERCENT`- Speciifica un limite massimo per la larghezza di banda della CPU ricevuta da tutte le richieste nel pool di risorse. Limita il livello massimo di larghezza di banda della CPU in modo che sia uguale al valore specificato. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@MAX_MEMORY_PERCENT`- Speciifica la quantità massima di memoria dell'area di lavoro per le interrogazioni che possono essere utilizzate dalle richieste in questo pool di risorse. *value*è un numero intero con un'impostazione predefinita di 100. L'intervallo consentito per *value* è compreso tra 1 e 100.
+ `@MAX_IOPS_PER_VOLUME`- Speciifica il numero massimo di I/O operazioni al secondo (IOPS) per volume del disco per consentire l'utilizzo del pool di risorse. L'intervallo consentito per *value* è compreso tra 0 e 2^31-1 (2.147.483.647). Specificare 0 per rimuovere un limite IOPS per il pool. Il valore predefinito è 0.

**Esempi**

```
--This alters resource pool
USE [msdb]
EXEC dbo.rds_alter_resource_pool    
    @pool_name='analytics',
    @MAX_CPU_PERCENT = 10,
    @CAP_CPU_PERCENT = 20,
    @MAX_MEMORY_PERCENT = 50;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration.
select * from sys.resource_governor_resource_pools
```

### Elimina il pool di risorse
<a name="ResourceGovernor.DropResourcePool"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name=value;
```

Il parametro seguente è obbligatorio:
+ `@pool_name`- È il nome di un pool di risorse definito dall'utente esistente.

**Nota**  
L'eliminazione del pool di risorse interno o predefinito non è consentita in SQL Server.

**Esempi**

```
--This drops resource pool
USE [msdb]
EXEC dbo.rds_drop_resource_pool    
@pool_name='analytics'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_resource_pools
```

## Gestisci i gruppi di carichi di lavoro
<a name="ResourceGovernor.ManageWorkloadGroups"></a>

I gruppi di carichi di lavoro, creati e gestiti con `rds_create_workload_group` e`rds_alter_workload_group`, consentono di impostare livelli di importanza, assegnazioni di memoria e altri parametri per gruppi di query.

### Crea un gruppo di carichi di lavoro
<a name="ResourceGovernor.CreateWorkloadGroup"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_create_workload_group 
@group_name = value, 
@IMPORTANCE ={ LOW | MEDIUM | HIGH }, 
@REQUEST_MAX_MEMORY_GRANT_PERCENT =value, 
@REQUEST_MAX_CPU_TIME_SEC = value , 
@REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value, 
@MAX_DOP = value, 
@GROUP_MAX_REQUESTS = value, 
@pool_name = value
```

I parametri seguenti sono obbligatori:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente.
+ `@group_name`- È il nome di un gruppo di carichi di lavoro definito dall'utente esistente.

I parametri seguenti sono facoltativi:
+ `@IMPORTANCE`- Speciifica l'importanza relativa di una richiesta nel gruppo di carichi di lavoro. Il valore predefinito è `MEDIUM`.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`- Speciifica la quantità massima di memoria dell'area di lavoro per le interrogazioni che una singola richiesta può occupare dal pool. *value*è una percentuale della dimensione del pool di risorse definita da. `MAX_MEMORY_PERCENT` Il valore predefinito è 25.
+ `@REQUEST_MAX_CPU_TIME_SEC`- Speciifica la quantità massima di tempo di CPU, in secondi, che una richiesta batch può utilizzare. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita per *value* è 0, che significa illimitato.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`- Speciifica il tempo massimo, in secondi, durante il quale una query può attendere che una concessione di memoria dalla memoria dell'area di lavoro delle interrogazioni diventi disponibile. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita di *value* 0 utilizza un calcolo interno basato sul costo della query per determinare il tempo massimo.
+ `@MAX_DOP`- Speciifica il grado massimo di parallelismo () `MAXDOP` per l'esecuzione di query parallele. L'intervallo consentito per *value* è compreso tra 0 e 64. L'impostazione predefinita per*value*, 0, utilizza l'impostazione globale.
+ `@GROUP_MAX_REQUESTS`= Speciifica il numero massimo di richieste simultanee che possono essere eseguite nel gruppo di carichi di lavoro. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita per *value* è 0 e consente un numero illimitato di richieste.
+ `@pool_name`= Associa il gruppo di carichi di lavoro al pool di risorse definito dall'utente identificato da *pool\$1name* o al `default` pool di risorse. Se *pool\$1name* non viene fornito, il gruppo di carichi di lavoro è associato al pool integrato. `default`

**Esempi**

```
--This creates workload group named 'analytics'
USE msdb;
EXEC dbo.rds_create_workload_group 
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 25, 
    @REQUEST_MAX_CPU_TIME_SEC = 0, 
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 0, 
    @MAX_DOP = 0, 
    @GROUP_MAX_REQUESTS = 0, 
    @pool_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
  
--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Modifica il gruppo di carichi di lavoro
<a name="ResourceGovernor.AlterWorkloadGroup"></a>

**Utilizzo**

```
EXEC msdb.dbo.rds_alter_workload_group
    @group_name = value,
    @IMPORTANCE = 'LOW|MEDIUM|HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = value,
    @REQUEST_MAX_CPU_TIME_SEC = value,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value,
    @MAX_DOP = value,
    @GROUP_MAX_REQUESTS = value,
    @pool_name = value
```

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome del gruppo di carichi di lavoro predefinito o esistente definito dall'utente.

**Nota**  
È supportata solo la modifica `REQUEST_MAX_MEMORY_GRANT_PERCENT` dei parametri nel gruppo di carico di lavoro predefinito. Per il gruppo di carichi di lavoro predefinito, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve essere compreso tra 1 e 70. Nessun altro parametro può essere modificato nel gruppo di carico di lavoro predefinito. Tutti i parametri possono essere modificati nel gruppo di carico di lavoro definito dall'utente.

I parametri seguenti sono facoltativi:
+ `@IMPORTANCE`- Speciifica l'importanza relativa di una richiesta nel gruppo di carichi di lavoro. Il valore predefinito è MEDIUM.
+ `@REQUEST_MAX_MEMORY_GRANT_PERCENT`- Speciifica la quantità massima di memoria dell'area di lavoro per le interrogazioni che una singola richiesta può occupare dal pool. *value*è una percentuale della dimensione del pool di risorse definita da. `MAX_MEMORY_PERCENT` Il valore predefinito è 25. Su Amazon RDS, `REQUEST_MAX_MEMORY_GRANT_PERCENT` deve essere compreso tra 1 e 70.
+ `@REQUEST_MAX_CPU_TIME_SEC`- Speciifica la quantità massima di tempo di CPU, in secondi, che una richiesta batch può utilizzare. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita per *value* è 0, che significa illimitato.
+ `@REQUEST_MEMORY_GRANT_TIMEOUT_SEC`- Speciifica il tempo massimo, in secondi, durante il quale una query può attendere che una concessione di memoria dalla memoria dell'area di lavoro delle interrogazioni diventi disponibile. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita di *value* 0 utilizza un calcolo interno basato sul costo della query per determinare il tempo massimo.
+ `@MAX_DOP`- Speciifica il grado massimo di parallelismo (MAXDOP) per l'esecuzione di query parallele. L'intervallo consentito per *value* è compreso tra 0 e 64. L'impostazione predefinita per*value*, 0, utilizza l'impostazione globale.
+ `@GROUP_MAX_REQUESTS`- Speciifica il numero massimo di richieste simultanee che è possibile eseguire nel gruppo di carichi di lavoro. *value*deve essere 0 o un numero intero positivo. L'impostazione predefinita per *value* è 0 e consente un numero illimitato di richieste.
+ `@pool_name`- Associa il gruppo di carichi di lavoro al pool di risorse definito dall'utente identificato da. *pool\$1name*

**Esempi**

Esempio di modifica del gruppo di carico di lavoro predefinito REQUEST\$1MAX\$1MEMORY\$1GRANT\$1PERCENT:

```
--Modify default workload group (set memory grant cap to 10%)
USE msdb
EXEC dbo.rds_alter_workload_group    
    @group_name = 'default',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT=10;
    
--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
SELECT * FROM sys.resource_governor_workload_groups WHERE name='default';
```

Esempio di modifica di un gruppo di carichi di lavoro non predefinito:

```
EXEC msdb.dbo.rds_alter_workload_group    
    @group_name = 'analytics',
    @IMPORTANCE = 'HIGH',
    @REQUEST_MAX_MEMORY_GRANT_PERCENT = 30,
    @REQUEST_MAX_CPU_TIME_SEC = 3600,
    @REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 60,
    @MAX_DOP = 4,
    @GROUP_MAX_REQUESTS = 100;

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

Esempio di spostamento di un gruppo di carichi di lavoro non predefinito in un altro pool di risorse:

```
EXEC msdb.dbo.rds_alter_workload_group    
@group_name = 'analytics',
@pool_name='abc'

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

### Eliminare il gruppo di carichi di lavoro
<a name="ResourceGovernor.DropWorkloadGroup"></a>

**Utilizzo**

```
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = value
```

I parametri seguenti sono obbligatori:
+ `@group_name`- È il nome di un gruppo di carichi di lavoro definito dall'utente esistente.

**Esempi**

```
--Drops a Workload Group:
EXEC msdb.dbo.rds_drop_workload_group    
@group_name = 'analytics';

--Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;

--Validate configuration
select * from sys.resource_governor_workload_groups
```

## Crea e registra una funzione di classificazione
<a name="ResourceGovernor.ClassifierFunction"></a>

Questa procedura crea una funzione di classificazione delle risorse nel database master che indirizza le connessioni a gruppi di carichi di lavoro personalizzati in base a criteri specifici (nome utente, database, host o nome dell'applicazione). Se il regolatore delle risorse è abilitato e nella configurazione del governatore delle risorse è specificata una funzione di classificazione, l'output della funzione determina il gruppo di carico di lavoro utilizzato per le nuove sessioni. In assenza di una funzione di classificazione, tutte le sessioni vengono classificate nel gruppo. `default`

**Funzionalità:**
+ Supporta fino a due gruppi di carichi di lavoro con le rispettive condizioni di routing.
+ Combina il criterio con le `AND` condizioni all'interno di ciascun gruppo.
+ Richiede almeno un criterio di routing per gruppo di carico di lavoro.
+ Il nome della funzione deve iniziare con. `rg_classifier_`
+ Assegnazione predefinita al gruppo se nessuna condizione corrisponde.

La funzione di classificazione presenta le caratteristiche e i comportamenti seguenti:
+ La funzione è definita nell'ambito del server (nel database principale).
+ La funzione è definita con l'associazione allo schema.
+ La funzione viene valutata per ogni nuova sessione, anche quando il pool di connessioni è abilitato.
+ La funzione restituisce il contesto del gruppo di carichi di lavoro per la sessione. La sessione viene assegnata al gruppo di carichi di lavoro restituito dal classificatore per tutta la durata della sessione.
+ Se la funzione restituisce NULL, default o il nome di un gruppo di carichi di lavoro inesistente, alla sessione viene assegnato il contesto del gruppo di carichi di lavoro predefinito. Alla sessione viene inoltre assegnato il contesto predefinito se la funzione fallisce per qualsiasi motivo.
+ È possibile creare più funzioni di classificazione. Tuttavia, SQL Server consente la registrazione di una sola funzione di classificazione alla volta.
+ La funzione di classificazione non può essere eliminata a meno che il relativo stato di classificatore non venga rimosso utilizzando la procedura di cancellazione della registrazione (`EXEC dbo.msdb.rds_alter_resource_governor_configuration @deregister_function = 1;`) che imposta il nome della funzione su NULL o un'altra funzione di classificazione non venga registrata utilizzando () `EXEC dbo.msdb.rds_alter_resource_governor_configuration @classifier_function = <function_name>;`
+ In assenza di una funzione di classificazione, tutte le sessioni vengono classificate nel gruppo predefinito.
+ Non è possibile modificare una funzione di classificazione mentre è referenziata nella configurazione del Resource Governor. Tuttavia, è possibile modificare la configurazione per utilizzare una funzione di classificazione diversa. Se desideri apportare modifiche al classificatore, valuta la possibilità di creare un paio di funzioni di classificazione. Ad esempio, è possibile creare `rg_classifier_a` e. `rg_classifier_b`

**Utilizzo**

```
EXEC msdb.dbo.rds_create_classifier_function 
@function_name = value,
@workload_group1 = value, 
@user_name1 = value,
@db_name1 = value,
@host_name1 = value, 
@app_name1 = value, 
@workload_group2 = value,
@user_name2 = value,
@db_name2 = value,
@host_name2 = value,
@app_name2 = value
```

I parametri seguenti sono obbligatori:
+ `@function_name`- Nome della funzione di classificazione. Deve iniziare con `rg_classifier_`
+ `@workload_group1`- Nome del primo gruppo di carichi di lavoro

I parametri seguenti sono facoltativi:

(Almeno uno di questi criteri deve essere specificato per il gruppo 1)
+ `@user_name1`- Nome di accesso per il gruppo 1
+ `@db_name1`- Nome del database per il gruppo 1
+ `@host_name1`- Nome host per il gruppo 1
+ `@app_name1`- Nome dell'applicazione per il gruppo 1

(Se viene specificato il gruppo 2, deve essere fornito almeno un criterio)
+ `@workload_group2`- Nome del secondo gruppo di carico di lavoro
+ `@user_name2`- Nome di accesso per il gruppo 2
+ `@db_name2`- Nome del database per il gruppo 2
+ `@host_name2`- Nome host per il gruppo 2
+ `@app_name2`- Nome dell'applicazione per il gruppo 2

**Nota**  
Gli account di sistema, i database, le applicazioni e l'host sono limitati.

**Esempi**

Esempio di base con un gruppo di carichi di lavoro:

```
/*Create a classifier to route all requests from 'PowerBI' app to workload group 
'reporting_group'*/

EXEC msdb.dbo.rds_create_classifier_function
@function_name = 'rg_classifier_a',
@workload_group1 = 'reporting_group',
@app_name1 = 'PowerBI';

--Register the classifier
EXEC msdb.dbo.rds_alter_resource_governor_configuration
@classifier_function = 'rg_classifier_a';

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration

/*Query sys.resource_governor_configuration to validate that resource governor is enabled and is using the classifier function we created and registered*/

use master
go
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name,
       OBJECT_NAME(classifier_function_id) AS classifier_object_name,
       is_enabled
FROM sys.resource_governor_configuration;
```

## Funzione Drop Classifier
<a name="ResourceGovernor.DropClassifier"></a>

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_drop_classifier_function
@function_name = value;
```

Il parametro seguente è obbligatorio:
+ `@function_name`- È il nome di una funzione di classificazione definita dall'utente esistente

**Esempio**

```
EXEC msdb.dbo.rds_drop_classifier_function
@function_name = 'rg_classifier_b';
```

## Funzione di classificazione per annullare la registrazione
<a name="ResourceGovernor.DeregisterClassifier"></a>

Utilizzare questa procedura per annullare la registrazione della funzione di classificazione. Dopo l'annullamento della registrazione della funzione, le nuove sessioni vengono assegnate automaticamente al gruppo di carichi di lavoro predefinito.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration    
@deregister_function = 1;
```

Per l'annullamento della registrazione è richiesto il seguente parametro:
+ `@deregister_function`deve essere 1

**Esempio**

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration 
    @deregister_function = 1;
GO

-- Apply changes
EXEC msdb.dbo.rds_alter_resource_governor_configuration;
```

## Reimposta le statistiche
<a name="ResourceGovernor.ResetStats"></a>

Le statistiche del Resource Governor sono cumulative dall'ultimo riavvio del server. Se hai bisogno di raccogliere statistiche a partire da un determinato orario, puoi reimpostarle utilizzando la seguente procedura memorizzata di Amazon RDS.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

Per ripristinare le statistiche è necessario il seguente parametro:
+ `@reset_statistics`deve essere 1

## modifiche alla configurazione del Resource Governor
<a name="ResourceGovernor.ConfigChanges"></a>

Quando il governatore delle risorse non è abilitato, `rds_alter_resource_governor_configuration` abilita il governatore delle risorse. L'abilitazione del governatore delle risorse produce i seguenti risultati:
+ L'eventuale funzione di classificazione viene eseguita per nuove sessioni, assegnandole a gruppi di carichi di lavoro.
+ I limiti di risorse specificati nella configurazione del Resource Governor vengono rispettati e applicati.
+ I limiti di risorse specificati nella configurazione del Resource Governor vengono rispettati e applicati.
+ Le richieste esistenti prima dell'attivazione del Resource Governor potrebbero essere influenzate da eventuali modifiche alla configurazione apportate quando il Resource Governor è abilitato.
+ Le richieste esistenti, prima di abilitare Resource Governor, potrebbero essere influenzate da eventuali modifiche alla configurazione apportate quando il Resource Governor è abilitato.
+ Su RDS per SQL Server, `EXEC msdb.dbo.rds_alter_resource_governor_configuration` deve essere eseguito affinché tutte le modifiche alla configurazione del Resource Governor abbiano effetto. 

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_alter_resource_governor_configuration
```

## Associare TempDB a un pool di risorse
<a name="ResourceGovernor.BindTempDB"></a>

Puoi associare i metadati ottimizzati per la memoria tempdb a un pool di risorse specifico utilizzando `rds_bind_tempdb_metadata_to_resource_pool` Amazon RDS SQL Server versione 2019 e successive.

**Nota**  
La funzionalità di metadati tempdb ottimizzata per la memoria deve essere abilitata prima di associare i metadati tempdb al pool di risorse. Per abilitare questa funzionalità su Amazon RDS si tratta di un parametro `tempdb metadata memory-optimized` statico.

Abilita il parametro statico su Amazon RDS ed esegui un riavvio senza failover affinché il parametro abbia effetto:

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name test-sqlserver-ee-2022 \
    --parameters "ParameterName='tempdb metadata memory-optimized',ParameterValue=True,ApplyMethod=pending-reboot"
```

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_bind_tempdb_metadata_to_resource_pool  
@pool_name=value;
```

Il parametro seguente è obbligatorio:
+ `@pool_name`- È il nome di un pool di risorse esistente definito dall'utente.

**Nota**  
Questa modifica richiede anche il riavvio del servizio sql senza failover per avere effetto, anche se la funzionalità di metadati TempDB ottimizzata per la memoria è già abilitata.

## Scollegare TempDB da un pool di risorse
<a name="ResourceGovernor.UnbindTempDB"></a>

Scollega i metadati ottimizzati per la memoria tempdb da un pool di risorse.

**Nota**  
Questa modifica richiede anche il riavvio del servizio sql senza failover per avere effetto

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_unbind_tempdb_metadata_from_resource_pool
```

## Cleanup Resource Governor
<a name="ResourceGovernor.Cleanup"></a>

Questa procedura consente di pulire tutti gli oggetti associati dopo aver rimosso l'opzione Resource Governor dal gruppo di opzioni. Ciò disabilita il regolatore delle risorse, ripristina le impostazioni predefinite del gruppo di carico di lavoro predefinito, rimuove i gruppi di carichi di lavoro personalizzati, i pool di risorse e le funzioni di classificazione.

**Caratteristiche principali**
+ Riporta il gruppo di carichi di lavoro predefinito alle impostazioni predefinite
+ Disattiva il regolatore delle risorse
+ Rimuove i gruppi di carichi di lavoro personalizzati
+ Rimuove i pool di risorse personalizzati
+ Elimina le funzioni del classificatore
+ Rimuove l'associazione del pool di risorse tempdb se abilitata

**Importante**  
Questa pulizia può avere esito negativo se ci sono sessioni attive nel gruppo di carico di lavoro. Attendi il termine delle sessioni attive o interrompi le sessioni attive in base alle tue esigenze aziendali. Si consiglia di eseguirlo durante la finestra di manutenzione.   
Questa pulizia può avere esito negativo se un pool di risorse è stato associato a tempdb e il riavvio senza failover non è ancora stato effettuato. Se in precedenza hai associato un pool di risorse a tempdb o hai scollegato un pool di risorse da tempdb, esegui un riavvio senza failover per rendere effettiva la modifica. Si consiglia di eseguirlo durante la finestra di manutenzione.

**Utilizzo**

```
USE [msdb]
EXEC dbo.rds_cleanup_resource_governor
```

## Considerazioni sull’implementazione Multi-AZ
<a name="ResourceGovernor.Considerations"></a>

RDS per SQL Server replica il Resource Governor su un'istanza secondaria in una distribuzione Multi-AZ. È possibile verificare quando la modifica e quando il nuovo Resource Governor è stato sincronizzato per l'ultima volta con l'istanza secondaria.

Utilizza la seguente query per verificare `last_sync_time` la replica:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Nei risultati della query, se l'ora di sincronizzazione è passata dall'ora di aggiornamento del Resource Governor o dall'ora di creazione, il Resource Governor si sincronizza con quella secondaria.

Per eseguire un failover manuale del DB per confermare la replica del Resource Governor, attendi prima `last_sync_time` l'aggiornamento. Quindi, procedi con il failover Multi-AZ.

## Considerazioni sulle repliche di lettura
<a name="ResourceGovernor.ReadReplica"></a>
+ Per le repliche di SQL Server nella stessa regione dell'istanza DB di origine, utilizza lo stesso gruppo di opzioni dell'origine. Le modifiche al gruppo di opzioni si propagano immediatamente alle repliche, indipendentemente dalle relative finestre di manutenzione.
+ Quando si crea una replica di SQL Server interregionale, RDS crea un gruppo di opzioni dedicato a tale replica.
+ 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.
+ L'opzione Resource Governor è costituita da opzioni non replicate. È possibile aggiungere o rimuovere le opzioni non replicate da un gruppo di opzioni dedicato.
+ 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.

**Nota**  
Quando si utilizza Resource governor su una replica di lettura, è necessario assicurarsi manualmente che Resource Governor sia stato configurato sulla replica di lettura utilizzando le stored procedure di Amazon RDS dopo l'aggiunta dell'opzione al gruppo di opzioni. Le configurazioni di Resource Governor non si replicano automaticamente nella replica di lettura. Inoltre, il carico di lavoro sulla replica di lettura è in genere diverso rispetto all'istanza principale. Pertanto, si consiglia di applicare la configurazione delle risorse alla replica in base al carico di lavoro e al tipo di istanza. Puoi eseguire queste procedure memorizzate di Amazon RDS sulla replica di lettura in modo indipendente per configurare il regolatore delle risorse sulla replica di lettura.

# Monitora il regolatore delle risorse di Microsoft SQL Server utilizzando le visualizzazioni di sistema per l'istanza di RDS per SQL Server
<a name="ResourceGovernor.Monitoring"></a>

Le statistiche di Resource Governor sono cumulative dall'ultimo riavvio del server. Se hai bisogno di raccogliere statistiche a partire da un determinato orario, puoi reimpostarle utilizzando la seguente procedura memorizzata di Amazon RDS:

```
EXEC msdb.dbo.rds_alter_resource_governor_configuration  
@reset_statistics = 1;
```

## Statistiche di runtime del pool di risorse
<a name="ResourceGovernor.ResourcePoolStats"></a>

Per ogni pool di risorse, Resource Governor tiene traccia dell'utilizzo della CPU e della memoria, out-of-memory degli eventi, delle concessioni di memoria, degli I/O e di altre statistiche. [Per ulteriori informazioni, vedere sys.dm\$1resource\$1governor\$1resource\$1pools.](https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-resource-governor-resource-pools-transact-sql?view=sql-server-ver17)

La seguente query restituisce un sottoinsieme di statistiche disponibili per tutti i pool di risorse:

```
SELECT rp.pool_id,
       rp.name AS resource_pool_name,
       wg.workload_group_count,
       rp.statistics_start_time,
       rp.total_cpu_usage_ms,
       rp.target_memory_kb,
       rp.used_memory_kb,
       rp.out_of_memory_count,
       rp.active_memgrant_count,
       rp.total_memgrant_count,
       rp.total_memgrant_timeout_count,
       rp.read_io_completed_total,
       rp.write_io_completed_total,
       rp.read_bytes_total,
       rp.write_bytes_total,
       rp.read_io_stall_total_ms,
       rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
            SELECT COUNT(1) AS workload_group_count
            FROM sys.dm_resource_governor_workload_groups AS wg
            WHERE wg.pool_id = rp.pool_id
            ) AS wg;
```

# Disattivazione del regolatore di risorse di Microsoft SQL Server per l'istanza di RDS per SQL Server
<a name="ResourceGovernor.Disabling"></a>

Quando si disabilita il regolatore delle risorse su RDS per SQL Server, il servizio interrompe la gestione delle risorse del carico di lavoro. Prima di disabilitare Resource Governor, esamina in che modo ciò influisce sulle connessioni e sulle configurazioni del database.

La disabilitazione del Resource Governor produce i seguenti risultati:
+ La funzione di classificazione non viene eseguita all'apertura di una nuova connessione.
+ Le nuove connessioni vengono classificate automaticamente nel gruppo di carichi di lavoro predefinito.
+ Tutte le impostazioni esistenti del gruppo di carichi di lavoro e del pool di risorse vengono ripristinate ai valori predefiniti.
+ Quando vengono raggiunti i limiti, non viene attivato alcun evento.
+ È possibile apportare modifiche alla configurazione del Resource Governor, ma le modifiche non hanno effetto finché non viene abilitato il Resource Governor.

Per disabilitare il regolatore delle risorse, rimuovi l'`RESOURCE_GOVERNOR`opzione dal relativo gruppo di opzioni.

## Console
<a name="ResourceGovernor.Disabling.Console"></a>

La procedura seguente rimuove l'opzione `RESOURCE_GOVERNOR`.

**Per rimuovere l'opzione RESOURCE\$1GOVERNOR dal relativo gruppo di opzioni**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione scegliere **Option groups (Gruppi di opzioni)**.

1. Scegliere il gruppo di opzioni con l'opzione `RESOURCE_GOVERNOR` (`resource-governor-ee-2022` negli esempi precedenti).

1. Scegliere **Delete option (Elimina opzione)**.

1. **In **Opzioni di eliminazione**, scegli **RESOURCE\$1GOVERNOR** tra le Opzioni da eliminare.**

1. In **Apply immediately** (Applica immediatamente), scegli **Yes** (Sì) per eliminare immediatamente l'opzione oppure **No** per eliminarla nella finestra di manutenzione successiva.

1. Scegli **Elimina**.

## CLI
<a name="ResourceGovernor.Disabling.CLI"></a>

La procedura seguente rimuove l'opzione `RESOURCE_GOVERNOR`.

**Per rimuovere l'opzione RESOURCE\$1GOVERNOR dal relativo gruppo di opzioni**
+ Eseguire uno dei seguenti comandi.  
**Example**  

  Per Linux, macOS o Unix:

  ```
  aws rds remove-option-from-option-group \
      --option-group-name resource-governor-ee-2022 \
      --options RESOURCE_GOVERNOR \
      --apply-immediately
  ```

  Per Windows:

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name resource-governor-ee-2022 ^
      --options RESOURCE_GOVERNOR ^
      --apply-immediately
  ```

# Procedure consigliate per la configurazione del gestore delle risorse su RDS per SQL Server
<a name="ResourceGovernor.BestPractices"></a>

Per controllare il consumo di risorse, RDS per SQL Server supporta il regolatore di risorse di Microsoft SQL Server. Le seguenti best practice consentono di evitare problemi di configurazione comuni e ottimizzare le prestazioni del database.

1. La configurazione del Resource Governor è archiviata nel `master` database. Si consiglia di salvare sempre una copia degli script di configurazione del Resource Governor separatamente.

1. La funzione di classificazione prolunga il tempo di elaborazione dell'accesso, pertanto si consiglia di evitare una logica complessa nel classificatore. Una funzione eccessivamente complessa può causare ritardi di accesso o timeout di connessione, comprese le sessioni di automazione di Amazon RDS. Ciò può influire sulla capacità dell'automazione di Amazon RDS di monitorare lo stato dell'istanza. Pertanto, è sempre consigliabile testare la funzione di classificazione in un ambiente di preproduzione prima di implementarla negli ambienti di produzione.

1. Evita di impostare valori elevati (superiori `REQUEST_MAX_MEMORY_GRANT_PERCENT` a 70) per i gruppi di carichi di lavoro, poiché ciò può impedire all'istanza del database di allocare memoria sufficiente per altre query simultanee, con possibili errori di timeout di concessione della memoria (Errore 8645). Al contrario, l'impostazione di questo valore troppo basso (inferiore a 1) o su 0 potrebbe impedire la corretta esecuzione delle query che richiedono spazio di lavoro di memoria (come quelle che implicano operazioni di ordinamento o hash) in gruppi di carichi di lavoro definiti dall'utente. RDS applica questi limiti limitando i valori tra 1 e 70 nei gruppi di carichi di lavoro predefiniti.

1. Per associare tempdb al pool di risorse, dopo aver associato i metadati tempdb ottimizzati per la memoria a un pool, il pool potrebbe raggiungere l'impostazione massima e qualsiasi query utilizzata potrebbe non riuscire con errori. `tempdb` out-of-memory In determinate circostanze, SQL Server potrebbe interrompersi se si verifica un errore. out-of-memory Per ridurre la possibilità che ciò accada, imposta il pool `MAX_MEMORY_PERCENT` di memoria su un valore elevato.

# Attività DBA frequenti per Amazon RDS per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks"></a>

In questa sezione vengono descritte le implementazioni, specifiche per Amazon RDS, di alcune attività DBA frequenti per le istanze database che eseguono il motore di database Microsoft SQL Server. Per fornire un'esperienza di servizio gestito, Amazon RDS non fornisce accesso shell alle istanze database e limita l'accesso a certe procedure e tabelle di sistema che richiedono privilegi avanzati. 

**Nota**  
Quando utilizzi un'istanza database SQL Server, puoi eseguire script per modificare un database appena creato, ma non puoi modificare il database [model], ossia quello che serve da modello per nuovi database. 

**Topics**
+ [Accesso al database tempdb sulle istanze database Microsoft SQL Server su Amazon RDS](SQLServer.TempDB.md)
+ [Analisi del carico di lavoro del database su un'istanza database Amazon RDS for SQL Server con Tuning Advisor motore di database](Appendix.SQLServer.CommonDBATasks.Workload.md)
+ [Modifica di `db_owner` nell’account `rdsa` per il database Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ChangeDBowner.md)
+ [Gestione di regole di confronto e set di caratteri per Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Collation.md)
+ [Creazione di un utente del database per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.CreateUser.md)
+ [Individuazione di un modello di ripristino per il database Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.DatabaseRecovery.md)
+ [Individuazione dell’ora dell’ultimo failover per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.LastFailover.md)
+ [Risoluzione dei problemi di recupero point-in-time dovuti a un divario dei numeri nella sequenza di log](Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps.md)
+ [Negare o consentire la visualizzazione dei nomi dei database per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ManageView.md)
+ [Disattivazione degli inserti rapidi durante il caricamento in blocco per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.DisableFastInserts.md)
+ [Eliminazione di un database in un’istanza database Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.DropMirrorDB.md)
+ [Ridenominazione di un database Amazon RDS per Microsoft SQL Server in un’implementazione Multi-AZ](Appendix.SQLServer.CommonDBATasks.RenamingDB.md)
+ [Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md)
+ [Ripristino di istanze database terminate in base alla licenza per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.RestoreLTI.md)
+ [Transizione di un database Amazon RDS per SQL Server da OFFLINE a ONLINE](Appendix.SQLServer.CommonDBATasks.TransitionOnline.md)
+ [Utilizzo di Change Data Capture per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.CDC.md)
+ [Utilizzo di SQL Server Agent per Amazon RDS](Appendix.SQLServer.CommonDBATasks.Agent.md)
+ [Utilizzo dei log di Amazon RDS per Microsoft SQL Server](Appendix.SQLServer.CommonDBATasks.Logs.md)
+ [Utilizzo di file di traccia e file dump per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.TraceFiles.md)

# Accesso al database tempdb sulle istanze database Microsoft SQL Server su Amazon RDS
<a name="SQLServer.TempDB"></a>

Puoi accedere al database `tempdb` sulle tue istanze database Microsoft SQL Server su Amazon RDS. Puoi eseguire il codice su `tempdb` servendoti di Transact-SQL tramite Microsoft SQL Server Management Studio (SSMS) o qualsiasi altra applicazione client SQL standard. Per ulteriori informazioni sulla connessione alla tua istanza database, consulta [Connessione all’istanza database Microsoft SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md). 

L'utente master per la tua istanza database riceve l'accesso `CONTROL` a `tempdb` affinché possa modificare le opzioni del database `tempdb`. L'utente master non è il proprietario del database `tempdb`. Se necessario, l'utente master può concedere l'accesso `CONTROL` ad altri utenti affinché anch'essi possano modificare le opzioni del database `tempdb`. 

**Nota**  
Non puoi eseguire i comandi Database Console Commands (DBCC) nel database `tempdb`. 

# Modifica delle opzioni del database tempdb
<a name="SQLServer.TempDB.Modifying"></a>

Puoi modificare le opzioni di database nel database `tempdb` sulle tue istanze database Amazon RDS. Per ulteriori informazioni sulle opzioni che puoi modificare, consulta [Database tempdb](https://msdn.microsoft.com/en-us/library/ms190768%28v=sql.120%29.aspx) nella documentazione di Microsoft.

Opzioni di database come, ad esempio, le opzioni per le dimensioni massime dei file, permangono dopo il riavvio dell'istanza database. Puoi modificare le opzioni di database per ottimizzare le prestazioni durante l'importazione dei dati e per evitare di esaurire lo spazio di storage.

## Ottimizzazione delle prestazioni durante l'importazione dei dati
<a name="SQLServer.TempDB.Modifying.Import"></a>

Per ottimizzare le prestazioni durante l'importazione di grandi quantità di dati nella tua istanza database, imposta le proprietà `SIZE` e `FILEGROWTH` del database tempdb su un numero grande. Per ulteriori informazioni su come ottimizzare `tempdb`, consulta [Ottimizzazione delle prestazioni di tempdb](https://technet.microsoft.com/en-us/library/ms175527%28v=sql.120%29.aspx) nella documentazione di Microsoft.

L'esempio seguente mostra come impostare la dimensione su 100 GB e la crescita file su 10 percento. 

```
1. alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)
```

## Come evitare problemi di storage
<a name="SQLServer.TempDB.Modifying.Full"></a>

Per evitare che il database `tempdb` utilizzi tutto lo spazio su disco disponibile, imposta la proprietà `MAXSIZE`. L'esempio seguente mostra come impostare la proprietà su 2048 MB. 

```
1. alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)
```

# Riduzione del database tempdb
<a name="SQLServer.TempDB.Shrinking"></a>

Puoi scegliere tra due modi per ridurre il database `tempdb` sulla tua istanza database Amazon RDS. Puoi utilizzare la procedura `rds_shrink_tempdbfile` oppure impostare la proprietà `SIZE`. 

## Utilizzo della procedura rds\$1shrink\$1tempdbfile
<a name="SQLServer.TempDB.Shrinking.Proc"></a>

La procedura `msdb.dbo.rds_shrink_tempdbfile` Amazon RDS permette di ridurre il database `tempdb`. Puoi chiamare `rds_shrink_tempdbfile` soltanto se disponi dell'accesso `CONTROL` a `tempdb`. Quando chiami `rds_shrink_tempdbfile` non si verifica alcun tempo di inattività per la tua istanza database. 

La procedura `rds_shrink_tempdbfile` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Default | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | --- | 
| `@temp_filename` | SYSNAME | — | obbligatorio | Il nome logico del file da ridurre. | 
| `@target_size` | int | nullo | facoltativo | La nuova dimensione del file in megabyte. | 

Nell'esempio seguente vengono ottenuti i nomi dei file per il database `tempdb`.

```
1. use tempdb;
2. GO
3. 
4. select name, * from sys.sysfiles;
5. GO
```

Nell'esempio seguente le dimensioni del file del database `tempdb` denominato `test_file` vengono ridotte e viene richiesta una nuova dimensione di `10` MB: 

```
1. exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;
```

## Impostazione della proprietà SIZE
<a name="SQLServer.TempDB.Shrinking.Size"></a>

Puoi anche ridurre il database `tempdb` impostando la proprietà `SIZE` e riavviando l'istanza database. Per ulteriori informazioni sul riavvio dell'istanza database, consulta [Riavvio di un'istanza DB DB](USER_RebootInstance.md).

L'esempio seguente mostra come impostare la proprietà `SIZE` su 1024 MB. 

```
1. alter database [tempdb] modify file (NAME = N'templog', SIZE = 1024MB)
```

# Configurazione di TempDB per le implementazioni Multi-AZ
<a name="SQLServer.TempDB.MAZ"></a>

Se la tua istanza database RDS per SQL Server si trova in un’implementazione Multi-AZ con mirroring del database (DBM) o gruppi di disponibilità Always On (AG), è opportuno prendere in considerazione alcuni fattori relativi all’utilizzo del database `tempdb`.

Non è possibile replicare i dati di `tempdb` dall’istanza database primaria a quella secondaria. Quando esegui il failover in un’istanza database secondaria, il database `tempdb` sull’istanza secondaria sarà vuoto.

È possibile sincronizzare la configurazione delle opzioni del database `tempdb`, comprese le impostazioni relative alla crescita automatica e al dimensionamento dei file, dall’istanza database primaria a quella secondaria. La sincronizzazione della configurazione di `tempDB` è supportata in tutte le versioni di RDS per SQL Server. È possibile attivare la sincronizzazione automatica della configurazione di `tempdb` utilizzando la seguente stored procedure:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
```

**Importante**  
Prima di utilizzare la stored procedure `rds_set_system_database_sync_objects`, assicurati di aver impostato la configurazione di `tempdb` preferita sull’istanza database primaria, anziché su quella secondaria. Se hai modificato la configurazione sull’istanza database secondaria, la tua configurazione di `tempdb` preferita potrebbe essere eliminata quando attivi la sincronizzazione automatica.

Per verificare se la sincronizzazione automatica della configurazione di `tempdb` è attivata, è possibile utilizzare la seguente funzione:

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

Quando la sincronizzazione automatica della configurazione di `tempdb` è attivata, viene restituito un valore per il campo `object_class`. Quando è disattivata, non viene restituito alcun valore.

Per trovare l’ultima volta che gli oggetti sono stati sincronizzati in base al fuso orario UTC, è possibile utilizzare la seguente funzione:

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Ad esempio, se hai modificato la configurazione di `tempdb` alle ore 01:00 e successivamente esegui la funzione `rds_fn_server_object_last_sync_time`, il valore restituito per `last_sync_time` dovrebbe essere successivo alle ore 01:00, a indicare che è avvenuta una sincronizzazione automatica.

Se utilizzi anche la funzionalità di replica dei processi di SQL Server Agent, puoi abilitare la replica sia per i processi di SQL Agent sia per la configurazione di `tempdb` specificandoli nel parametro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Per ulteriori informazioni sulla replica dei processi di SQL Server Agent, consulta [Attivazione della replica di processo SQL Server Agent](Appendix.SQLServer.CommonDBATasks.Agent.md#SQLServerAgent.Replicate).

In alternativa all’utilizzo della stored procedure `rds_set_system_database_sync_objects`, per assicurarti che le modifiche alla configurazione di `tempdb` vengano sincronizzate automaticamente, puoi utilizzare uno dei seguenti metodi manuali:

**Nota**  
È consigliabile attivare la sincronizzazione automatica della configurazione di `tempdb` utilizzando la stored procedure `rds_set_system_database_sync_objects`: L’utilizzo della sincronizzazione automatica evita la necessità di eseguire queste attività manuali ogni volta che modifichi la configurazione di `tempdb`.
+ Modifica innanzitutto la tua istanza database e disattiva Multi-AZ, quindi modifica tempdb e infine riattiva Multi-AZ. Questo sistema non causa alcun tempo di inattività.

  Per ulteriori informazioni, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md). 
+ Modifica dapprima `tempdb` nell'istanza primaria originale, quindi effettua il failover manualmente e infine modifica `tempdb` nella nuova istanza primaria. Questo sistema causa un tempo di inattività. 

  Per ulteriori informazioni, consulta [Riavvio di un'istanza DB DB](USER_RebootInstance.md).

# Analisi del carico di lavoro del database su un'istanza database Amazon RDS for SQL Server con Tuning Advisor motore di database
<a name="Appendix.SQLServer.CommonDBATasks.Workload"></a>

Database Engine Tuning Advisor è un'applicazione client fornita da Microsoft che analizza il carico di lavoro dei database e suggerisce un insieme ottimale di indici per i database Microsoft SQL Server in base al tipo di query eseguite. Come SQL Server Management Studio, Tuning Advisor viene eseguito da un computer client che si connette all'istanza database Amazon RDS che esegue SQL Server. Il computer client può essere un computer eseguito in locale nella tua rete o può essere un'istanza Amazon EC2 Windows in esecuzione nella stessa regione dell'istanza database Amazon RDS.

Questa sezione mostra come acquisire un carico di lavoro affinché Tuning Advisor lo analizzi. Questa è la procedura consigliata per acquisire un carico di lavoro perché Amazon RDS limita l'accesso host all'istanza SQL Server. Per ulteriori informazioni, consulta [Database Engine Tuning Advisor](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) nella documentazione Microsoft.

Per utilizzare Tuning Advisor, occorre fornire ad Advisor ciò che chiamiamo "carico di lavoro". Un carico di lavoro è un insieme di istruzioni Transact-SQL che vengono eseguite su uno o più database che desideri ottimizzare. Durante l'ottimizzazione dei database, Database Engine Tuning Advisor si serve di file e tabelle di traccia, script Transact-SQL o file XML come input del carico di lavoro. Quando usi Amazon RDS, un carico di lavoro può essere un file in un computer client o una tabella di database in un database Amazon RDS for SQL Server accessibile al computer client. Il file o la tabella devono contenere query sul database che desideri ottimizzare in un formato riproducibile.

Per ottenere la massima efficacia di Tuning Advisor, i carichi di lavoro dovrebbero essere il più possibile realistici. Puoi generare un file o una tabella del carico di lavoro creando una traccia dell'istanza database. Quando una traccia è in esecuzione, puoi simulare un carico sull'istanza database oppure eseguire le applicazioni con carico normale.

Esistono due tipi di tracce: lato client e lato server. Le tracce lato client sono più facili da configurare e puoi osservare in tempo reale gli eventi di traccia che vengono acquisiti in SQL Server Profiler. Una traccia lato server è più complicata da configurare e richiede una certa quantità di scripting Transact-SQL. Inoltre, la traccia occupa spazio di storage perché viene trascritta in un file sull'istanza database in Amazon RDS. È importante monitorare quanto spazio di storage viene utilizzato da una traccia in esecuzione lato server perché l'istanza database potrebbe acquisire lo stato di storage completo e non sarebbe più disponibile se lo spazio di storage venisse esaurito.

Per le tracce lato client, dopo che una quantità sufficiente di dati di traccia è stata acquisita in SQL Server Profiler, puoi generare il file del carico di lavoro salvando la traccia in un file sul computer locale o in una tabella di database su un'istanza database accessibile dal computer client. Il principale svantaggio dell'utilizzo di una traccia lato client consiste nel fatto che la traccia potrebbe non essere in grado di acquisire tutte le query in condizioni di carico intenso. Ciò potrebbe rendere meno efficace l'analisi eseguita da Database Engine Tuning Advisor. Se devi eseguire una traccia con carichi intensi e desideri fare in modo che tale traccia acquisisca ogni query di una sessione di traccia, è preferibile utilizzare una traccia lato server.

Per le tracce lato server, devi memorizzare i file di traccia sull'istanza database in un file del carico di lavoro idoneo oppure puoi salvare la traccia in una tabella sull'istanza database dopo il suo completamento. Puoi utilizzare SQL Server Profiler per salvare la traccia in un file sul computer o fare in modo che Tuning Advisor legga la tabella di traccia sull'istanza database.

# Esecuzione di una traccia lato client su un'istanza database SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ClientSide"></a>

 **Per eseguire una traccia lato client su un'istanza database SQL Server** 

1. Avvia SQL Server Profiler. SQL Server Profiler è installato nella sottocartella Performance Tools della cartella della tua istanza SQL Server. Per avviare una traccia lato client, devi caricare o definire un modello di definizione di traccia.

1. Nel menu SQL Server Profiler File (File di SQL Server Profiler), fai clic su **New Trace (Nuova traccia)**. Nella casella di dialogo **Connect to Server (Connessione al server)**, immetti l'endpoint dell'istanza database, la porta, il nome utente e la password master per il database per cui desideri eseguire la traccia.

1. Nella casella di dialogo **Trace Properties (Proprietà traccia)**, immetti un nome per la traccia e scegli un modello di definizione della traccia. Un modello predefinito, TSQL\$1Replay, viene fornito con l'applicazione. Puoi modificare questo modello per definire la tua traccia. Modifica gli eventi e le relative informazioni nella scheda **Events Selection (Selezione eventi)** della casella di dialogo **Trace Properties**.

   Per ulteriori informazioni sui modelli di definizione della traccia e sull'utilizzo di SQL Server Profiler per specificare una traccia lato client, consulta [Database Engine Tuning Advisor](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor) nella documentazione Microsoft..

1. Avvia la traccia lato client e osserva in tempo reale le query SQL che vengono eseguite sull'istanza database.

1. Selezionare **Stop Trace (Arresta traccia)** dal menu **File (File)** quando hai completato la traccia. Salva i risultati in un file o come tabella di traccia sull'istanza database.

# Esecuzione di una traccia lato server su un'istanza database SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.ServerSide"></a>

Scrivere script per la creazione di una traccia lato server può essere complicato e non rientra nell'ambito di questo documento. Questa sezione contiene script che puoi utilizzare come esempio. Come per le tracce lato client, l'obiettivo è creare un file del carico di lavoro o una tabella di traccia che puoi aprire con Database Engine Tuning Advisor.

Di seguito è riportato uno script sintetico di esempio per l'avvio di una traccia lato server e l'acquisizione dei dettagli in un file del carico di lavoro. La traccia viene inizialmente salvata nel file RDSTrace .trc nella directory D:\$1RDSDBDATA\$1Log e viene eseguita il rollover ogni 100 MB, quindi i file di traccia successivi vengono denominati RDSTrace \$11.trc, \$12.trc, ecc. RDSTrace

```
DECLARE @file_name NVARCHAR(245) = 'D:\RDSDBDATA\Log\RDSTrace';
DECLARE @max_file_size BIGINT = 100;
DECLARE @on BIT = 1
DECLARE @rc INT
DECLARE @traceid INT

EXEC @rc = sp_trace_create @traceid OUTPUT, 2, @file_name, @max_file_size
IF (@rc = 0) BEGIN
   EXEC sp_trace_setevent @traceid, 10, 1, @on
   EXEC sp_trace_setevent @traceid, 10, 2, @on
   EXEC sp_trace_setevent @traceid, 10, 3, @on
 . . .
   EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Profiler'
   EXEC sp_trace_setstatus @traceid, 1
   END
```

L'esempio seguente consiste in uno script per l'arresto di una traccia. La traccia creata dallo script precedente continua a essere eseguita finché non la arresti esplicitamente o il processo esaurisce lo spazio su disco.

```
DECLARE @traceid INT
SELECT @traceid = traceid FROM ::fn_trace_getinfo(default) 
WHERE property = 5 AND value = 1 AND traceid <> 1 

IF @traceid IS NOT NULL BEGIN
   EXEC sp_trace_setstatus @traceid, 0
   EXEC sp_trace_setstatus @traceid, 2
END
```

Puoi salvare i risultati di una traccia lato server in una tabella di database e servirti di questa tabella come carico di lavoro per Tuning Advisor utilizzando la funzione fn\$1trace\$1gettable. I comandi seguenti caricano i risultati di tutti i file denominati RDSTrace .trc nella directory D:\$1rdsdbdata\$1Log, inclusi tutti i file di rollover come \$11.trc, in una tabella denominata nel database corrente. RDSTrace RDSTrace 

```
SELECT * INTO RDSTrace
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace.trc', default);
```

Per salvare un file di rollover specifico in una tabella, ad esempio il file RDSTrace \$11.trc, specificate il nome del file di rollover e sostituite 1 invece di default come ultimo parametro di fn\$1trace\$1gettable.

```
SELECT * INTO RDSTrace_1
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace_1.trc', 1);
```

# Esecuzione di Tuning Advisor con una traccia
<a name="Appendix.SQLServer.CommonDBATasks.TuningAdvisor.Running"></a>

Una volta creata una traccia come file locale o tabella di database, puoi eseguire Tuning Advisor sull'istanza database. Per utilizzare Tuning Advisor con Amazon RDS si segue la stessa procedura adottata quando si lavora con un'istanza SQL Server remota standalone. Puoi utilizzare l'interfaccia utente di Tuning Advisor sulla macchina client oppure l'utilità dta.exe dalla riga di comando. In entrambi i casi, devi connetterti all'istanza database Amazon RDS utilizzando il relativo endpoint e fornire il tuo nome utente e la tua password master quando utilizzi Tuning Advisor. 

L'esempio di codice seguente mostra l'uso dell'utilità a riga di comando dta.exe su un'istanza database Amazon RDS con un endpoint **dta.cnazcmklsdei.us-east-1.rds.amazonaws.com**. Nell'esempio sono inclusi il nome utente master **admin** e la password utente master **test**, il database di esempio da sintonizzare è denominato dal computer **C:\$1RDSTrace.trc**. Il codice della riga di comando di esempio specifica una sessione di traccia denominata **RDSTrace1** e i file di output nel computer locale denominati **RDSTrace.sql** per lo script di output SQL, **RDSTrace.txt** per un file dei risultati e **RDSTrace.xml** per un file XML dell'analisi. Nel database RDSDTA è anche specificata una tabella degli errori denominata **RDSTraceErrors**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -if C:\RDSTrace.trc -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors 
```

Ecco il codice della riga di comando di esempio, ma il carico di lavoro di input qui è una tabella nell'istanza Amazon RDS remota denominata **RDSTrace**, che si trova nel database **RDSDTA**.

```
dta -S dta.cnazcmklsdei.us-east-1.rds.amazonaws.com -U admin -P test -D RDSDTA -it RDSDTA.dbo.RDSTrace -s RDSTrace1 -of C:\ RDSTrace.sql -or C:\ RDSTrace.txt -ox C:\ RDSTrace.xml -e RDSDTA.dbo.RDSTraceErrors
```

Per un elenco completo dei parametri della riga di comando dell'utilità dta, consulta [dta Utility](https://docs.microsoft.com/en-us/sql/tools/dta/dta-utility) nella documentazione di Microsoft.

# Modifica di `db_owner` nell’account `rdsa` per il database Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ChangeDBowner"></a>

Quando crei o ripristini un database in un'istanza database di RDS per SQL Server, Amazon RDS imposta il proprietario del database su `rdsa`. Se disponi di una distribuzione Multi-AZ che utilizza SQL Server Database Mirroring (DBM) o Always On Availability Groups ()AGs, Amazon RDS imposta il proprietario del database sull'istanza DB secondaria su. `NT AUTHORITY\SYSTEM` Il proprietario del database secondario non può essere modificato finché l'istanza database secondaria non viene promossa al ruolo principale. Nella maggior parte dei casi, impostare il proprietario del database su `NT AUTHORITY\SYSTEM` non è problematico durante l'esecuzione delle query, tuttavia può generare errori durante l'esecuzione di stored procedure nel sistema, come `sys.sp_updatestats` che richiedono autorizzazioni elevate per l'esecuzione.

È possibile utilizzare la seguente query per identificare il proprietario dei database di proprietà di `NT AUTHORITY\SYSTEM`:

```
SELECT name FROM sys.databases WHERE SUSER_SNAME(owner_sid) = 'NT AUTHORITY\SYSTEM';
```

Puoi utilizzare la stored procedure `rds_changedbowner_to_rdsa` di Amazon RDS per cambiare il proprietario del database in `rdsa`. Non è consentito utilizzare i seguenti database con `rds_changedbowner_to_rdsa`: `master, model, msdb, rdsadmin, rdsadmin_ReportServer, rdsadmin_ReportServerTempDB, SSISDB`.

Per modificare il proprietario del database in `rdsa`, chiama la stored procedure `rds_changedbowner_to_rdsa` e fornisci il nome del database.

**Example di utilizzo:**  

```
exec msdb.dbo.rds_changedbowner_to_rdsa 'TestDB1';
```

Il parametro seguente è obbligatorio:
+ `@db_name`: il nome del database in cui modificare il proprietario del database in `rdsa`.

**Importante**  
Non puoi utilizzare `rds_changedbowner_to_rdsa` per modificare la proprietà di un database con un account di accesso diverso da `rdsa`. Ad esempio, non è possibile modificare la proprietà del nome di accesso con cui è stato creato il database. Per ripristinare l’appartenenza persa al ruolo `db_owner` dell’utente master quando nessun altro utente del database può essere utilizzato per concedere l’appartenenza, reimposta la password dell’utente master per ottenere l’appartenenza al ruolo `db_owner`. Per ulteriori informazioni, consulta [Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).

# Gestione di regole di confronto e set di caratteri per Amazon RDS per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation"></a>

Questo argomento fornisce indicazioni su come gestire regole di confronto e set di caratteri per Microsoft SQL Server in Amazon RDS. Illustra come configurare le regole di confronto durante la creazione del database e come modificarle in un secondo momento, garantendo una corretta gestione dei dati di testo in base ai requisiti linguistici e locali. Descrive inoltre le best practice per mantenere la compatibilità e le prestazioni negli ambienti SQL Server in Amazon RDS.

SQL Server supporta regole di confronto a più livelli. Quando crei l'istanza database, imposti le regole di confronto del server predefinite. Puoi ignorare le regole di confronto nel database, nella tabella o a livello di colonna.

**Topics**
+ [Regola di confronto a livello di server per Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Server)
+ [Regola di confronto a livello di database per Microsoft SQL Server](#Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column)

## Regola di confronto a livello di server per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Server"></a>

Quando crei un'istanza database di Microsoft SQL Server, puoi impostare le regole di confronto del server che desideri utilizzare. Se non scegli regole di confronto diverse, per impostazione predefinita le regole di confronto a livello di server sono SQL\$1Latin1\$1General\$1 \$1CI\$1AS. CP1 Le regole di confronto del server vengono applicate per impostazione predefinita a tutti i database e agli oggetti di database.

**Nota**  
Non è possibile modificare le regole di confronto quando si esegue il ripristino da uno snapshot DB.

Amazon RDS al momento supporta le seguenti regole di confronto del server:


| Collation (Regola di confronto) | Description | 
| --- | --- | 
|  Arabic\$1CI\$1AS  |  Arabo, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Cinese\$1PRC\$1 BIN2  |  Chinese-RPC, ordinamento dei punti di codice binario  | 
|  Chinese\$1PRC\$1CI\$1AS  |  TuChinese\$1PRC, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Chinese\$1Taiwan\$1Stroke\$1CI\$1AS  |  Chinese\$1Taiwan\$1Stroke, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Danish\$1Norwegian\$1CI\$1AS  |  Danese-Norvegese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS  |  Danish-Norwegian, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1KS\$1WS  |  Danish-Norwegian, case-insensitive, accent-sensitive, kanatype-sensitive, width-sensitive  | 
|  Danish\$1Norwegian\$1CI\$1AS\$1WS  |  Danish-Norwegian, case-insensitive, accent-sensitive, kanatype-insensitive, width-sensitive  | 
|  Danish\$1Norwegian\$1CS\$1AI  |  Danish-Norwegian, case-sensitive, accent-insensitive, kanatype-insensitive, width-insensitive  | 
|  Danish\$1Norwegian\$1CS\$1AI\$1KS  |  Danish-Norwegian, case-sensitive, accent-insensitive, kanatype-sensitive, width-insensitive  | 
|  Finnish\$1Swedish\$1100\$1BIN  |  Finnish-Swedish-100, binary sort  | 
|  Finlandese\$1svedese\$1100\$1 BIN2  |  Finnish-Swedish-100, ordinamento binario basato sul confronto dei punti di codice  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AI  |  Finnish-Swedish-100, case-insensitive, accent-insensitive, kanatype-insensitive, width-insensitive  | 
|  Finnish\$1Swedish\$1100\$1CI\$1AS  |  Finnish-Swedish-100, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  Finnish\$1Swedish\$1CI\$1AS  |  Finnish, Swedish, and Swedish (Finland), case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  French\$1CI\$1AS  |  Francese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Greek\$1CI\$1AS  |  Greek, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  Greek\$1CS\$1AS  |  Greek, case-sensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  Hebrew\$1BIN  |  Hebrew, binary sort  | 
|  Hebrew\$1CI\$1AS  |  Ebraico, non sensibile al maiuscolo/minuscolo, sensibile ai caratteri accentati, non sensibile al kana, non sensibile alla larghezza  | 
|  Japanese\$1BIN  | Giapponese, ordinamento binario | 
|  Japanese\$1CI\$1AS  |  Japanese, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive  | 
|  Japanese\$1CS\$1AS  |  Giapponese, con distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS  |  Giapponese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza, caratteri supplementari, senza distinzione della selezione di variazione  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1KS\$1VSS  |  Giapponese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, con distinzione tra tipi di kana, senza distinzione della larghezza, caratteri supplementari, con distinzione della selezione di variazione  | 
|  Japanese\$1XJIS\$1140\$1CI\$1AS\$1VSS  |  Giapponese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza, caratteri supplementari, con distinzione della selezione di variazione  | 
|  Japanese\$1XJIS\$1140\$1CS\$1AS\$1KS\$1WS  |  Giapponese, con distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, con distinzione tra tipi di kana, con distinzione della larghezza, caratteri supplementari, senza distinzione della selezione di variazione  | 
|  Korean\$1Wansung\$1CI\$1AS  |  Coreano-Wansung, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Latin1\$1General\$1100\$1BIN  |  Latin1-General-100, ordinamento binario  | 
|  Latino 1\$1General\$1100\$1 BIN2  |  Latin1-General-100, ordinamento dei punti di codice binario  | 
|  Latino1\$1General\$1100\$1 \$1 BIN2 UTF8  |  Latin1-General-100, ordinamento dei punti di codice binario, con codifica UTF-8  | 
|  Latin1\$1General\$1100\$1CI\$1AS  |  Latin1-General-100, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Latino1\$1General\$1100\$1CI\$1AS\$1SC\$1 UTF8  |  Latin1-General-100, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, caratteri supplementari, con codifica UTF-8  | 
|  Latin1\$1General\$1BIN  |  Latin1-General, ordinamento binario  | 
|  Latin1\$1General\$1 BIN2  |  Latin1-General, ordinamento dei punti di codice binario  | 
|  Latin1\$1General\$1CI\$1AI  |  Latin1-General, senza distinzione tra maiuscole e minuscole, senza distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Latin1\$1General\$1CI\$1AS  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Latin1\$1General\$1CI\$1AS\$1KS  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, con distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Latin1\$1General\$1CS\$1AS  |  Latin1-General, con distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Modern\$1Spanish\$1CI\$1AS  |  Spagnolo-moderno, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Polish\$1CI\$1AS  |  Polacco, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  SQL\$11xCompat\$1 \$1CI\$1AS CP850  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 49 su tabella codici 850 per dati non-Unicode  | 
|  CP1SQL\$1Latin1\$1General\$1 \$1CI\$1AI  |  Latin1-General, senza distinzione tra maiuscole e minuscole, senza distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 54 su tabella codici 1252 per dati non-Unicode  | 
|  **SQL\$1Latin1\$1General\$1 \$1CI\$1AS (impostazione predefinitaCP1)**  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 52 su tabella codici 1252 per dati non-Unicode  | 
|  SQL\$1Latin1\$1General\$1 \$1CS\$1AS CP1  |  Latin1-General, con distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 51 su tabella codici 1252 per dati non-Unicode  | 
|  CP437SQL\$1Latin1\$1General\$1 \$1CI\$1AI  |  Latin1-General, senza distinzione tra maiuscole e minuscole, senza distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 34 su codepage 437 per dati non-Unicode  | 
|  SQL\$1Latin1\$1General\$1 \$1BIN CP850  |  Latin1-General, ordinamento binario per dati Unicode, SQL Server Ordinamento 40 su codepage 850 per dati non-Unicode  | 
|  SQL\$1Latin1\$1generale\$1 \$1 CP850 BIN2  |  Latin1-General, ordinamento dei punti di codice binario per dati Unicode, SQL Server Sort Order 40 on Code Page 850 per dati non-Unicode  | 
|  SQL\$1Latin1\$1Generale\$1 CP850 \$1CI\$1AI  |  Latin1-General, senza distinzione tra maiuscole e minuscole, senza distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 44 su tabella codici 850 per dati non-Unicode  | 
|  CP850SQL\$1Latin1\$1General\$1 \$1CI\$1AS  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 42 su tabella codici 850 per dati non-Unicode  | 
|  SQL\$1Latin1\$1general\$1pref\$1 CP850 \$1CI\$1AS  |  Latin1-General-Pref, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive per dati Unicode, SQL Server Sort Order 183 su tabella codici 850 per dati non-Unicode  | 
|  CP1256SQL\$1Latin1\$1General\$1 \$1CI\$1AS  |  Latin1-General, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza per dati Unicode, Ordinamento SQL Server 146 su tabella codici 1256 per dati non-Unicode  | 
|  CP1255SQL\$1Latin1\$1General\$1 \$1CS\$1AS  |  Latin1-General, case-sensitive, accent-sensitive, kanatype-insensitive, width-insensitive per dati Unicode, SQL Server Sort Order 137 su tabella codici 1255 per dati non-Unicode  | 
|  Thai\$1CI\$1AS  |  Thailandese, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 
|  Turkish\$1CI\$1AS  |  Turco, senza distinzione tra maiuscole e minuscole, con distinzione dei caratteri accentati, senza distinzione tra tipi di kana, senza distinzione della larghezza  | 

È inoltre possibile recuperare l’elenco delle regole di confronto supportate a livello di codice utilizzando AWS CLI:

```
aws rds describe-db-engine-versions --engine sqlserver-ee --list-supported-character-sets --query 'DBEngineVersions[].SupportedCharacterSets[].CharacterSetName' | sort -u
```

Per scegliere le regole di confronto:
+ Se utilizzi la console Amazon RDS, quando crei una nuova istanza database scegli **Additional configuration** (Configurazione aggiuntiva), quindi immetti le regole di confronto nel campo **Collation** (Regole di confronto). Per ulteriori informazioni, consulta [Creazione di un'istanza database Amazon RDS](USER_CreateDBInstance.md). 
+ Se stai usando il, usa l'opzione con il comando. AWS CLI`--character-set-name` `create-db-instance` Per ulteriori informazioni, consulta [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html).
+ Se utilizzi l'API Amazon RDS, scegli il parametro `CharacterSetName` con l'operazione `CreateDBInstance`. Per ulteriori informazioni, consulta [Create DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html).

## Regola di confronto a livello di database per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Collation.Database-Table-Column"></a>

Puoi cambiare la collazione predefinita a livello di database, tabella o colonna sovrascrivendola durante la creazione di un nuovo database o oggetto di database. Ad esempio, se le regole di confronto predefinite del server sono SQL\$1Latin1\$1General\$1 \$1CI\$1AS, puoi cambiarle in CP1 Mohawk\$1100\$1CI\$1AS per il supporto delle regole di confronto Mohawk. Può essere eseguito il cast del tipo anche per gli argomenti di una query, in modo tale da utilizzare una collazione diversa, se necessario.

Ad esempio, la seguente query cambierebbe le regole di confronto predefinite per la colonna AccountName in Mohawk\$1100\$1CI\$1AS

```
CREATE TABLE [dbo].[Account]
	(
	    [AccountID] [nvarchar](10) NOT NULL,
	    [AccountName] [nvarchar](100) COLLATE Mohawk_100_CI_AS NOT NULL 
	) ON [PRIMARY];
```

Il motore di database di Microsoft SQL Server supporta lo standard Unicode tramite i tipi di dati incorporati NCHAR, NVARCHAR e NTEXT. Se ad esempio hai bisogno del supporto CJK, utilizzerai i tipi di dati Unicode per l'archiviazione di caratteri e sovrascriverai la collazione server predefinita durante la creazione di tuoi database e tabelle. Ecco alcuni collegamenti Microsoft a pagine che trattano della collazione e del supporto Unicode per SQL Server:
+ [Utilizzo delle collazioni](http://msdn.microsoft.com/en-us/library/ms187582%28v=sql.105%29.aspx) 
+ [Collazione e terminologia internazionale](http://msdn.microsoft.com/en-us/library/ms143726%28v=sql.105%29) 
+ [Utilizzo delle collazioni per SQL Server](http://msdn.microsoft.com/en-us/library/ms144260%28v=sql.105%29.aspx) 
+ [Considerazioni di carattere internazionale per i database e i motori di database](http://msdn.microsoft.com/en-us/library/ms190245%28v=sql.105%29.aspx)

# Creazione di un utente del database per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CreateUser"></a>

Puoi creare un utente di database per l'istanza database di Amazon RDS for Microsoft SQL Server eseguendo uno script T-SQL come nell'esempio di seguito. Utilizza un'applicazione come SQL Server Management Suite (SSMS). Accedi all'istanza database come l'utente principale creato quando è stata creata l'istanza database.

```
--Initially set context to master database
USE [master];
GO
--Create a server-level login named theirname with password theirpassword
CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
GO
--Set context to msdb database
USE [msdb];
GO
--Create a database user named theirname and link it to server-level login theirname
CREATE USER [theirname] FOR LOGIN [theirname];
GO
```

Per un esempio di aggiunta di un utente di database a un ruolo, consulta [Aggiunta di un utente al ruolo SQLagentUser](SQLServerAgent.AddUser.md).

**Nota**  
Se si ottengono errori di autorizzazione durante l'aggiunta di un utente, è possibile ripristinare i privilegi modificando la password per l'utente principale dell'istanza database. Per ulteriori informazioni, consulta [Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server](Appendix.SQLServer.CommonDBATasks.ResetPassword.md).   
Non è consigliabile clonare le autorizzazioni degli utenti master nelle applicazioni. Per ulteriori informazioni, consulta [How to clone master user permissions in Amazon RDS per SQL Server](https://aws.amazon.com/blogs/database/how-to-clone-master-user-permissions-in-amazon-rds-for-sql-server/).

# Individuazione di un modello di ripristino per il database Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DatabaseRecovery"></a>

In Amazon RDS, modello di ripristino, periodo di retention e stato del database sono correlati.

È importante comprendere le conseguenze prima di apportare una modifiche a una di queste impostazioni. Ogni impostazione può influenzare le altre. Ad esempio:
+ Se modifichi il modello di ripristino del database in SIMPLE o BULK\$1LOGGED quando è abilitata la retention dei backup, Amazon RDS reimposta il modello di ripristino su FULL entro cinque minuti dalla modifica. Questo comporta anche l'acquisizione di uno snapshot dell'istanza database da parte di RDS.
+ Se imposti la retention dei backup su `0`, RDS reimposta la modalità di ripristino su SIMPLE.
+ Se modifichi il modello di ripristino del database da SIMPLE a una qualsiasi altra opzione quando la retention dei backup è impostata su `0` giorni, RDS reimposta il modello di ripristino nuovamente su SIMPLE.

**Importante**  
Non effettuare mai il passaggio del modello di ripristino alle istanze Multi-AZ, sebbene sembri un'operazione che puoi eseguire, —ad esempio, tramite ALTER DATABASE. La retention dei backup e quindi il modello di ripristino su "FULL" (Completo) sono necessari per Multi-AZ. Se modifichi il modello di ripristino, RDS lo reimposta immediatamente su "FULL" (Completo).  
Questa reimpostazione automatica forza RDS a ricreare completamente la replica. Durante il processo di ricreazione, la disponibilità del database viene ridotta per circa 30-90 minuti finché il mirroring non è pronto per il failover. Anche l'istanza database subisce un calo delle prestazioni nello stesso modo in cui avviene durante una conversione da Single-AZ a Multi-AZ. La durata di questo calo delle prestazioni dipende dalle dimensioni di storage —del database: più grande è lo storage archiviato, più a lungo durerà il calo.

Per ulteriori informazioni sui modelli di ripristino di SQL Server, consulta [Modelli di ripristino (SQL Server)](https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server) nella documentazione di Microsoft.

# Individuazione dell’ora dell’ultimo failover per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.LastFailover"></a>

Per determinare l'ora dell'ultimo failover, utilizza la seguente stored procedure:

```
execute msdb.dbo.rds_failover_time;
```

Questa procedura restituisce le seguenti informazioni.


****  

| Parametro di output | Descrizione | 
| --- | --- | 
|  errorlog\$1available\$1from  |  Mostra l'ora in cui i log degli errori sono disponibili nella directory dei log.  | 
|  recent\$1failover\$1time  |  Mostra l'ora dell'ultimo failover, se è disponibile nei log degli errori. In caso contrario mostra `null`.  | 

**Nota**  
La stored procedure esegue la ricerca di tutti i log degli errori di SQL Server disponibili nella directory di log per recuperare l'ora del failover più recente. Se i messaggi di failover sono stati sovrascritti da SQL Server, la procedura non recupera l'ora di failover.

**Example di nessun failover recente**  
Questo esempio mostra l'output quando il log degli errori non contiene alcun failover recente. Nessun failover si è verificato dal 29-04-2020 alle 23:59:00.01.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  null  | 

**Example di failover recente**  
Questo esempio mostra l'output quando il log degli errori contiene un failover. Il failover più recente è stato il 05-05-2020 alle 18:57:51.89.  


| errorlog\$1available\$1from | recent\$1failover\$1time | 
| --- | --- | 
|  2020-04-29 23:59:00.0100000  |  2020-05-05 18:57:51.8900000  | 

# Risoluzione dei problemi di recupero point-in-time dovuti a un divario dei numeri nella sequenza di log
<a name="Appendix.SQLServer.CommonDBATasks.PITR-LSN-Gaps"></a>

Quando si tenta il recupero point-in-time (PITR) in RDS per SQL Server, è possibile che si verifichino errori dovuti a divario dei numeri nella sequenza di log (LSN). Questi divari impediscono a RDS di ripristinare il database all’ora richiesta e RDS colloca l’istanza di ripristino in uno stato `incompatible-restore`.

Le cause comuni di tale problema sono indicate di seguito:
+ Modifiche manuali al modello di ripristino del database.
+ Modifiche automatiche al modello di ripristino da parte di RDS a causa di risorse insufficienti per il completamento dei backup dei log delle transazioni.

Per identificare i divari LSN nel database, esegui questa query:

```
SELECT * FROM msdb.dbo.rds_fn_list_tlog_backup_metadata(database_name)
ORDER BY backup_file_time_utc desc;
```

Se scopri un divario LSN, puoi:
+ Scegliere un punto di ripristino prima del divario LSN.
+ Attendere e ripristinare a un punto dopo il completamento del backup dell’istanza successiva.

Per evitare questo problema, è consigliabile non modificare manualmente il modello di ripristino dei database RDS per SQL Server, poiché ciò interrompe la durabilità dell’istanza. È inoltre consigliabile scegliere un tipo di istanza con risorse sufficienti per il carico di lavoro per garantire backup regolari dei log delle transazioni.

Per ulteriori informazioni sulla gestione dei log delle transazioni, consulta [SQL Server transaction log architecture and management guide](https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-ver16) nella documentazione di Microsoft SQL Server.

# Negare o consentire la visualizzazione dei nomi dei database per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ManageView"></a>

L’utente master non può impostare `DENY VIEW ANY DATABASE TO LOGIN` per nascondere i database a un utente.   Per modificare questa autorizzazione, utilizza invece la seguente stored procedure:
+ Negare l’accesso alla visualizzazione del database a *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission=‘DENY’, @server_principal=‘LOGIN’  
  go
  ```
+ Consentire l’accesso alla visualizzazione del database a *LOGIN*:

  ```
  EXEC msdb.dbo.rds_manage_view_db_permission @permission='GRANT', @server_principal='LOGIN' 
   go
  ```

Quando utilizzi questa stored procedure, tieni presenti le considerazioni riportate di seguito:
+ I nomi dei database sono nascosti agli SSMS e alle DMV interne (viste a gestione dinamica). Tuttavia, i nomi dei database sono ancora visibili nelle tabelle di controllo, log e metadati. Si tratta di autorizzazioni server `VIEW ANY DATABASE` protette. Per ulteriori informazioni, consulta [DENY Server Permissions](https://learn.microsoft.com/en-us/sql/t-sql/statements/deny-server-permissions-transact-sql?view=sql-server-ver16#permissions).
+ Una volta ripristinata l’autorizzazione a `GRANT` (consentita), *LOGIN* può visualizzare tutti i database.
+ Se elimina e ricrea *LOGIN*, l’autorizzazione di visualizzazione relativa al LOGIN viene reimpostata su `ALLOW`.
+ Per le istanze Multi-AZ, imposta l’autorizzazione `GRANT` o `DENY` solo per il *LOGIN* sull’host primario. Le modifiche vengono propagate automaticamente all’host secondario.
+ Questa autorizzazione modifica solo se un login può visualizzare i nomi dei database. Tuttavia, l’accesso ai database e agli oggetti al loro interno vengono gestiti separatamente.

# Disattivazione degli inserti rapidi durante il caricamento in blocco per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DisableFastInserts"></a>

A partire da SQL Server 2016, gli inserimenti rapidi sono abilitati per impostazione predefinita. Gli inserti rapidi sfruttano la registrazione minima che si verifica mentre il database si trova nel modello di recupero con registrazione semplice o in blocco per ottimizzare le prestazioni di inserimento. Con inserti rapidi, ogni batch di carico di massa acquisisce nuove estensioni, ignorando la ricerca di allocazione per le estensioni esistenti con spazio libero disponibile per ottimizzare le prestazioni dell'inserto.

Tuttavia, con carichi di massa di inserti rapidi con piccole dimensioni batch possono portare a un aumento dello spazio inutilizzato consumato dagli oggetti. Se non è possibile aumentare la dimensione del batch, l'abilitazione del flag di traccia 692 può contribuire a ridurre lo spazio riservato inutilizzato, ma a scapito delle prestazioni. L'attivazione di questo flag di traccia disabilita gli inserti rapidi durante il caricamento di massa dei dati in heap o indici cluster.

È possibile attivare il flag di traccia 692 come parametro di avvio utilizzando gruppi di parametri DB. Per ulteriori informazioni, consulta [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

Il flag di traccia 692 è supportato per Amazon RDS su SQL Server 2016 e versioni successive. Per ulteriori informazioni sui flag di traccia, vedere [DBCC TRACEON - Trace Flags](https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql) nella documentazione di Microsoft.

# Eliminazione di un database in un’istanza database Amazon RDS per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.DropMirrorDB"></a>

Puoi rimuovere un database su un'istanza database Amazon RDS che esegue Microsoft SQL Server in un'implementazione Single-AZ o Multi-AZ. Per rimuovere il database, utilizzare il seguente comando:

```
--replace your-database-name with the name of the database you want to drop
EXECUTE msdb.dbo.rds_drop_database  N'your-database-name'
```

**Nota**  
Utilizza virgolette singole diritte nel comando. In caso contrario, si verifica un errore.

Dopo aver utilizzato questa procedura per la rimozione del database, Amazon RDS rimuove tutte le connessioni al database esistenti e la cronologia dei backup del database.

Per concedere l’autorizzazione per il backup e il ripristino ad altri utenti, segui questa procedura:

```
USE master
GO
CREATE LOGIN user1 WITH PASSWORD=N'changeThis', DEFAULT_DATABASE=master, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE msdb
GO
CREATE USER user1 FOR LOGIN user1
GO
use msdb
GO
GRANT EXECUTE ON msdb.dbo.rds_backup_database TO user1
GO
GRANT EXECUTE ON msdb.dbo.rds_restore_database TO user1
GO
```

# Ridenominazione di un database Amazon RDS per Microsoft SQL Server in un’implementazione Multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.RenamingDB"></a>

Per assegnare un nuovo nome a un'istanza database Microsoft SQL Server che utilizza Multi-AZ, utilizzare la procedura seguente:

1. Innanzitutto, disattivare Multi-AZ per l'istanza database.

1. Rinomina il database eseguendo `rdsadmin.dbo.rds_modify_db_name`.

1. Quindi, attiva il mirroring Multi-AZ o i gruppi di disponibilità AlwaysON per l'istanza database, per riportarla nel suo stato originario.

Per ulteriori informazioni, consulta [Aggiunta di Multi-AZ a un'istanza database di Microsoft SQL Server](USER_SQLServerMultiAZ.md#USER_SQLServerMultiAZ.Adding). 

**Nota**  
Se l'istanza non utilizza Multi-AZ, non è necessario modificare alcuna impostazione prima o dopo aver eseguito `rdsadmin.dbo.rds_modify_db_name`.  
Non è possibile rinominare un database su un’istanza sorgente di replica in lettura.

**Esempio: **nell'esempio seguente la stored procedure `rdsadmin.dbo.rds_modify_db_name` rinomina un database da **MOO** a **ZAR**. Ciò equivale all'esecuzione dell'istruzione `DDL ALTER DATABASE [MOO] MODIFY NAME = [ZAR]`. 

```
EXEC rdsadmin.dbo.rds_modify_db_name N'MOO', N'ZAR'
GO
```

# Reimpostazione dell’appartenenza al ruolo db\$1owner per l’utente master per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.ResetPassword"></a>

Se impedisci all’utente master di accedere al ruolo `db_owner` nel database RDS per SQL Server e nessun altro utente del database può concedere l’appartenenza, puoi ripristinare l’appartenenza persa modificando la password dell’utente master dell’istanza database. 

Modificando la password dell’utente master dell’istanza database, RDS concede l’appartenenza `db_owner` ai database dell’istanza database che potrebbe essere stata revocata accidentalmente. Puoi modificare la password dell'istanza DB utilizzando la console Amazon RDS, il AWS CLI comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)o utilizzando l'operazione [Modify DBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API. Per ulteriori informazioni sulla modifica di un'istanza database, consulta [Modifica di un'istanza database Amazon RDS](Overview.DBInstance.Modifying.md).

# Ripristino di istanze database terminate in base alla licenza per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.RestoreLTI"></a>

Microsoft ha richiesto che alcuni clienti Amazon RDS che non hanno segnalato le proprie informazioni sulla mobilità delle licenze Microsoft interrompano la propria istanza database. Amazon RDS acquisisce snapshot di queste istanze database ed è possibile eseguire il ripristino dallo snapshot in una nuova istanza database con il modello con licenza inclusa. 

Puoi eseguire il ripristino da una snapshot di Standard Edition creando un'istanza Standard Edition o Enterprise Edition. 

Puoi eseguire il ripristino da una snapshot di Enterprise Edition creando un'istanza Standard Edition o Enterprise Edition. 

**Per eseguire il ripristino da una snapshot SQL Server dopo che Amazon RDS ha creato una snapshot finale dell'istanza**

1. Accedi a Console di gestione AWS e apri la console Amazon RDS all'indirizzo [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Nel pannello di navigazione, selezionare **Snapshots (Snapshot)**.

1. Selezionare lo snapshot dell'istanza database SQL Server. Amazon RDS crea uno snapshot finale dell'istanza database. Il nome della snapshot dell'istanza terminata è nel formato `instance_name-final-snapshot`. Ad esempio, se il nome dell'istanza DB è**mytest.cdxgahslksma.us-east-1.rds.com**, lo snapshot finale viene chiamato ** mytest-final-snapshot** e si trova nella stessa AWS regione dell'istanza DB originale. 

1. Per **Actions (Operazioni)**, selezionare **Restore Snapshot (Ripristina snapshot)**.

   Viene visualizzata la pagina **Restore DB Instance (Ripristina istanza database)**.

1. Per **License Model (Modello di licenza)**, scegliere **license-included (licenza inclusa)**. 

1. Scegliere il motore di database di SQL Server che si desidera utilizzare. 

1. Per **DB Instance Identifier (Identificatore istanze database)**, inserire il nome per l'istanza database ripristinata. 

1. Selezionare **Restore DB Instance (Ripristina istanza database)**.

Per ulteriori informazioni sul ripristino da una snapshot, consulta [Ripristino in un’istanza database](USER_RestoreFromSnapshot.md). 

# Transizione di un database Amazon RDS per SQL Server da OFFLINE a ONLINE
<a name="Appendix.SQLServer.CommonDBATasks.TransitionOnline"></a>

Puoi far passare il database Microsoft SQL Server in un'istanza database Amazon RDS da `OFFLINE` a `ONLINE`. 


****  

| Metodo SQL Server | Metodo Amazon RDS | 
| --- | --- | 
| MODIFICARE IL DATABASE *db\$1name* IMPOSTATO ONLINE; | ESEGUE rdsadmin.dbo.rds\$1set\$1database\$1online *db\$1name* | 

# Utilizzo di Change Data Capture per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.CDC"></a>

Amazon RDS supporta Change Data Capture (CDC) per le istanze di database che eseguono Microsoft SQL Server. CDC "cattura" le modifiche effettuate ai dati delle tue tabelle. Memorizza i metadati di ogni modifica, ai quali potrai accedere successivamente. Per ulteriori informazioni sul funzionamento di CDC, consulta [Change Data Capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) nella documentazione di Microsoft. Prima di usare CDC con le istanze database Amazon RDS, abilitalo nel database eseguendo `msdb.dbo.rds_cdc_enable_db`. Dopo l'abilitazione di CDC, qualsiasi utente che sia `db_owner` del database interessato può abilitare o disabilitare CDC sulle tabelle di tale database.

**Importante**  
Durante i ripristini, CDC verrà disabilitata. Tutti i metadati correlati saranno rimossi automaticamente dal database. Questo vale per i ripristini e point-in-time i ripristini delle istantanee. Dopo l'esecuzione di uno di questi tipi di ripristino, puoi riabilitare CDC e specificare di nuovo le tabelle da monitorare.

Per abilitare CDC per un'istanza DB, esegui la procedura archiviata `msdb.dbo.rds_cdc_enable_db`.

```
1. exec msdb.dbo.rds_cdc_enable_db 'database_name'
```

Per disabilitare CDC per un'istanza DB, esegui la procedura archiviata `msdb.dbo.rds_cdc_disable_db`.

```
1. exec msdb.dbo.rds_cdc_disable_db 'database_name'
```

Utilizza la procedura seguente per concedere le autorizzazioni CDC a un utente:

```
1. go
2. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_enable_db TO User1
3. 		GRANT EXECUTE ON msdb.dbo.rds_cdc_disable_db TO User1
```

**Topics**
+ [Monitoraggio di tabelle con Change Data Capture](#Appendix.SQLServer.CommonDBATasks.CDC.tables)
+ [Processi di Change Data Capture](#Appendix.SQLServer.CommonDBATasks.CDC.jobs)
+ [Change Data Capture per istanze Multi-AZ](#Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ)

## Monitoraggio di tabelle con Change Data Capture
<a name="Appendix.SQLServer.CommonDBATasks.CDC.tables"></a>

Dopo l'abilitazione di CDC sul database, puoi iniziare a monitorare specifiche tabelle. Puoi scegliere le tabelle da monitorare eseguendo [sys.sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql).

```
 1. --Begin tracking a table
 2. exec sys.sp_cdc_enable_table   
 3.    @source_schema           = N'source_schema'
 4. ,  @source_name             = N'source_name'
 5. ,  @role_name               = N'role_name'
 6. 
 7. --The following parameters are optional:
 8.  
 9. --, @capture_instance       = 'capture_instance'
10. --, @supports_net_changes   = supports_net_changes
11. --, @index_name             = 'index_name'
12. --, @captured_column_list   = 'captured_column_list'
13. --, @filegroup_name         = 'filegroup_name'
14. --, @allow_partition_switch = 'allow_partition_switch'
15. ;
```

Per visualizzare la configurazione CDC per le tue tabelle, esegui [sys.sp\$1cdc\$1help\$1change\$1data\$1capture](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-help-change-data-capture-transact-sql).

```
1. --View CDC configuration
2. exec sys.sp_cdc_help_change_data_capture 
3. 
4. --The following parameters are optional and must be used together.
5. --  'schema_name', 'table_name'
6. ;
```

Per ulteriori informazioni sulle tabelle, funzioni e procedure memorizzate di CDC riportate nella documentazione di SQL Server, consulta le sezioni seguenti:
+ [Procedure memorizzate di Change Data Capture (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/change-data-capture-stored-procedures-transact-sql)
+ [Funzioni di Change Data Capture (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-data-capture-functions-transact-sql)
+ [Tabelle di Change Data Capture (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/change-data-capture-tables-transact-sql)

## Processi di Change Data Capture
<a name="Appendix.SQLServer.CommonDBATasks.CDC.jobs"></a>

Quando abiliti CDC, SQL Server crea i relativi processi. I proprietari del database (`db_owner`) possono visualizzare, creare, modificare ed eliminare i processi di CDC. Tuttavia, l'account di sistema di RDS è il proprietario di tali processi. Pertanto, i processi non sono visibili per le viste e le procedure native o da SQL Server Management Studio.

Per controllare il comportamento di CDC in un database, utilizza procedure SQL Server native come [sp\$1cdc\$1enable\$1table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql) e [sp\$1cdc\$1start\$1job ](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-start-job-transact-sql). Per modificare i parametri di un'attività di CDC, ad esempio `maxtrans` e `maxscans`, puoi utilizzare [sp\$1cdc\$1change\$1jobs. ](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

Per ulteriori informazioni sui processi di CDC, puoi interrogare le seguenti viste a gestione dinamica: 
+ sys.dm\$1cdc\$1errors
+ sys.dm\$1cdc\$1log\$1scan\$1sessions
+ sysjobs
+ sysjobhistory

## Change Data Capture per istanze Multi-AZ
<a name="Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ"></a>

Se utilizzi CDC su un'istanza Multi-AZ, assicurati che la configurazione del processo di CDC del server mirror corrisponda a quella del server principale. I processi di CDC sono mappati in `database_id`. Se IDs il database secondario è diverso da quello principale, i job non verranno associati al database corretto. Per prevenire gli errori dopo un failover, RDS elimina e ricrea i processi sul nuovo server principale. I processi così ricreati utilizzano i parametri registrati dal server principale prima del failover.

Anche se questa procedura si svolge rapidamente, può sempre accadere che i processi di CDC vengano eseguiti prima che RDS possa correggerli. Di seguito sono descritti tre modi per forzare i parametri affinché siano coerenti tra le repliche principali e secondarie:
+ Usa gli stessi parametri di processo per tutti i database con CDC abilitata. 
+ Prima di modificare la configurazione di un processo di CDC, converti l'istanza Multi-AZ in Single-AZ.
+ Trasferisci i parametri manualmente ogni volta che li modifichi sul server principale.

Per visualizzare e definire i parametri CDC utilizzati per ricreare i processi di CDC dopo un failover, utilizza `rds_show_configuration` e `rds_set_configuration`.

L'esempio seguente restituisce il valore impostato per `cdc_capture_maxtrans`. RDS configura automaticamente il valore di qualsiasi parametro impostato su `RDS_DEFAULT`.

```
-- Show configuration for each parameter on either primary and secondary replicas. 
exec rdsadmin.dbo.rds_show_configuration 'cdc_capture_maxtrans';
```

Per impostare la configurazione sul secondario, eseguire `rdsadmin.dbo.rds_set_configuration`. Questa procedura imposta i valori del parametro per tutti i database sul server secondario. Queste impostazioni vengono utilizzate solo dopo un failover. L'esempio seguente imposta tutti `maxtrans` i processi di acquisizione CDC su*1000*:

```
--To set values on secondary. These are used after failover.
exec rdsadmin.dbo.rds_set_configuration 'cdc_capture_maxtrans', 1000;
```

Per impostare i parametri di un'attività di CDC sul server principale, utilizza [sys.sp\$1cdc\$1change\$1job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).

# Utilizzo di SQL Server Agent per Amazon RDS
<a name="Appendix.SQLServer.CommonDBATasks.Agent"></a>

Con Amazon RDS puoi utilizzare SQL Server Agent su un'istanza database che esegue Microsoft SQL Server Enterprise Edition, Standard Edition o Web Edition. SQL Server Agent è un servizio di Microsoft Windows che esegue attività pianificate di amministrazione, dette processi. Puoi utilizzare SQL Server Agent per eseguire processi T-SQL che ricostruiscono indici, eseguono controlli anticorruzione e aggregano i dati in un'istanza database SQL Server.

Quando crei un'istanza database SQL Server, l'utente master è iscritto nel ruolo `SQLAgentUserRole`.

SQL Server Agent può eseguire un processo pianificato, in risposta a un evento specifico, oppure su richiesta. Per ulteriori informazioni, consulta [SQL Server Agent](http://msdn.microsoft.com/en-us/library/ms189237) nella documentazione Microsoft.

**Nota**  
Evita di pianificare i processi da eseguire durante le finestre di manutenzione e backup per l'istanza DB. I processi di manutenzione e backup che vengono avviati da AWS potrebbero interrompere un processo o causarne l'annullamento.  
Nelle distribuzioni Multi-AZ, i processi di SQL Server Agent vengono replicati dall'host principale all'host secondario quando la funzionalità di replica del processo è attivata. Per ulteriori informazioni, consulta [Attivazione della replica di processo SQL Server Agent](#SQLServerAgent.Replicate).  
Le implementazioni multi-AZ hanno un limite di 10.000 processi di SQL Server Agent. Se sono necessari limiti superiori, richiedere un aumento contattando Supporto. Aprire la pagina del [Centro di supporto Supporto AWS](https://console.aws.amazon.com/support/home#/) effettuando l'accesso se necessario, quindi selezionare **Crea caso**. Selezionare **Service limit increase (Aumento limiti del servizio)**. Compilare e inviare il modulo.

Per visualizzare la cronologia di uno specifico processo di SQL Server Agent in SQL Server Management Studio (SSMS), apri Object Explorer, fai clic con il pulsante destro del mouse sul processo e seleziona **View History (Visualizza cronologia)**.

Poiché SQL Server Agent è in esecuzione su un host gestito in un'istanza DB, alcune azioni non sono supportate:
+ L'esecuzione di processi di replica e di script da riga di comando con ActiveX, la shell dei comandi di Windows o con Windows PowerShell non è supportata.
+ Non è possibile avviare, arrestare o riavviare manualmente SQL Server Agent.
+ Le notifiche e-mail tramite SQL Server Agent non sono disponibili da un'istanza database.
+ Gli avvisi e gli operatori di SQL Server Agent non sono supportati.
+ L'utilizzo di SQL Server Agent per creare backup non è supportato. Utilizza Amazon RDS per il backup dell'istanza database.
+ Attualmente, RDS per SQL Server non supporta l’utilizzo di token SQL Server Agent.

## Attivazione della replica di processo SQL Server Agent
<a name="SQLServerAgent.Replicate"></a>

È possibile attivare la replica dei processi SQL Server Agent utilizzando la seguente stored procedure:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';
```

È possibile eseguire la stored procedure su tutte le versioni di SQL Server supportate da Amazon RDS for SQL Server. I processi vengono replicati nelle seguenti categorie:
+ [Senza categoria (locale)]
+ [Senza categoria (multi-server)]
+ [Senza categoria]
+ Raccoglitore di dati
+ Tuning Advisor del motore del database
+ Manutenzione database
+ Full text

Vengono replicati solo i processi che utilizzano i passaggi del processo T-SQL. I processi con tipi di passaggi quali SQL Server Integration Services (SSIS), SQL Server Reporting Service (SSRS), Replication e PowerShell non vengono replicati. I processi che utilizzano Database Mail e gli oggetti a livello di server non vengono replicati.

**Importante**  
L'host principale è l'origine della replica. Prima di attivare la replica di processo, assicurarsi che i processi SQL Server Agent siano sul principale. In caso contrario, è possibile che i processi SQL Server Agent vengano eliminati se la funzionalità viene attivata quando i processi più recenti si trovano sull'host secondario.

Utilizza la seguente funzione per verificare se la replica è attivata.

```
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
```

 Se i processi di SQL Server Agent sono in fase di replica, la query T-SQL restituisce quanto segue. Se i processi non si stanno replicando, non restituisce nulla per `object_class`.

![\[I processi SQL Server Agent sono in fase di replica\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQLAgentJob.png)


È possibile utilizzare la seguente funzione per trovare l'ultima volta che gli oggetti sono stati sincronizzati in base al fuso orario UTC.

```
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
```

Supponi, ad esempio, di modificare un processo SQL Server Agent all'01:00. Prevedi che l'orario di sincronizzazione più recente sia dopo l'01:00, il che suggerisce che la sincronizzazione è avvenuta.

Dopo la sincronizzazione, i valori restituiti per `date_created` e `date_modified` sul nodo secondario dovrebbero corrispondere.

![\[L'ultima volta che gli oggetti server sono stati sincronizzati è stato alle 01:21:23\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/SQLAgentJob_last_sync_time.png)


Se utilizzi anche la replica `tempdb`, puoi abilitare la replica sia per i processi di SQL Agent sia per la configurazione di `tempdb` specificandoli nel parametro `@object_type`:

```
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
```

Per ulteriori informazioni sulla replica `tempdb`, consulta [Configurazione di TempDB per le implementazioni Multi-AZ](SQLServer.TempDB.MAZ.md).

# Ruoli di SQL Server Agent
<a name="SQLServerAgent.AgentRoles"></a>

RDS per SQL Server supporta i seguenti ruoli di SQL Server Agent con diversi livelli di autorizzazioni per la gestione dei processi:
+ **SQLAgentUserRole**

  Autorizzazioni
  + Creare e gestire i propri processi, programmi e operatori
  + Visualizzare le proprietà dei propri processi e programmi
  + Non è possibile visualizzare o gestire i processi creati da altri utenti

  Questo ruolo è adatto agli utenti che devono creare e gestire i propri processi ma non richiedono l’accesso ai processi creati da altri utenti.
+ **SQLAgentReaderRole**

  Autorizzazioni
  + Tutte le autorizzazioni di SQLAgentUserRole
  + Visualizzare un elenco di tutti i processi e programmi, inclusi quelli creati da altri
  + Visualizzare le proprietà di tutti i processi
  + Rivedere la cronologia dei processi

  Questo ruolo è adatto agli utenti che devono monitorare lo stato di tutti i processi ma non devono gestirli.
+ **SQLAgentOperatorRole**

  Autorizzazioni
  + Tutte le autorizzazioni di SQLAgentUserRole e SQLAgentReaderRole
  + Eseguire, arrestare o avviare i processi
  + Gestire la cronologia dei processi
  + Abilitare/disabilitare processi e programmi
  + Visualizzare operatori e proxy

  Questo ruolo fornisce le autorizzazioni più estese ed è adatto agli utenti che devono avere il pieno controllo su tutti i processi.

Utilizza il comando seguente per assegnare i ruoli al tuo accesso SQL Server:

```
USE msdb;
EXEC sp_addrolemember 'SQLAgentOperatorRole', 'username';
```

## Gestione di SQLAgentOperatorRole in RDS per SQL Server
<a name="SQLServerAgent.AgentRoles.ManageSQLAgentOperatorRole"></a>

Per visualizzare i processi correnti, è necessario aggiungere SQLAgentOperatorRole all’accesso SQL Server e rimuoverlo prima di disconnettersi dal database.

Per visualizzare la struttura ad albero di SQL Server Agent in SQL Server Management Studio, segui queste istruzioni:

**Visualizzazione di SQL Server Agent in SQL Server Management Studio (SSMS)**

1. Utilizzando le credenziali di utente master RDS, accedi all’istanza RDS per SQL Server e concedi all’utente desiderato il ruolo SQLAgentUserRole.

   ```
   USE msdb
   GO
   IF NOT EXISTS(SELECT name FROM sys.database_principals WHERE name = 'UserName')
   BEGIN
   CREATE USER UserName FROM LOGIN UserName
   END
   GO
   ALTER ROLE SQLAgentUserRole ADD MEMBER UserName
   GO
   GRANT ALTER ON ROLE::[SQLAgentOperatorRole] to UserName
   GO
   ```

   Questi comandi creano l’utente nel database `msdb`, nel caso in cui non esista. Aggiungono inoltre l’utente in SQLAgentUserRole, in modo da rendere visibile la struttura ad albero di SQL Server Agent in SSMS. Infine, concedono all’utente le autorizzazioni di modifica sul ruolo SQLAgentOperatorRole. In questo modo, l’utente può aggiungere/rimuovere se stesso da tale ruolo. 

1. Per aggiungerti a questo ruolo, connettiti all’istanza RDS per SQL Server come utente che deve visualizzare i processi ed esegui lo script seguente.

   ```
   use msdb
   go
   ALTER ROLE SQLAgentOperatorRole ADD MEMBER UserName
   GO
   ```

   Quindi, fai clic con il pulsante destro del mouse sulla cartella **Processi** e scegli **Aggiorna**.

1. Quando esegui questa azione, nella scheda **Processi** viene visualizzato il pulsante **\$1** (più). Fai clic per espandere l’elenco dei processi di SQL Server Agent.

1. 
**Importante**  
Prima di disconnetterti dall’istanza RDS per SQL Server, devi rimuoverti da SQLAgentOperatorRole.

   Per rimuovere il tuo accesso da SQLAgentOperatorRole, esegui la seguente query prima di disconnetterti o chiudere Management Studio:

   ```
   USE msdb
   GO
   ALTER ROLE SQLAgentOperatorRole DROP MEMBER UserName
   GO
   ```

Per ulteriori informazioni, consulta [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

# Aggiunta di un utente al ruolo SQLagentUser
<a name="SQLServerAgent.AddUser"></a>

Per consentire un ulteriore accesso o utilizzo utente di SQL Server Agent, accedi come utente master ed esegui le operazioni seguenti.

1. Creazione di un altro login a livello di server con il comando `CREATE LOGIN`.

1. Creazione di un utente in `msdb` con il comando `CREATE USER` e collegamento di questo utente alle credenziali di accesso create nella fase precedente.

1. Aggiunta dell'utente al `SQLAgentUserRole` utilizzando la procedura memorizzata di sistema `sp_addrolemember`.

Supponi, ad esempio, che il tuo nome utente master sia **admin** e di voler concedere l'accesso a SQL Server Agent a un utente denominato **theirname** con una password **theirpassword**. In tal caso, puoi utilizzare la seguente procedura.

**Per aggiungere un utente al ruolo SQLAgentUser**

1. Accedi come utente master.

1. Esegui i comandi seguenti:

   ```
   --Initially set context to master database
   USE [master];
   GO
   --Create a server-level login named theirname with password theirpassword
   CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword';
   GO
   --Set context to msdb database
   USE [msdb];
   GO
   --Create a database user named theirname and link it to server-level login theirname
   CREATE USER [theirname] FOR LOGIN [theirname];
   GO
   --Added database user theirname in msdb to SQLAgentUserRole in msdb
   EXEC sp_addrolemember [SQLAgentUserRole], [theirname];
   ```

# Eliminazione di un processo SQL Server Agent
<a name="SQLServerAgent.DeleteJob"></a>

Puoi utilizzare la procedura archiviata `sp_delete_job` per eliminare i processi di SQL Server Agent su Amazon RDS for Microsoft SQL Server.

Non è possibile utilizzare SSMS per eliminare i processi di SQL Server Agent. Se provi a farlo, riceverai un messaggio di errore simile al seguente:

```
The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.
```

Come servizio gestito, a RDS viene impedita l'esecuzione di procedure che accedono al registro di Windows. Quando si utilizza SSMS, tenta di eseguire un processo (`xp_regread`) per il quale RDS non è autorizzato.

**Nota**  
In RDS per SQL Server, solo i membri del ruolo sysadmin possono aggiornare o eliminare i processi di proprietà di un account di accesso diverso. Per ulteriori informazioni, consulta [Leveraging SQLAgentOperatorRole in RDS SQL Server](https://aws.amazon.com/blogs/database/leveraging-sqlagentoperatorrole-in-rds-sql-server/).

**Per eliminare un processo di SQL Server Agent**
+ Eseguire la seguente istruzione T-SQL:

  ```
  EXEC msdb..sp_delete_job @job_name = 'job_name';
  ```

# Utilizzo dei log di Amazon RDS per Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.Logs"></a>

Puoi utilizzare la console Amazon RDS per visualizzare, monitorare e scaricare i log di SQL Server Agent, Microsoft SQL Server e SQL Server Reporting Services (SSRS).

## Monitoraggio dei file di log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Watch"></a>

Se visualizzi un log nella console Amazon RDS, puoi visualizzarne i contenuti così come si presentano in quel momento. I log monitorati nella console vengono aperti in una modalità dinamica che ti consente di visualizzarne gli aggiornamenti in tempo quasi reale.

Solo l'ultimo log può essere monitorato. Supponiamo, ad esempio, che ti vengano mostrati i log seguenti:

![\[Un’immagine della sezione Log della console Amazon RDS con un log degli errore selezionato.\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/UserGuide/images/logs_sqlserver.png)


Solo il log/ERROR viene aggiornato attivamente, essendo il più recente. Puoi scegliere di monitorare altri log, ma questi sono statici e non si aggiornano.

## Archiviazione dei file di log
<a name="Appendix.SQLServer.CommonDBATasks.Logs.Archive"></a>

La console Amazon RDS mostra i log relativi all'ultima settimana fino alla giornata corrente. Puoi scaricare e archiviare i log per conservarli come riferimento dopo tale periodo. Uno dei modi per archiviare i log consiste nel caricarli in un bucket Amazon S3. Per istruzioni su come configurare un bucket Amazon S3 e caricare un file, consulta le [nozioni di base su Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AmazonS3Basics.html) nella *Guida alle operazioni di base di Amazon Simple Storage Service* e fai clic su **Get Started (Inizia)**. 

## Visualizzazione dei log dell'agente e degli errori
<a name="Appendix.SQLServer.CommonDBATasks.Logs.SP"></a>

Per visualizzare i log dell'agente e degli errori di Microsoft SQL Server, usa la stored procedure `rds_read_error_log` in Amazon RDS con i parametri seguenti: 
+ **`@index`** – Versione del log da recuperare. Il valore predefinito è 0 (recupero del log degli errori corrente). Specifica 1 per recuperare il log precedente, 2 per recuperare il log ancora precedente e così via. 
+ **`@type`** – Tipo del log da recuperare. Specifica 1 per recuperare un log degli errori. Specifica 2 per recuperare un log degli agenti. 

**Example**  
Nell'esempio seguente viene richiesto il log degli errori corrente.  

```
EXEC rdsadmin.dbo.rds_read_error_log @index = 0, @type = 1;
```

Per ulteriori informazioni sugli errori di SQL Server, consulta [Errori del motore di database](https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors) nella documentazione Microsoft.

# Utilizzo di file di traccia e file dump per Amazon RDS per SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles"></a>

In questa sezione viene descritto l'utilizzo dei file di traccia e dei file dump per le istanze database Amazon RDS che eseguono Microsoft SQL Server. 

## Generazione di una query SQL di traccia
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.TraceSQLQuery"></a>

```
1. declare @rc int 
2. declare @TraceID int 
3. declare @maxfilesize bigint 
4. 
5. set @maxfilesize = 5
6. 
7. exec @rc = sp_trace_create @TraceID output,  0, N'D:\rdsdbdata\log\rdstest', @maxfilesize, NULL
```

## Visualizzazione di una traccia aperta
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewOpenTrace"></a>

```
1. select * from ::fn_trace_getinfo(default)
```

## Visualizzazione dei contenuti della traccia
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.ViewTraceContents"></a>

```
1. select * from ::fn_trace_gettable('D:\rdsdbdata\log\rdstest.trc', default)
```

## Impostazione del periodo di retention dei file di traccia e dei file dump
<a name="Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles"></a>

I file di traccia e i file dump possono accumularsi e occupare spazio su disco. Per impostazione predefinita, Amazon RDS elimina i file di traccia e i file dump che risalgono a più di sette giorni prima. 

Per visualizzare il periodo di retention corrente dei file di traccia e dei file dump, utilizza la procedura `rds_show_configuration`, come illustrato nell'esempio seguente. 

```
1. exec rdsadmin..rds_show_configuration;
```

Per modificare il periodo di retention dei file di traccia, utilizza la procedura `rds_set_configuration` e imposta `tracefile retention` in minuti. L'esempio seguente imposta il periodo di retention dei file di traccia su 24 ore. 

```
1. exec rdsadmin..rds_set_configuration 'tracefile retention', 1440; 
```

Per modificare il periodo di retention dei file dump, utilizza la procedura `rds_set_configuration` e imposta `dumpfile retention` in minuti. L'esempio seguente imposta il periodo di retention del file dump su 3 giorni. 

```
1. exec rdsadmin..rds_set_configuration 'dumpfile retention', 4320; 
```

Per motivi di sicurezza, non puoi eliminare una traccia o un file dump specifici su un'istanza database SQL Server. Per modificare tutti i file di traccia o i file dump inutilizzati, imposta il periodo di retention dei file su 0. 