Transaktionsreplikation mit Azure SQL Managed InstanceTransactional replication with Azure SQL Managed Instance

GILT FÜR: JaAzure SQL Managed Instance APPLIES TO: yesAzure SQL Managed Instance

Transaktionsreplikation ist ein Feature von Azure SQL Managed Instance und SQL Server, das Ihnen die Replikation von Daten aus einer Tabelle in Azure SQL Managed Instance oder einer SQL Server-Instanz in Tabellen ermöglicht, die in Remotedatenbanken abgelegt sind.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. Mit diesem Feature können Sie mehrere Tabellen in unterschiedlichen Datenbanken synchronisieren.This feature allows you to synchronize multiple tables in different databases.

ÜbersichtOverview

Sie können Transaktionsreplikation auch verwenden, um Änderungen an Azure SQL Managed Instance mithilfe von Push an folgende Ziele zu übertragen:You can use transactional replication to push changes made in an Azure SQL Managed Instance to:

  • Eine SQL Server-Datenbank, entweder lokal oder in Azure-VMA SQL Server database - on-premises or on Azure VM

  • Eine Datenbank in Azure SQL-DatenbankA database in Azure SQL Database

  • Eine Instanzdatenbank in Azure SQL Managed InstanceAn instance database in Azure SQL Managed Instance

    Hinweis

    Um alle Features von Azure SQL Managed Instance verwenden zu können, müssen Sie die neuesten Versionen von SQL Server Management Studio (SSMS) und SQL Server Data Tools (SSDT) verwenden.To use all the features of Azure SQL Managed Instance, you must be using the latest versions of SQL Server Management Studio (SSMS) and SQL Server Data Tools (SSDT).

KomponentenComponents

Die wichtigsten Komponenten der Transaktionsreplikation (Verleger, Verteiler und Abonnent) sind in der folgenden Abbildung dargestellt:The key components in transactional replication are the Publisher, Distributor, and Subscriber, as shown in the following picture:

Replikation zu SQL-Datenbank

RoleRole Azure SQL-DatenbankAzure SQL Database Verwaltete Azure SQL-InstanzAzure SQL Managed Instance
VerlegerPublisher NeinNo JaYes
VerteilerDistributor NeinNo JaYes
Pull-AbonnentPull subscriber NeinNo JaYes
Push-AbonnentPush Subscriber JaYes JaYes
     

Der Verleger veröffentlicht an Tabellen (Artikeln) erfolgte Änderungen, indem die Aktualisierungen zum Verteiler gesendet werden.The Publisher publishes changes made on some tables (articles) by sending the updates to the Distributor. Der Verleger kann Azure SQL Managed Instance oder eine SQL Server-Instanz sein.The publisher can be an Azure SQL Managed Instance or a SQL Server instance.

Der Verteiler sammelt Änderungen an den Artikeln von einem Verleger und verteilt sie an die Abonnenten.The Distributor collects changes in the articles from a Publisher and distributes them to the Subscribers. Der Verteiler kann entweder eine Azure SQL Managed Instance oder eine SQL Server-Instanz (beliebige Version, sofern nicht älter als die Verlegerversion) sein.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).

Der Abonnent empfängt auf dem Verleger erfolgte Änderungen.The Subscriber receives changes made on the Publisher. Eine SQL Server-Instanz und Azure SQL Managed Instance können sowohl Push- als auch Pullabonnenten sein. Ein Pullabonnement wird jedoch nicht unterstützt, wenn der Verteiler eine Azure SQL Managed Instance ist und der Abonnent nicht.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. Eine Datenbank in Azure SQL-Datenbank kann nur ein Pushabonnent sein.A database in Azure SQL Database can only be a push subscriber.

