Sincronizzare i dati tra più database cloud e locali con l'anteprima di sincronizzazione dati SQLSync data across multiple cloud and on-premises databases with SQL Data Sync (Preview)

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.

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 o entrambe.That is, the Sync Direction can be Hub to Member or Member to Hub, or both.

  • L'intervallo di sincronizzazione è la frequenza con cui viene eseguita la sincronizzazione.The Sync Interval is 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, è necessario configurare un agente locale.If you're using an on premises database, you have to configure a local agent.

Sincronizzare i dati tra database

Quando usare la sincronizzazione datiWhen to use Data Sync

La sincronizzazione 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 è appropriata per gli scenari seguenti:Data Sync is not appropriate for the following scenarios:

  • Ripristino di emergenzaDisaster Recovery

  • Scalabilità in letturaRead Scale

  • ETL (da OLTP a OLAP)ETL (OLTP to OLAP)

  • Migrazione da SQL Server locale al database SQL di AzureMigration from on-premises SQL Server to Azure SQL Database

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.

Requisiti e limitazioniRequirements and limitations

Considerazioni generaliGeneral considerations

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.

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.

  • 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

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 anteprima di sincronizzazione dati SQL?How much does the SQL Data Sync (Preview) service cost?

Durante l'anteprima, non è previsto alcun addebito per l'anteprima di sincronizzazione dati SQL.During the Preview, there is no charge for the SQL Data Sync (Preview) 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?

L'anteprima di sincronizzazione dati SQL è disponibile in tutte le aree di cloud pubblico.SQL Data Sync (Preview) 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 dati per effettuare il seeding dei dati da un database di produzione a un database vuoto, mantenendoli poi sincronizzati?Can I use Data Sync to seed data from my production database to an empty database, and then keep them synchronized?

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 l'anteprima di sincronizzazione dati SQL per creare un backup dei dati.It is not recommended to use SQL Data Sync (Preview) to create a backup of your data. Non è possibile eseguire il backup e il ripristino a una temporizzazione specificata, perché le sincronizzazioni dell'anteprima di sincronizzazione dati SQL sono senza versione.You cannot back up and restore to a specific point in time because SQL Data Sync (Preview) synchronizations are not versioned. Inoltre, l'anteprima di sincronizzazione dati SQL non esegue il backup di altri oggetti SQL, come ad esempio stored procedure, e non esegue rapidamente l'equivalente di un'operazione di ripristino.Furthermore, SQL Data Sync (Preview) 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.

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 anteprima di sincronizzazione dati SQL senza alcuna limitazione.Federation Root Database can be used in the SQL Data Sync (Preview) Service without any limitation. Non è possibile aggiungere l'endpoint del database federato alla versione corrente dell'anteprima di sincronizzazione dati SQL.You cannot add the Federated Database endpoint to the current version of SQL Data Sync (Preview).

Passaggi successiviNext steps

Per altre informazioni sulla sincronizzazione dati SQL, vedere:For more info about SQL Data Sync, see:

Per altre informazioni sul database SQL, vedere:For more info about SQL Database, see: