Sincronizzare i dati tra più database cloud e locali con la sincronizzazione dati SQLSync data across multiple cloud and on-premises databases with SQL Data Sync

La sincronizzazione dati SQL è un servizio basato sul database SQL di Azure che consente di sincronizzare i dati selezionati bidirezionalmente tra più database SQL e istanze di SQL Server.SQL Data Sync is a service built on Azure SQL Database that lets you synchronize the data you select bi-directionally across multiple SQL databases and SQL Server instances.

Architettura della sincronizzazione dati SQLArchitecture of SQL Data Sync

La sincronizzazione dati si basa sul concetto di gruppo di sincronizzazione.Data Sync is based around the concept of a Sync Group. Un gruppo di sincronizzazione è un gruppo di database che si vuole sincronizzare.A Sync Group is a group of databases that you want to synchronize.

Di seguito sono elencate le proprietà di un gruppo di sincronizzazione:A Sync Group has the following properties:

  • Lo schema di sincronizzazione descrive i dati da sincronizzare.The Sync Schema describes which data is being synchronized.

  • La direzione di sincronizzazione può essere bidirezionale o unidirezionale.The Sync Direction can be bi-directional or can flow in only one direction. Ovvero, la direzione di sincronizzazione può essere dall'hub al membro o dal membro all'hub oppure entrambe.That is, the Sync Direction can be Hub to Member, or Member to Hub, or both.

  • L'intervallo di sincronizzazione descrive la frequenza con cui viene eseguita la sincronizzazione.The Sync Interval describes how often synchronization occurs.

  • I criteri di risoluzione dei conflitti sono criteri a livello di gruppo e le impostazioni possono essere Priorità hub o Priorità client.The Conflict Resolution Policy is a group level policy, which can be Hub wins or Member wins.

La sincronizzazione dati usa una topologia hub-spoke per sincronizzare i dati.Data Sync uses a hub and spoke topology to synchronize data. Uno dei database nel gruppo viene definito come database hub.You define one of the databases in the group as the Hub Database. Il resto dei database sono database membri.The rest of the databases are member databases. La sincronizzazione si verifica solo tra l'hub e i singoli membri.Sync occurs only between the Hub and individual members.

  • Il database hub deve essere un database SQL di Azure.The Hub Database must be an Azure SQL Database.
  • I database membri possono essere database SQL, database di SQL Server locali o istanze di SQL Server in macchine virtuali di Azure.The member databases can be either SQL Databases, on-premises SQL Server databases, or SQL Server instances on Azure virtual machines.
  • Il database di sincronizzazione contiene i metadati e il log per la sincronizzazione dati. Il database di sincronizzazione deve essere un database SQL di Azure posizionato nella stessa area del database hub.The Sync Database contains the metadata and log for Data Sync. The Sync Database has to be an Azure SQL Database located in the same region as the Hub Database. Il database di sincronizzazione viene creato dal cliente ed è di sua proprietà.The Sync Database is customer created and customer owned.

Nota

Se si usa un database locale come database membro, è necessario installare e configurare un agente di sincronizzazione locale.If you're using an on premises database as a member database, you have to install and configure a local sync agent.

Sincronizzare i dati tra database

Quando usare la sincronizzazione datiWhen to use Data Sync

La sincronizzazione dei dati è utile nei casi in cui i dati devono essere mantenuti aggiornati in diversi database SQL di Azure o database di SQL Server.Data Sync is useful in cases where data needs to be kept up-to-date across several Azure SQL Databases or SQL Server databases. Questi sono i principali casi d'uso per la sincronizzazione dati:Here are the main use cases for Data Sync:

  • Sincronizzazione dei dati ibrida: con la sincronizzazione dei dati è possibile mantenere i dati sincronizzati tra database locali e database SQL di Azure per rendere possibili applicazioni ibride.Hybrid Data Synchronization: With Data Sync, you can keep data synchronized between your on-premises databases and Azure SQL Databases to enable hybrid applications. Questa funzionalità può essere interessante per i clienti che stanno valutando il passaggio al cloud e vorrebbero trasferire alcune applicazioni in Azure.This capability may appeal to customers who are considering moving to the cloud and would like to put some of their application in Azure.

  • Applicazioni distribuite: in molti casi è vantaggioso separare carichi di lavoro diversi in database differenti.Distributed Applications: In many cases, it's beneficial to separate different workloads across different databases. Ad esempio, se si dispone di un database di produzione di grandi dimensioni, ma è anche necessario eseguire un carico di lavoro di report o analisi su tali dati, può essere utile avere un secondo database per questo carico di lavoro aggiuntivo.For example, if you have a large production database, but you also need to run a reporting or analytics workload on this data, it's helpful to have a second database for this additional workload. Questo approccio riduce al minimo l'impatto a livello di prestazioni sul carico di lavoro di produzione.This approach minimizes the performance impact on your production workload. È possibile usare la sincronizzazione dati per mantenere sincronizzati i due database.You can use Data Sync to keep these two databases synchronized.

  • Applicazioni distribuite a livello globale: molte aziende sono estese a più aree, a volte anche in paesi diversi.Globally Distributed Applications: Many businesses span several regions and even several countries. Per ridurre al minimo la latenza di rete, è consigliabile posizionare i dati in un'area vicina.To minimize network latency, it's best to have your data in a region close to you. Con sincronizzazione dati è possibile mantenere facilmente sincronizzati i database in aree in tutto il mondo.With Data Sync, you can easily keep databases in regions around the world synchronized.

La sincronizzazione dei dati non è la soluzione ideale per gli scenari seguenti:Data Sync is not the best solution for the following scenarios:

ScenarioScenario Alcune soluzioni raccomandateSome recommended solutions
Ripristino di emergenzaDisaster Recovery Backup con ridondanza geografica di AzureAzure geo-redundant backups
Scalabilità in letturaRead Scale Usare le repliche di sola lettura per bilanciare il carico dei carichi di lavoro di query di sola lettura (anteprima)Use read-only replicas to load balance read-only query workloads (preview)
ETL (da OLTP a OLAP)ETL (OLTP to OLAP) Azure Data Factory o SQL Server Integration ServicesAzure Data Factory or SQL Server Integration Services
Migrazione da SQL Server locale al database SQL di AzureMigration from on-premises SQL Server to Azure SQL Database Servizio Migrazione del database di AzureAzure Database Migration Service

Come funziona la sincronizzazione dati?How does Data Sync work?

  • Rilevamento delle modifiche ai dati: sincronizzazione dati tiene traccia delle modifiche tramite trigger di inserimento, aggiornamento ed eliminazione.Tracking data changes: Data Sync tracks changes using insert, update, and delete triggers. Le modifiche vengono registrate in una tabella laterale nel database utente.The changes are recorded in a side table in the user database.

  • Sincronizzazione dei dati: il servizio di sincronizzazione dati è progettato in base a un modello hub-spoke.Synchronizing data: Data Sync is designed in a Hub and Spoke model. L'hub sincronizza singolarmente ogni membro.The Hub syncs with each member individually. Le modifiche dall'hub vengono scaricate nel membro e quindi le modifiche dal membro vengono caricate nell'hub.Changes from the Hub are downloaded to the member and then changes from the member are uploaded to the Hub.

  • Risoluzione dei conflitti: sincronizzazione dati offre due opzioni per la risoluzione dei conflitti, ovvero Priorità hub o Priorità client.Resolving conflicts: Data Sync provides two options for conflict resolution, Hub wins or Member wins.

    • Se si seleziona Priorità hub, le modifiche nell'hub sovrascrivono sempre le modifiche nel membro.If you select Hub wins, the changes in the hub always overwrite changes in the member.
    • Se si seleziona Priorità client, le modifiche nel membro sovrascrivono sempre le modifiche nell'hub.If you select Member wins, the changes in the member overwrite changes in the hub. In presenza di più di un membro, il valore finale dipende dal membro sincronizzato per primo.If there's more than one member, the final value depends on which member syncs first.

Introduzione alla sincronizzazione dati SQLGet started with SQL Data Sync

Configurare la sincronizzazione dati nel portale di AzureSet up Data Sync in the Azure portal

Configurare la sincronizzazione dati con PowerShellSet up Data Sync with PowerShell

Rivedere le procedure consigliate per la sincronizzazione datiReview the best practices for Data Sync

Nel caso in cui si siano verificati problemiDid something go wrong?

Coerenza e prestazioniConsistency and performance

Coerenza finaleEventual consistency

Dato che la sincronizzazione dati è basata su trigger, la coerenza delle transazioni non è garantita.Since Data Sync is trigger-based, transactional consistency is not guaranteed. Microsoft garantisce che tutte le modifiche vengono apportate alla fine e che la sincronizzazione dati non causi perdite di dati.Microsoft guarantees that all changes are made eventually and that Data Sync does not cause data loss.

Impatto sulle prestazioniPerformance impact

La sincronizzazione dati usa trigger di inserimento, aggiornamento ed eliminazione per il rilevamento delle modificheData Sync uses insert, update, and delete triggers to track changes. e crea tabelle laterali nel database utente per il rilevamento delle modifiche.It creates side tables in the user database for change tracking. Queste attività di rilevamento delle modifiche hanno un impatto sul carico di lavoro del database.These change tracking activities have an impact on your database workload. Valutare il livello di servizio e aggiornare se necessario.Assess your service tier and upgrade if needed.

Sulle prestazioni del database possono incidere anche il provisioning e il deprovisioning eseguiti durante la creazione, l'aggiornamento e l'eliminazione dei gruppi di sincronizzazione.Provisioning and deprovisioning during sync group creation, update, and deletion may also impact the database performance.

Requisiti e limitazioniRequirements and limitations

Requisiti generaliGeneral requirements

  • Ogni tabella deve avere una chiave primaria.Each table must have a primary key. Non modificare il valore della chiave primaria in alcuna riga.Don't change the value of the primary key in any row. Se è necessario modificare un valore della chiave primaria, eliminare la riga e ricrearla con il nuovo valore della chiave primaria.If you have to change a primary key value, delete the row and recreate it with the new primary key value.

  • L'isolamento dello snapshot deve essere abilitato.Snapshot isolation must be enabled. Per altre informazioni, vedere Isolamento dello snapshot in SQL Server.For more info, see Snapshot Isolation in SQL Server.

Limitazioni generaliGeneral limitations

  • Una tabella non può includere colonne Identity che non sono la chiave primaria.A table cannot have an identity column that is not the primary key.

  • Una chiave primaria non può contenere il tipo di dati datetime.A primary key cannot have the datetime data type.

  • I nomi degli oggetti (database, tabelle e colonne) non possono contenere i caratteri stampabili punto (.), parentesi quadra aperta ([) o parentesi quadra chiusa (]).The names of objects (databases, tables, and columns) cannot contain the printable characters period (.), left square bracket ([), or right square bracket (]).

  • L'autenticazione di Azure Active Directory non è supportata.Azure Active Directory authentication is not supported.

Tipi di dati non supportatiUnsupported data types

  • FileStreamFileStream

  • Tipo definito dall'utente (UDT) SQL/CLRSQL/CLR UDT

  • XMLSchemaCollection (supportato da XML)XMLSchemaCollection (XML supported)

  • Cursor, Timestamp, HierarchyidCursor, Timestamp, Hierarchyid

Tipi di colonna non supportatiUnsupported column types

La sincronizzazione dati non sincronizza le colonne di sola lettura o generate dal sistema.Data Sync can't sync read-only or system-generated columns. Ad esempio: For example:

  • Colonne calcolate.Computed columns.

  • Colonne generate dal sistema per le tabelle temporali.System-generated columns for temporal tables.

Limitazioni alle dimensioni del servizio e del databaseLimitations on service and database dimensions

DimensioniDimensions LimiteLimit Soluzione alternativaWorkaround
Numero massimo di gruppi di sincronizzazione a cui può appartenere qualsiasi database.Maximum number of sync groups any database can belong to. 55
Numero massimo di endpoint in un singolo gruppo di sincronizzazioneMaximum number of endpoints in a single sync group 3030 Creare più gruppi di sincronizzazioneCreate multiple sync groups
Numero massimo di endpoint locali in un singolo gruppo di sincronizzazione.Maximum number of on-premises endpoints in a single sync group. 55 Creare più gruppi di sincronizzazioneCreate multiple sync groups
Nomi di database, tabella, schema e colonnaDatabase, table, schema, and column names 50 caratteri per nome50 characters per name
Tabelle in un gruppo di sincronizzazioneTables in a sync group 500500 Creare più gruppi di sincronizzazioneCreate multiple sync groups
Colonne in una tabella in un gruppo di sincronizzazioneColumns in a table in a sync group 10001000
Dimensioni delle righe di dati in una tabellaData row size on a table 24 MB24 Mb
Intervallo minimo di sincronizzazioneMinimum sync interval 5 minuti5 Minutes

