

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

# Supporto dell’acquisizione dei dati di modifica (CDC) con RDS Custom per SQL Server
<a name="custom-sqlserver-features.cdc"></a>

## Panoramica di
<a name="custom-sqlserver-features.cdc.overview"></a>

RDS Custom per SQL Server fornisce supporto nativo per l’acquisizione dei dati di modifica (CDC), che consente di monitorare e acquisire le modifiche ai dati nelle tabelle di SQL Server. CDC archivia metadati dettagliati su queste modifiche per successive operazioni di recupero e analisi. Per ulteriori informazioni sulla funzionalità CDC, consulta [Change Data Capture](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/track-data-changes-sql-server#Capture) nella documentazione Microsoft.

L’operazione CDC in SQL Server richiede la corrispondenza di valori tra il *server locale* (che ha `server_id` = 0) in `sys.servers` e gli identificatori `SERVERPROPERTY('ServerName')`. RDS Custom per SQL Server mantiene automaticamente questa sincronizzazione per tutto il ciclo di vita dell’istanza per garantire il funzionamento continuo di CDC anche se gli host vengono sostituiti durante le operazioni di manutenzione o ripristino.

**Importante**  
Dopo il failover di un' Multi-AZ istanza, la `SERVERPROPERTY('Servername')` funzione riflette automaticamente le modifiche al network/computer nome. Tuttavia, la funzione `@@SERVERNAME` mantiene il nome precedente del server fino al riavvio del servizio `MSSQLSERVER`. Una query @@SERVERNAME restituisce il nome precedente del server dopo un failover. Per ottenere il nome esatto del server dopo un failover, utilizza la seguente query SQL:  

```
SELECT name FROM sys.servers WHERE server_id=0
```
Questa query fornisce le informazioni più aggiornate sul nome del server senza richiedere il riavvio del servizio.

## Disponibilità di regioni e versioni
<a name="custom-sqlserver-features.cdc.regionAvail"></a>

La funzionalità CDC è supportata Regioni AWS ovunque sia disponibile RDS Custom per SQL Server, per tutte le versioni di SQL Server supportate da RDS Custom. Per ulteriori informazioni sulle versioni supportate e la disponibilità nelle Regioni di RDS Custom per SQL Server, consulta [Regioni e motori di database supportati per RDS Custom per SQL Server](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.md#Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSCustom.sq).

## Requisiti e limitazioni
<a name="custom-sqlserver-features.cdc.reqsLims"></a>

Durante l’implementazione di CDC su RDS Custom per SQL Server, tieni in considerazione questi aspetti chiave:
+ Se si imposta manualmente il *server `@@SERVERNAME` and/or locale* `sys.servers` per utilizzare funzionalità come MS Replication, se il valore del server locale (che include`server_id = 0`) `sys.servers` è impostato su un formato corrispondente `*.rds.amazonaws.com` oppure`*.awsrds.*.com`, RDS Custom for SQL Server non tenta di modificarlo in modo che corrisponda. `SERVERPROPERTY('ServerName')`
+ RDS non può modificare il server locale (che ha `server_id = 0`) in `sys.servers` impostando un nuovo nome host mentre il nome host precedente è utilizzato attivamente da accessi remoti o server collegati. Questa limitazione si applica in due scenari:
  + Quando un server collegato stabilisce una connessione al server locale utilizzando un accesso remoto associato al nome host precedente
  + Quando un’istanza RDS Custom per SQL Server funge da publisher o distributore e ha accessi collegati associati al nome host precedente alle relative istanze subscriber.

## Risoluzione dei problemi
<a name="custom-sqlserver-features.cdc.Troubleshooting"></a>

Per identificare gli accessi remoti o gli accessi collegati associati al nome server precedente, utilizza le query seguenti. Convalida i risultati e rimuovi questi accessi per assicurare il corretto funzionamento della funzionalità CDC.

```
SELECT * FROM sys.remote_logins WHERE server_id=0
```

or

```
select sss.srvname,ssp.name,srl.remote_name  from sys.server_principals ssp 
inner join sys.remote_logins srl on srl.local_principal_id=ssp.principal_id
inner join sys.sysservers sss  on srl.server_id = sss.srvid
where sss.srvname = @@SERVERNAME
```