Replica transazionale con Istanza gestita SQL di Azure (anteprima)Transactional replication with Azure SQL Managed Instance (Preview)

SI APPLICA A: Istanza gestita di SQL di Azure

La replica transazionale è una funzionalità di Azure SQL Istanza gestita e SQL Server che consente di replicare i dati da una tabella in Istanza gestita SQL di Azure o da un'istanza di SQL Server a tabelle posizionate nei database remoti.Transactional replication is a feature of Azure SQL Managed Instance and SQL Server that enables you to replicate data from a table in Azure SQL Managed Instance or a SQL Server instance to tables placed on remote databases. Questa funzionalità consente di sincronizzare più tabelle in database diversi.This feature allows you to synchronize multiple tables in different databases.

La replica transazionale è attualmente disponibile in anteprima pubblica per l'istanza gestita di SQL.Transactional replication is currently in public preview for SQL Managed Instance.

PanoramicaOverview

È possibile usare la replica transazionale per eseguire il push delle modifiche apportate in un Istanza gestita SQL di Azure per:You can use transactional replication to push changes made in an Azure SQL Managed Instance to:

ComponentiComponents

I componenti principali della replica transazionale sono server di pubblicazione, server di distribuzione e Sottoscrittore, come illustrato nell'immagine seguente:The key components in transactional replication are the Publisher, Distributor, and Subscriber, as shown in the following picture:

Replica con database SQL

RuoloRole Database SQL di AzureAzure SQL Database Istanza gestita di SQL di AzureAzure SQL Managed Instance
AutorePublisher NoNo Yes
Database di distribuzioneDistributor NoNo Yes
Sottoscrittore pullPull subscriber NoNo Yes
Sottoscrittore pushPush Subscriber Yes Yes
     

Il server di pubblicazione pubblica le modifiche apportate in alcune tabelle (articoli) inviando gli aggiornamenti al server di distribuzione.The Publisher publishes changes made on some tables (articles) by sending the updates to the Distributor. Il server di pubblicazione può essere un Istanza gestita SQL di Azure o un'istanza di SQL Server.The publisher can be an Azure SQL Managed Instance or a SQL Server instance.

Il server di distribuzione raccoglie le modifiche apportate agli articoli da un server di pubblicazione e le distribuisce ai sottoscrittori.The Distributor collects changes in the articles from a Publisher and distributes them to the Subscribers. Il server di distribuzione può essere un Istanza gestita SQL di Azure o un'istanza di SQL Server (qualsiasi versione purché sia uguale o superiore alla versione del server di pubblicazione).The Distributor can be either a Azure SQL Managed Instance or a SQL Server instance (any version as long it is equal to or higher than the Publisher version).

Il Sottoscrittore riceve le modifiche apportate al server di pubblicazione.The Subscriber receives changes made on the Publisher. Un'istanza di SQL Server e un Istanza gestita SQL di Azure possono essere sottoscrittori push e pull, anche se una sottoscrizione pull non è supportata quando il server di distribuzione è un Istanza gestita SQL di Azure e il Sottoscrittore non lo è.A SQL Server instance and Azure SQL Managed Instance can both be push and pull subscribers, though a pull subscription is not supported when the distributor is an Azure SQL Managed Instance and the subscriber is not. Un database nel database SQL di Azure può essere solo un Sottoscrittore push.A database in Azure SQL Database can only be a push subscriber.