Domande frequenti sulla sincronizzazione dati SQLFAQ about SQL Data Sync

Quanto costa il servizio di sincronizzazione dati SQL?How much does the SQL Data Sync service cost?

Non viene applicato alcun addebito per il servizio di sincronizzazione dati SQL di per sé.There is no charge for the SQL Data Sync service itself. Tuttavia, si accumuleranno ancora gli addebiti per il trasferimento dei dati dovuti allo spostamento dei dati da e verso l'istanza di database SQL.However, you still accrue data transfer charges for data movement in and out of your SQL Database instance. Per altre informazioni, vedere Prezzi di Database SQL.For more info, see SQL Database pricing.

Quali aree supportano la sincronizzazione dati?What regions support Data Sync?

La sincronizzazione dati SQL è disponibile in tutte le aree di cloud pubblico.SQL Data Sync is available in all public cloud regions.

È necessario disporre di un account di database SQL?Is a SQL Database account required?

Sì.Yes. È necessario disporre di un account di database SQL per ospitare il database hub.You must have a SQL Database account to host the Hub Database.

È possibile usare la sincronizzazione dati solo tra database SQL Server locali?Can I use Data Sync to sync between SQL Server on-premises databases only?

Non direttamente.Not directly. Tuttavia, è possibile sincronizzare in maniera indiretta tra i database SQL Server locali creando un database hub in Azure e aggiungendo i database locali al gruppo di sincronizzazione.You can sync between SQL Server on-premises databases indirectly, however, by creating a Hub database in Azure, and then adding the on-premises databases to the sync group.

È possibile usare la sincronizzazione dei dati tra database SQL che appartengono a sottoscrizioni diverse?Can I use Data Sync to sync between SQL Databases that belong to different subscriptions?

Sì.Yes. È possibile eseguire la sincronizzazione tra database SQL che appartengono a gruppi di risorse di proprietà di sottoscrizioni diverse.You can sync between SQL Databases that belong to resource groups owned by different subscriptions.

  • Se le sottoscrizioni appartengono allo stesso tenant e sono disponibili le autorizzazioni per tutte le sottoscrizioni, è possibile configurare il gruppo di sincronizzazione nel portale di Azure.If the subscriptions belong to the same tenant, and you have permission to all subscriptions, you can configure the sync group in the Azure portal.
  • In caso contrario, è necessario usare PowerShell per aggiungere i membri di sincronizzazione che appartengono a sottoscrizioni diverse.Otherwise, you have to use PowerShell to add the sync members that belong to different subscriptions.

È possibile usare la sincronizzazione dati per effettuare il seeding dei dati da un database di produzione a un database vuoto e quindi sincronizzarli?Can I use Data Sync to seed data from my production database to an empty database, and then sync them?

Sì.Yes. Creare manualmente lo schema nel nuovo database effettuando lo scripting dall'originale.Create the schema manually in the new database by scripting it from the original. Dopo aver creato lo schema, aggiungere le tabelle a un gruppo di sincronizzazione per copiare i dati e mantenerli sincronizzati.After you create the schema, add the tables to a sync group to copy the data and keep it synced.

È necessario usare la sincronizzazione dati SQL per eseguire il backup e il ripristino dei database?Should I use SQL Data Sync to back up and restore my databases?

Non è consigliabile usare la sincronizzazione dati SQL per creare un backup dei dati.It is not recommended to use SQL Data Sync to create a backup of your data. Non è possibile eseguire il backup e il ripristino in un punto specifico nel tempo, perché le sincronizzazioni della sincronizzazione dati SQL sono senza versione.You cannot back up and restore to a specific point in time because SQL Data Sync synchronizations are not versioned. Inoltre, la sincronizzazione dati SQL non esegue il backup di altri oggetti SQL, ad esempio le stored procedure, e non esegue rapidamente l'equivalente di un'operazione di ripristino.Furthermore, SQL Data Sync does not back up other SQL objects, such as stored procedures, and does not do the equivalent of a restore operation quickly.

