

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

# Utilizzo di 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);
```