Azure SQL Managed Instance kann als Abonnent der folgenden Versionen von SQL Server fungieren:Azure SQL Managed Instance can support being a Subscriber from the following versions of SQL Server:

  • SQL Server 2016 und höherSQL Server 2016 and later

  • SQL Server 2014 RTM CU10 (12.0.4427.24) oder 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) oder SP3 (11.0.6020.0)SQL Server 2012 SP2 CU8 (11.0.5634.1) or SP3 (11.0.6020.0)

    Hinweis

    • Für andere Versionen von SQL Server, die keine Veröffentlichung in Objekten in Azure unterstützen, kann die Methode der erneuten Veröffentlichung von Daten verwendet werden, um Daten in neuere Versionen von SQL Server verschieben.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.
    • Der Versuch, Replikationen mit einer älteren Version zu konfigurieren, kann zu dem Fehler mit der Nummer MSSQL_REPL20084 (Der Prozess konnte keine Verbindung mit dem Abonnenten herstellen.) oder MSSQ_REPL40532 (Der von der Anmeldung angeforderte Server <name> kann nicht geöffnet werden.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. Die Anmeldung ist fehlgeschlagen.)The login failed.)

ReplikationstypenTypes of replication

Es gibt verschiedene Replikationstypen:There are different types of replication:

ReplikationReplication Azure SQL-DatenbankAzure SQL Database Verwaltete Azure SQL-InstanzAzure SQL Managed Instance
TransaktionsreplikationStandard Transactional Ja (nur als Abonnent)Yes (only as subscriber) JaYes
MomentaufnahmeSnapshot Ja (nur als Abonnent)Yes (only as subscriber) JaYes
MergereplikationMerge replication NeinNo NeinNo
Peer-to-PeerPeer-to-peer NeinNo NeinNo
BidirektionalBidirectional NeinNo JaYes
Aktualisierbare AbonnementsUpdatable subscriptions NeinNo NeinNo
     

UnterstützungsmatrixSupportability Matrix

Die Unterstützungsmatrix für die Transaktionsreplikation für Azure SQL Managed Instance ist identisch mit der für SQL Server.The transactional replication supportability matrix for Azure SQL Managed Instance is the same as the one for SQL Server.

VerlegerPublisher VerteilerDistributor AbonnentSubscriber
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
     

VerwendungWhen to use

Die Transaktionsreplikation ist in den folgenden Szenarien nützlich:Transactional replication is useful in the following scenarios:

  • Veröffentlichen von Änderungen an Tabellen in einer Datenbank, die an eine oder mehrere Datenbanken in einer SQL Server-Instanz oder eine Azure SQL-Datenbank-Instanz verteilt werden, die die Änderungen abonniert habenPublish 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.
  • Synchronisierthalten mehrerer verteilter DatenbankenKeep several distributed databases in synchronized state.
  • Migrieren von Datenbanken aus einer SQL Server-Instanz oder Azure SQL Managed Instance in eine andere Datenbank durch fortlaufendes Veröffentlichen der ÄnderungenMigrate databases from one SQL Server instance or Azure SQL Managed Instance to another database by continuously publishing the changes.

Vergleichen von Datensynchronisierung und TransaktionsreplikationCompare Data Sync with Transactional Replication

CategoryCategory DatensynchronisierungData Sync TransaktionsreplikationTransactional Replication
VorteileAdvantages – Aktiv/Aktiv-Unterstützung- Active-active support
– Bidirektional zwischen lokaler und Azure SQL-Datenbank- Bi-directional between on-premises and Azure SQL Database
– Niedrigere Latenzzeiten- Lower latency
– Transaktionskonsistenz- Transactional consistency
– Wiederverwendung vorhandener Topologie nach der Migration- Reuse existing topology after migration
NachteileDisadvantages – Latenzzeiten von 5 Minuten und mehr- 5 min or more latency
– Keine Transaktionskonsistenz- No transactional consistency
– Größere Auswirkung auf die Leistung- Higher performance impact
– Keine Veröffentlichung aus Azure SQL-Datenbank- Can’t publish from Azure SQL Database
– Hohe Wartungskosten- High maintenance cost

Häufig verwendete KonfigurationenCommon configurations

Im Allgemeinen müssen sich Verleger und Verteiler gemeinsam entweder in der Cloud oder an einem lokalen Standort befinden.In general, the publisher and the distributor must be either in the cloud or on-premises. Die folgenden Konfigurationen werden unterstützt:The following configurations are supported:

Verleger mit lokalem Verteiler in SQL Managed InstancePublisher with local Distributor on SQL Managed Instance

Einzelinstanz als Verleger und Verteiler

Verleger und Verteiler sind in einer einzelnen SQL Managed Instance konfiguriert und verteilen Änderungen an eine andere SQL Managed Instance, SQL-Datenbank- oder SQL Server-Instanz.Publisher and distributor are configured within a single SQL Managed Instance and distributing changes to another SQL Managed Instance, SQL Database, or SQL Server instance.

Verleger mit Remoteverteiler in SQL Managed InstancePublisher with remote distributor on SQL Managed Instance

Bei dieser Konfiguration veröffentlicht eine verwaltete Instanz Änderungen in einem Verteiler in einer anderen SQL Managed Instance, die zahlreichen SQL Managed Instances als Quelle dienen und Änderungen an ein oder mehrere Ziele in Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Server verteilen kann.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.

Separate Instanzen als Verleger und Verteiler

Verleger und Verteiler werden in zwei verwalteten Instanzen konfiguriert.Publisher and distributor are configured on two managed instances. Bei dieser Konfiguration gibt es einige Einschränkungen:There are some constraints with this configuration:

  • Beide verwaltete Instanzen befinden sich im gleichen VNET.Both managed instances are on the same vNet.
  • Die beiden verwalteten Instanzen befinden sich am gleichen Standort.Both managed instances are in the same location.

Lokaler Verleger/Verteiler mit RemoteabonnentOn-premises Publisher/Distributor with remote subscriber

Azure SQL-Datenbank als Abonnent

Bei dieser Konfiguration ist eine Datenbank in Azure SQL-Datenbank oder Azure SQL Managed Instance ein Abonnent.In this configuration, a database in Azure SQL Database or Azure SQL Managed Instance is a subscriber. Diese Konfiguration unterstützt die Migration vom lokalen Standort zu Azure.This configuration supports migration from on-premises to Azure. Für einen Abonnenten in einer Datenbank in Azure SQL-Datenbank muss der Pushmodus aktiviert sein.If a subscriber is a database in Azure SQL Database, it must be in push mode.

Requirements (Anforderungen)Requirements

  • Für die Verbindung zwischen Teilnehmern an der Replikation wird SQL-Authentifizierung verwendet.Use SQL Authentication for connectivity between replication participants.
  • Nutzen Sie für das von der Replikation verwendete Arbeitsverzeichnis eine Azure Storage-Kontofreigabe.Use an Azure Storage Account share for the working directory used by replication.
  • Öffnen Sie den ausgehenden TCP-Port 445 in den Sicherheitsregeln des Subnetzes, um auf die Azure-Dateifreigabe zuzugreifen.Open TCP outbound port 445 in the subnet security rules to access the Azure file share.
  • Öffnen Sie den ausgehenden TCP-Port 1433, wenn sich der Verleger/Verteiler in SQL Managed Instance befinden und der Abonnent nicht.Open TCP outbound port 1433 when the SQL Managed Instance is the Publisher/Distributor, and the Subscriber is not. Möglicherweise müssen Sie auch die Sicherheitsregel für ausgehenden Datenverkehr der Netzwerksicherheitsgruppe von SQL Managed Instance für allow_linkedserver_outbound für das Zieldiensttag von Port 1433 von virtualnetwork in internet ändern.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.
  • Platzieren Sie sowohl den Verleger als auch den VerteVerlegeriler in der Cloud oder beide lokal.Place both the publisher and distributor in the cloud, or both on-premises.
  • Konfigurieren Sie VPN-Peering zwischen den virtuellen Netzwerken der Replikationsteilnehmer, sofern die virtuellen Netzwerke unterschiedlich sind.Configure VPN peering between the virtual networks of replication participants if the virtual networks are different.

Hinweis

Möglicherweise tritt beim Herstellen einer Verbindung mit einer Azure Storage-Datei der Fehler 53 auf, wenn Port 445 (ausgehend) der Netzwerksicherheitsgruppe gesperrt ist und der Verteiler eine Azure SQL Managed Instance-Datenbank und der Abonnent ein lokales System ist.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. Aktualisieren Sie die vNet-Netzwerksicherheitsgruppe, um dieses Problem zu beheben.Update the vNet NSG to resolve this issue.