Istanza gestita SQL di Azure può supportare l'esecuzione di un Sottoscrittore dalle seguenti versioni di SQL Server:Azure SQL Managed Instance can support being a Subscriber from the following versions of SQL Server:

  • SQL Server 2016 e versioni successiveSQL Server 2016 and later

  • SQL Server 2014 RTM CU10 dalla (12.0.4427.24) o SP1 CU3 (12.0.2556.4)SQL Server 2014 RTM CU10 (12.0.4427.24) or SP1 CU3 (12.0.2556.4)

  • SQL Server 2012 SP2 CU8 (11.0.5634.1) o SP3 (11.0.6020.0)SQL Server 2012 SP2 CU8 (11.0.5634.1) or SP3 (11.0.6020.0)

    Nota

    • Per altre versioni di SQL Server che non supportano la pubblicazione in oggetti in Azure, è possibile usare il metodo di ripubblicazione dei dati per spostare i dati in versioni più recenti di SQL Server.For other versions of SQL Server that do not support publishing to objects in Azure, it is possible to utilize the republishing data method to move data to newer versions of SQL Server.
    • Se si cerca di configurare la replica usando una versione meno recente, potrebbero essere generati gli errori MSSQL_REPL20084 (Il processo non è riuscito a connettersi al sottoscrittore) e MSSQ_REPL40532 (Impossibile aprire il server <name> richiesto dall'account di accesso.Attempting to configure replication using an older version can result in error number MSSQL_REPL20084 (The process could not connect to Subscriber.) and MSSQ_REPL40532 (Cannot open server <name> requested by the login. Accesso non riuscito).The login failed.)

Tipi di replicaTypes of replication

Esistono diversi tipi di replica:There are different types of replication:

ReplicaReplication Database SQL di AzureAzure SQL Database Istanza gestita di SQL di AzureAzure SQL Managed Instance
Transazionale standardStandard Transactional Sì (solo come sottoscrittore)Yes (only as subscriber) Yes
SnapshotSnapshot Sì (solo come sottoscrittore)Yes (only as subscriber) Yes
Replica di tipo mergeMerge replication NoNo NoNo
Peer-to-peerPeer-to-peer NoNo NoNo
BidirezionaleBidirectional NoNo Yes
Sottoscrizioni aggiornabiliUpdatable subscriptions NoNo NoNo
     

Matrice di supportoSupportability Matrix

La matrice di supporto per la replica transazionale per Istanza gestita SQL di Azure è uguale a quella di SQL Server.The transactional replication supportability matrix for Azure SQL Managed Instance is the same as the one for SQL Server.

AutorePublisher Database di distribuzioneDistributor SottoscrittoreSubscriber
SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2017SQL Server 2017 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2016SQL Server 2016 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2014SQL Server 2014 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2012SQL Server 2012 SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2019SQL Server 2019
SQL Server 2017SQL Server 2017
SQL Server 2016SQL Server 2016
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
SQL Server 2014SQL Server 2014
SQL Server 2012SQL Server 2012
SQL Server 2008 R2SQL Server 2008 R2
SQL Server 2008SQL Server 2008
     

UtilizzoWhen to use

La replica transazionale è utile negli scenari seguenti:Transactional replication is useful in the following scenarios:

  • Pubblicare le modifiche apportate in una o più tabelle di un database e distribuirle in uno o più database in un'istanza di SQL Server o in un database SQL di Azure che ha sottoscritto le modifiche.Publish changes made in one or more tables in a database and distribute them to one or many databases in a SQL Server instance or Azure SQL Database that subscribed for the changes.
  • Mantenere più database distribuiti in stato sincronizzato.Keep several distributed databases in synchronized state.
  • Eseguire la migrazione dei database da un'istanza di SQL Server o di Azure SQL Istanza gestita a un altro database pubblicando continuamente le modifiche.Migrate databases from one SQL Server instance or Azure SQL Managed Instance to another database by continuously publishing the changes.

Confrontare la sincronizzazione dati con la replica transazionaleCompare Data Sync with Transactional Replication

CategoryCategory Sincronizzazione dei datiData Sync Replica transazionaleTransactional Replication
VantaggiAdvantages - Supporto attivo/attivo- Active-active support
- Bidirezionale tra database locali e database SQL di Azure- Bi-directional between on-premises and Azure SQL Database
- Latenza inferiore- Lower latency
- Coerenza delle transazioni- Transactional consistency
- Riutilizzo topologia esistente dopo la migrazione- Reuse existing topology after migration
SvantaggiDisadvantages - Nessuna coerenza delle transazioni- No transactional consistency
- Maggiore impatto sulle prestazioni- Higher performance impact
-Non è possibile pubblicare dal database SQL di Azure- Can’t publish from Azure SQL Database
- Alti costi di manutenzione- High maintenance cost

Configurazioni comuniCommon configurations

In generale, il server di pubblicazione e il database di pubblicazione devono entrambi essere nel cloud o locali.In general, the publisher and the distributor must be either in the cloud or on-premises. Le configurazioni seguenti sono supportate:The following configurations are supported:

Server di pubblicazione con server di distribuzione locale in SQL Istanza gestitaPublisher with local Distributor on SQL Managed Instance

Singola istanza come server di pubblicazione e database di distribuzione

Il server di pubblicazione e il server di distribuzione sono configurati all'interno di una singola Istanza gestita SQL e distribuiscono le modifiche in un'altra istanza di SQL Istanza gestita, database SQL o SQL ServerPublisher and distributor are configured within a single SQL Managed Instance and distributing changes to another SQL Managed Instance, SQL Database, or SQL Server instance.

Server di pubblicazione con server di distribuzione remoto in SQL Istanza gestitaPublisher with remote distributor on SQL Managed Instance

In questa configurazione, un'istanza gestita pubblica le modifiche apportate a un server di distribuzione inserito in un altro Istanza gestita SQL che può gestire molte istanze di SQL gestite di origine e distribuisce le modifiche a una o più destinazioni nel database SQL di Azure, in Azure SQL Istanza gestita o SQL Server.In this configuration, one managed instance publishes changes to a distributor placed on another SQL Managed Instance that can serve many source SQL Managed Instances and distribute changes to one or many targets on Azure SQL Database, Azure SQL Managed Instance, or SQL Server.

Istanze separate per server di pubblicazione e database di distribuzione

I database di pubblicazione e distribuzione sono configurati in due istanze gestite.Publisher and distributor are configured on two managed instances. Questa configurazione presenta alcuni vincoli:There are some constraints with this configuration:

  • Entrambe le istanze gestite si trovano nello stesso vNet.Both managed instances are on the same vNet.
  • Le due istanze gestite sono nella stessa posizione.Both managed instances are in the same location.

Server di pubblicazione/distribuzione locale con Sottoscrittore remotoOn-premises Publisher/Distributor with remote subscriber

Database SQL di Azure come Sottoscrittore

In questa configurazione, un database nel database SQL di Azure o in Azure SQL Istanza gestita è un Sottoscrittore.In this configuration, a database in Azure SQL Database or Azure SQL Managed Instance is a subscriber. Questa configurazione supporta la migrazione dal database locale al database di Azure.This configuration supports migration from on-premises to Azure. Se un Sottoscrittore è un database nel database SQL di Azure, deve essere in modalità push.If a subscriber is a database in Azure SQL Database, it must be in push mode.

RequisitiRequirements

  • Usare l'autenticazione SQL per la connettività tra i partecipanti della replica.Use SQL Authentication for connectivity between replication participants.
  • Usare una condivisione dell'account di archiviazione di Azure per la directory di lavoro utilizzata dalla replica.Use an Azure Storage Account share for the working directory used by replication.
  • Aprire la porta TCP in uscita 445 nelle regole di sicurezza della subnet per accedere alla condivisione file di Azure.Open TCP outbound port 445 in the subnet security rules to access the Azure file share.
  • Aprire la porta TCP in uscita 1433 quando il Istanza gestita SQL è il server di pubblicazione o il server di distribuzione e il Sottoscrittore non lo è.Open TCP outbound port 1433 when the SQL Managed Instance is the Publisher/Distributor, and the Subscriber is not. Potrebbe anche essere necessario modificare la regola di sicurezza in uscita di SQL Istanza gestita NSG per allow_linkedserver_outbound per il tag del servizio di destinazione porta 1433 da virtualnetwork a internet .You may also need to change the SQL Managed Instance NSG outbound security rule for allow_linkedserver_outbound for the port 1433 Destination Service tag from virtualnetwork to internet.
  • Posizionare il server di pubblicazione e il server di distribuzione nel cloud o in locale.Place both the publisher and distributor in the cloud, or both on-premises.
  • Configurare il peering VPN tra le reti virtuali dei partecipanti alla replica se le reti virtuali sono diverse.Configure VPN peering between the virtual networks of replication participants if the virtual networks are different.

Nota

È possibile che si verifichi l'errore 53 quando ci si connette a un file di archiviazione di Azure se la porta 445 del gruppo di sicurezza di rete (NSG) in uscita è bloccata quando il server di distribuzione è un database SQL di Azure Istanza gestita e il Sottoscrittore è in locale.You may encounter error 53 when connecting to an Azure Storage File if the outbound network security group (NSG) port 445 is blocked when the distributor is an Azure SQL Managed Instance database and the subscriber is on-premises. Aggiornare il NSG di vNet per risolvere il problema.Update the vNet NSG to resolve this issue.

Con gruppi di failoverWith failover groups

La replica geografica attiva non è supportata con una istanza gestita SQL che usa la replica transazionale.Active geo-replication is not supported with a SQL Managed Instance using transactional replication. Anziché eseguire la replica geografica attiva, usare i gruppi di failover automatico, ma si noti che la pubblicazione deve essere eliminata manualmente dall'istanza gestita primaria e ricreata nel istanza gestita SQL secondario dopo il failover.Instead of active geo-replication, use Auto-failover groups, but note that the publication has to be manually deleted from the primary managed instance and re-created on the secondary SQL Managed Instance after failover.

Se un server di pubblicazione o un server di distribuzione SQL istanza gestita si trova in un gruppo di failover, l'amministratore di SQL istanza gestita deve eliminare tutte le pubblicazioni nel database primario precedente e riconfigurarle nel nuovo database primario dopo un failover.If a publisher or distributor SQL Managed Instance is in a failover group, the SQL Managed Instance administrator must clean up all publications on the old primary and reconfigure them on the new primary after a failover occurs. In questo scenario sono necessarie le attività seguenti:The following activities are needed in this scenario:

  1. Arrestare tutti i processi di replica in esecuzione nel database, se presenti.Stop all replication jobs running on the database, if there are any.

  2. Eliminare i metadati della sottoscrizione dal server di pubblicazione eseguendo lo script seguente nel database del server di pubblicazione:Drop subscription metadata from publisher by running the following script on publisher database:

    EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'
    
  3. Rilasciare i metadati della sottoscrizione dal Sottoscrittore.Drop subscription metadata from the subscriber. Eseguire lo script seguente nel database di sottoscrizione nel Sottoscrittore SQL Istanza gestita:Run the following script on the subscription database on subscriber SQL Managed Instance:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher, e.g. example.ac2d23028af5.database.windows.net>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. Eliminare in modo forzato tutti gli oggetti di replica dal server di pubblicazione eseguendo lo script seguente nel database pubblicato:Forcefully drop all replication objects from publisher by running the following script in the published database:

    EXEC sp_removedbreplication
    
  5. Eliminare in modo forzato il server di distribuzione precedente dal Istanza gestita primario SQL originale (se si esegue il failover in un database primario precedente utilizzato per avere un server di distribuzione).Forcefully drop old distributor from original primary SQL Managed Instance (if failing back over to an old primary that used to have a distributor). Eseguire lo script seguente nel database master del server di distribuzione precedente SQL Istanza gestita:Run the following script on the master database in old distributor SQL Managed Instance:

    EXEC sp_dropdistributor 1,1
    

Se la replica geografica è abilitata in un'istanza del Sottoscrittore in un gruppo di failover, la pubblicazione deve essere configurata per la connessione all'endpoint del listener del gruppo di failover per l'istanza gestita del Sottoscrittore.If geo-replication is enabled on a subscriber instance in a failover group, the publication should be configured to connect to the failover group listener endpoint for the subscriber managed instance. In caso di failover, l'azione successiva da parte dell'amministratore dell'istanza gestita dipende dal tipo di failover che si è verificato:In the event of a failover, subsequent action by the managed instance administrator depends on the type of failover that occurred:

  • Per un failover senza perdita di dati, la replica continuerà a funzionare dopo il failover.For a failover with no data loss, replication will continue working after failover.
  • Per un failover con perdita di dati, funzionerà anche la replica.For a failover with data loss, replication will work as well. La replica delle modifiche perse verrà nuovamente eseguita.It will replicate the lost changes again.
  • Per un failover con perdita di dati, ma la perdita di dati non rientra nel periodo di memorizzazione del database di distribuzione, l'amministratore di SQL Istanza gestita dovrà reinizializzare il database di sottoscrizione.For a failover with data loss, but the data loss is outside of the distribution database retention period, the SQL Managed Instance administrator will need to reinitialize the subscription database.

Passaggi successiviNext steps

Per ulteriori informazioni sulla configurazione della replica transazionale, vedere le esercitazioni seguenti:For more information about configuring transactional replication, see the following tutorials:

Vedi ancheSee also