Transactionele replicatie met Azure SQL Managed Instance (preview)
VAN TOEPASSING OP:
Azure SQL Managed Instance
Transactionele replicatie is een functie van Azure SQL Managed Instance en SQL Server waarmee u gegevens uit een tabel in Azure SQL Managed Instance of een SQL Server-exemplaar kunt repliceren naar tabellen in externe databases. Met deze functie kunt u meerdere tabellen in verschillende databases synchroniseren.
Transactionele replicatie is momenteel beschikbaar als openbare preview-versie voor SQL Managed Instance.
Overzicht
U kunt transactionele replicatie gebruiken om wijzigingen die zijn aangebracht in een Azure SQL Managed Instance te pushen naar:
Een SQL Server database - on-premises of op azure-VM
Een database in Azure SQL Database
Een exemplaardatabase in Azure SQL Managed Instance
Notitie
Als u alle functies van Azure SQL Managed Instance wilt gebruiken, moet u de nieuwste versies van SQL Server Management Studio (SSMS) en SQL Server Data Tools (SSDT) gebruiken.
Onderdelen
De belangrijkste onderdelen van transactionele replicatie zijn de Publisher, Distributor en Subscriber, zoals wordt weergegeven in de volgende afbeelding:

| Rol | Azure SQL Database | Azure SQL Managed Instance |
|---|---|---|
| Publisher | Nee | Ja |
| Distributeur | Nee | Ja |
| Pull-abonnee | Nee | Ja |
| Push-abonnee | Ja | Ja |
De Publisher wijzigingen gepubliceerd in sommige tabellen (artikelen) door de updates naar de distributeur te verzenden. De uitgever kan een Azure SQL Managed Instance of een SQL Server zijn.
De distributeur verzamelt wijzigingen in de artikelen van een Publisher distribueert deze naar de abonnees. De distributor kan een Azure SQL Managed Instance of een SQL Server-exemplaar zijn (elke versie zolang deze gelijk is aan of hoger is dan de Publisher versie).
De abonnee ontvangt wijzigingen die zijn aangebracht op de Publisher. Een SQL Server-exemplaar en Azure SQL Managed Instance kunnen zowel push- als pull-abonnees zijn, hoewel een pull-abonnement niet wordt ondersteund wanneer de distributeur een Beheerd exemplaar van Azure SQL is en de abonnee dat niet is. Een database in Azure SQL Database kan alleen een push-abonnee zijn.
Azure SQL Managed Instance kan ondersteuning bieden voor een abonnee van de volgende versies van SQL Server:
SQL Server 2016 en hoger
SQL Server 2014 RTM CU10 (12.0.4427.24) of SP1 CU3 (12.0.2556.4)
SQL Server 2012 SP2 CU8 (11.0.5634.1) of SP3 (11.0.6020.0) of SP4 (11.0.7001.0)
Notitie
- Voor andere versies van SQL Server die geen ondersteuning bieden voor het publiceren naar objecten in Azure, is het mogelijk om de methode voor het opnieuw publiceren van gegevens te gebruiken om gegevens te verplaatsen naar nieuwere versies van SQL Server.
- Als u replicatie probeert te configureren met een oudere versie, kan dit leiden tot foutnummer MSSQL_REPL20084 (het proces kan geen verbinding maken met abonnee.) en MSSQ_REPL40532 (kan de server die is aangevraagd door de aanmelding niet <name> openen. De aanmelding is mislukt.)
Typen replicatie
Er zijn verschillende typen replicatie:
| Replicatie | Azure SQL Database | Azure SQL Managed Instance |
|---|---|---|
| Standaard transactioneel | Ja (alleen als abonnee) | Yes |
| Momentopname | Ja (alleen als abonnee) | Yes |
| Replicatie samenvoegen | Nee | Nee |
| Peer-to-peer | Nee | Nee |
| Bidirectionele | Nee | Ja |
| Abonnementen die kunnen worden bijwerkt | Nee | Nee |
Ondersteuningsmatrix
De ondersteuningsmatrix voor transactionele replicatie voor Azure SQL Managed Instance is hetzelfde als de matrix voor SQL Server.
| Publisher | Distributeur | Abonnee |
|---|---|---|
| SQL Server 2019 | SQL Server 2019 | SQL Server 2019 SQL Server 2017 SQL Server 2016 |
| SQL Server 2017 | SQL Server 2019 SQL Server 2017 |
SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 |
| SQL Server 2016 | SQL Server 2019 SQL Server 2017 SQL Server 2016 |
SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 |
| SQL Server 2014 | SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 |
SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008 |
| SQL Server 2012 | SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 |
SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008 |
| SQL Server 2008 R2 SQL Server 2008 |
SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008 |
SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008 |
Wanneer gebruikt u dit?
Transactionele replicatie is handig in de volgende scenario's:
- Publiceer wijzigingen die zijn aangebracht in een of meer tabellen in een database en distribueer deze naar een of meer databases in een SQL Server-exemplaar of Azure SQL Database die zijn geabonneerd op de wijzigingen.
- Houd verschillende gedistribueerde databases gesynchroniseerd.
- Migreert databases van SQL Server-exemplaar of Azure SQL Managed Instance naar een andere database door de wijzigingen continu te publiceren.
De Data Sync vergelijken met transactionele replicatie
| Categorie | Gegevens synchroniseren | Transactionele replicatie |
|---|---|---|
| Voordelen | - Ondersteuning voor actief/actief - Bi-directioneel tussen on-premises en Azure SQL Database |
- Lagere latentie - Transactionele consistentie - Bestaande topologie opnieuw gebruiken na migratie |
| Nadelen | - Geen transactionele consistentie - Hogere invloed op prestaties |
- Kan niet publiceren vanuit Azure SQL Database - Hoge onderhoudskosten |
Algemene configuraties
Over het algemeen moeten de uitgever en de distributeur zich in de cloud of on-premises hebben. De volgende configuraties worden ondersteund:
Publisher lokale Distributor op SQL Managed Instance

Publisher en distributor worden geconfigureerd binnen één SQL Managed Instance en distribueren wijzigingen naar een ander SQL Managed Instance, SQL Database of SQL Server exemplaar.
Publisher remote distributor op SQL Managed Instance
In deze configuratie publiceert één beheerd exemplaar wijzigingen naar een distributeur die is geplaatst op een ander SQL Managed Instance dat veel SQL Managed Instances kan gebruiken en wijzigingen kan distribueren naar een of meer doelen op Azure SQL Database, Azure SQL Managed Instance of SQL Server.

Publisher en distributor zijn geconfigureerd op twee beheerde exemplaren. Er zijn enkele beperkingen met deze configuratie:
- Beide beheerde exemplaren zijn op hetzelfde vNet.
- Beide beheerde exemplaren bevinden zich op dezelfde locatie.
On-premises Publisher/Distributor met externe abonnee

In deze configuratie is een database in Azure SQL Database Azure SQL Managed Instance een abonnee. Deze configuratie ondersteunt migratie van on-premises naar Azure. Als een abonnee een database in Azure SQL Database is, moet deze zich in de push-modus.
Vereisten
- Gebruik SQL verificatie voor connectiviteit tussen replicatiedeelnemers.
- Gebruik een Azure Storage account share voor de werkmap die door replicatie wordt gebruikt.
- Open TCP-uitgaande poort 445 in de beveiligingsregels van het subnet voor toegang tot de Azure-bestands share.
- Open TCP uitgaande poort 1433 wanneer de SQL Managed Instance de Publisher/Distributor is en de abonnee dat niet is. Mogelijk moet u ook de uitgaande beveiligingsregel SQL Managed Instance NSG voor de poort
allow_linkedserver_outbound1433 Destination Service-tag wijzigen vanvirtualnetworkininternet. - Plaats zowel de uitgever als de distributeur in de cloud of on-premises.
- Configureer VPN-peering tussen de virtuele netwerken van replicatiedeelnemers als de virtuele netwerken verschillen.
Notitie
U kunt fout 53 tegenkomen wanneer u verbinding maakt met een Azure Storage-bestand als de uitgaande netwerkbeveiligingsgroep (NSG) poort 445 is geblokkeerd wanneer de distributeur een Azure SQL Managed Instance-database is en de abonnee on-premises is. Werk de VNet-NSG bij om dit probleem op te lossen.
Met failovergroepen
Als een uitgever of distributeur SQL Managed Instance zich in een failovergroepheeft, moet de beheerder van het SQL Managed Instance alle publicaties op de oude primaire instantie ops schonen en deze opnieuw configureren op de nieuwe primaire instantie nadat er een failover plaatsvindt. De volgende activiteiten zijn nodig in dit scenario:
Stop alle replicatietaken die op de database worden uitgevoerd, als deze er zijn.
Drop subscription metadata from publisher (Metagegevens van abonnement verwijderen van uitgever) door het volgende script uit te voeren in de uitgeversdatabase:
EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'Metagegevens van het abonnement van de abonnee laten vallen. Voer het volgende script uit op de abonnementsdatabase op abonnee 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>';U kunt alle replicatieobjecten van de uitgever geforceeerd verwijderen door het volgende script uit te voeren in de gepubliceerde database:
EXEC sp_removedbreplicationDe oude distributeur geforceerd laten vallen van de oorspronkelijke primaire SQL Managed Instance (als u een back-overval naar een oude primaire instantie hebt gemaakt die voorheen een distributeur had). Voer het volgende script uit op de hoofddatabase in de oude distributor SQL Managed Instance:
EXEC sp_dropdistributor 1,1
Als een abonnee SQL Managed Instance zich in een failovergroep, moet de publicatie worden geconfigureerd om verbinding te maken met het listener-eindpunt van de failovergroep voor het beheerde exemplaar van de abonnee. In het geval van een failover is de volgende actie van de beheerder van het beheerde exemplaar afhankelijk van het type failover dat is opgetreden:
- Voor een failover zonder gegevensverlies blijft de replicatie na een failover werken.
- Voor een failover met gegevensverlies werkt replicatie ook. De verloren wijzigingen worden opnieuw gerepliceerd.
- Voor een failover met gegevensverlies, maar het gegevensverlies valt buiten de bewaarperiode van de distributiedatabase, moet de SQL Managed Instance-beheerder de abonnementsdatabase opnieuwitialiseren.
Volgende stappen
Zie de volgende zelfstudies voor meer informatie over het configureren van transactionele replicatie:
- Replicatie configureren tussen een SQL van een beheerd exemplaar en een abonnee
- Replicatie configureren tussen een SQL uitgever van een beheerd exemplaar, SQL Distributor van managed instance en SQL Server abonnee
- Maak een publicatie.
- Maak een push-abonnement met de servernaam als abonnee (bijvoorbeeld en de database in Azure SQL Database naam als de
N'azuresqldbdns.database.windows.netdoeldatabase (bijvoorbeeld Adventureworks). )