

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 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 di istantanee e i ripristini point-in-time. 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)
+ [Modifica l'acquisizione dei dati per Multi-AZ istanze](#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\_cdc\_enable\_table](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\_cdc\_help\_change\_data\_capture](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:
+ [Modifica delle procedure memorizzate di acquisizione dei dati () Transact-SQL](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/change-data-capture-stored-procedures-transact-sql)
+ [Modifica delle funzioni di acquisizione dei dati (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-data-capture-functions-transact-sql)
+ [Modifica le tabelle di acquisizione dati (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\_cdc\_enable\_table](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql) e [sp\_cdc\_start\_job ](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\_cdc\_change\_jobs. ](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\_cdc\_errors
+ sys.dm\_cdc\_log\_scan\_sessions
+ sysjobs
+ sysjobhistory

## Modifica l'acquisizione dei dati per Multi-AZ istanze
<a name="Appendix.SQLServer.CommonDBATasks.CDC.Multi-AZ"></a>

Se utilizzi CDC su un' Multi-AZ istanza, assicurati che la configurazione del job CDC del mirror corrisponda a quella dell'istanza principale. I processi di CDC sono mappati in `database_id`. Se gli ID database sul secondario sono diversi da quelli del principale, i processi 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 del lavoro CDC, converti l' Multi-AZ istanza 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\_cdc\_change\_job](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-change-job-transact-sql).