Mit FailovergruppenWith failover groups

Aktive Georeplikation wird bei einer SQL Managed Instance, die Transaktionsreplikation nutzt, nicht unterstützt.Active geo-replication is not supported with a SQL Managed Instance using transactional replication. Verwenden Sie anstelle der aktiven Georeplikation Autofailover-Gruppen. Beachten Sie jedoch, dass die Veröffentlichung aus der primären verwalteten Instanz manuell gelöscht und nach dem Failover in der sekundären SQL Managed Instance neu erstellt werden muss.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.

Wenn Georeplikation für eine als Verleger oder Verteiler fungierende SQL Managed Instance in einer Failovergruppe aktiviert ist, muss der SQL Managed Instance-Administrator alle Veröffentlichungen für die alte primäre Instanz bereinigen und nach einem Failover für die neue primäre Instanz erneut konfigurieren.If geo-replication is enabled on a publisher or distributor SQL Managed Instance 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. Die folgenden Aktivitäten sind in diesem Szenario erforderlich:The following activities are needed in this scenario:

  1. Beenden aller Replikationsaufträge, die für die Datenbank ausgeführt werden, sofern vorhanden.Stop all replication jobs running on the database, if there are any.

  2. Löschen der Abonnementmetadaten vom Verleger, indem das folgende Skript für die Verlegerdatenbank ausgeführt wird: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. Löschen von Abonnementmetadaten aus dem Abonnenten.Drop subscription metadata from the subscriber. Wenden Sie das folgende Skript auf die Abonnementdatenbank der SQL Managed Instance des Abonnenten an: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. Erzwingen Sie das Löschen aller Replikationsobjekte aus dem Verleger, indem Sie das folgende Skript in der veröffentlichten Datenbank ausführen:Forcefully drop all replication objects from publisher by running the following script in the published database:

    EXEC sp_removedbreplication
    
  5. Erzwingen Sie das Löschen des alten Verteilers aus der ursprünglichen primären SQL Managed Instance (bei einem Failback auf eine alte primäre Instanz, die einen Verteiler hatte).Forcefully drop old distributor from original primary SQL Managed Instance (if failing back over to an old primary that used to have a distributor). Wenden Sie das folgende Skript auf die Masterdatenbank in der alten als Verteiler fungierenden SQL Managed Instance an:Run the following script on the master database in old distributor SQL Managed Instance:

    EXEC sp_dropdistributor 1,1
    

Wenn Georeplikation für eine Abonnenteninstanz in einer Failovergruppe aktiviert ist, sollte die Veröffentlichung so konfiguriert werden, dass eine Verbindung mit dem Failovergruppen-Listenerendpunkt für die von einem Abonnenten verwaltete Instanz hergestellt wird.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. Im Fall eines Failovers hängt die nachfolgende Aktion durch den Administrator der verwalteten Instanz vom Failovertyp ab, der aufgetreten ist:In the event of a failover, subsequent action by the managed instance administrator depends on the type of failover that occurred:

  • Bei einem Failover ohne Datenverlust wird die Replikation nach einem Failover fortgesetzt.For a failover with no data loss, replication will continue working after failover.
  • Bei einem Failover mit Datenverlust funktioniert die Replikation ebenfalls.For a failover with data loss, replication will work as well. Die verlorenen Änderungen werden dann erneut repliziert.It will replicate the lost changes again.
  • Für ein Failover mit Datenverlust, bei dem der Datenverlust aber außerhalb des Aufbewahrungszeitraums der Verteilungsdatenbank liegt, muss der Administrator der SQL Managed Instance die Abonnementdatenbank erneut initialisieren.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.

Nächste SchritteNext steps

Weitere Informationen zum Konfigurieren von Transaktionsreplikation finden Sie in den folgenden Tutorials:For more information about configuring transactional replication, see the following tutorials:

Weitere InformationenSee also