Per una tecnica di backup consigliata, vedere Copiare un database SQL di Azure.For one recommended backup technique, see Copy an Azure SQL database.

Con la sincronizzazione dei dati si possono sincronizzare tabelle e colonne crittografate?Can Data Sync sync encrypted tables and columns?

  • Se un database usa Always Encrypted, è possibile sincronizzare solo le tabelle e colonne non crittografate.If a database uses Always Encrypted, you can sync only the tables and columns that are not encrypted. Non è possibile sincronizzare le colonne crittografate, perché la sincronizzazione dei dati non può decrittografare i dati.You can't sync the encrypted columns, because Data Sync can't decrypt the data.

  • Se una colonna usa la crittografia a livello di colonna (CLE), è possibile sincronizzare la colonna, purché le dimensioni delle righe siano minori rispetto alle dimensioni massime di 24 MB.If a column uses Column-Level Encryption (CLE), you can sync the column, as long as the row size is less than the maximum size of 24 Mb. La sincronizzazione dei dati considera la colonna crittografata in base alla chiave (CLE) come normali dati binari.Data Sync treats the column encrypted by key (CLE) as normal binary data. Per decrittografare i dati in altri membri di sincronizzazione, è necessario avere lo stesso certificato.To decrypt the data on other sync members, you need to have the same certificate.

Le regole di confronto sono supportate nella sincronizzazione dati SQL?Is collation supported in SQL Data Sync?

Sì.Yes. La sincronizzazione dati SQL supporta le regole di confronto negli scenari seguenti:SQL Data Sync supports collation in the following scenarios:

  • Se le tabelle dello schema di sincronizzazione selezionate non sono già nel database hub o membro, quando si distribuisce il gruppo di sincronizzazione, il servizio crea automaticamente le tabelle e le colonne corrispondenti con le impostazioni delle regole di confronto selezionate nei database di destinazione vuoti.If the selected sync schema tables are not already in your hub or member databases, then when you deploy the sync group, the service automatically creates the corresponding tables and columns with the collation settings selected in the empty destination databases.

  • Se le tabelle da sincronizzare sono già presenti sia nel database hub che nel database membro, la sincronizzazione dati SQL richiede che le colonne chiavi primarie abbiano le stesse regole di confronto in entrambi i database hub e membro per una distribuzione corretta del gruppo di sincronizzazione.If the tables to be synced already exist in both your hub and member databases, SQL Data Sync requires that the primary key columns have the same collation between hub and member databases to successfully deploy the sync group. Per le colonne diverse dalle colonne chiavi primarie non sono previste restrizioni relative alle regole di confronto.There are no collation restrictions on columns other than the primary key columns.

La federazione è supportata nella sincronizzazione dati SQL?Is federation supported in SQL Data Sync?

Il database radice di federazione può essere usato nel servizio di sincronizzazione dati SQL senza alcuna limitazione.Federation Root Database can be used in the SQL Data Sync Service without any limitation. Non è possibile aggiungere l'endpoint del database federato alla versione corrente della sincronizzazione dati SQL.You cannot add the Federated Database endpoint to the current version of SQL Data Sync.

Passaggi successiviNext steps

Aggiornare lo schema di un database sincronizzatoUpdate the schema of a synced database

È necessario aggiornare lo schema di un database in un gruppo di sincronizzazione?Do you have to update the schema of a database in a sync group? Le modifiche allo schema non vengono replicate automaticamente.Schema changes are not automatically replicated. Per alcune soluzioni, vedere gli articoli seguenti:For some solutions, see the following articles:

Monitorare e risolvere i problemiMonitor and troubleshoot

La sincronizzazione dati SQL ha le prestazioni previste?Is SQL Data Sync performing as expected? Per monitorare l'attività e risolvere i problemi, vedere gli articoli seguenti:To monitor activity and troubleshoot issues, see the following articles:

Ulteriori informazioni sul database SQL di AzureLearn more about Azure SQL Database

Per altre informazioni sul database SQL, vedere gli articoli seguenti:For more info about SQL Database, see the following articles:

Guida di riferimento per gli sviluppatoriDeveloper reference