Transaktionsreplikering med Azure SQL Managed Instance (förhandsversion)
GÄLLER FÖR:
Azure SQL Managed Instance
Transaktionsreplikering är en funktion i Azure SQL Managed Instance och SQL Server som gör att du kan replikera data från en tabell i Azure SQL Managed Instance eller en SQL Server-instans till tabeller som placeras på fjärrdatabaser. Med den här funktionen kan du synkronisera flera tabeller i olika databaser.
Transaktionsreplikering är för närvarande i offentlig förhandsversion för SQL Managed Instance.
Översikt
Du kan använda transaktionsreplikering för att skicka ändringar som gjorts i en Azure SQL Managed Instance för att:
En SQL Server databas – lokalt eller på en virtuell Azure-dator
En databas i Azure SQL Database
En instansdatabas i Azure SQL Managed Instance
Anteckning
Om du vill använda alla funktioner i Azure SQL Managed Instance måste du använda de senaste versionerna av SQL Server Management Studio (SSMS) och SQL Server Data Tools (SSDT).
Komponenter
Nyckelkomponenterna i transaktionsreplikering är Publisher, Distributör och Prenumerant, enligt följande bild:

| Roll | Azure SQL Database | Hanterad Azure SQL-instans |
|---|---|---|
| Utgivare | Inga | Ja |
| Distributör | Inga | Ja |
| Pull-prenumerant | Inga | Ja |
| Push-prenumerant | Ja | Ja |
Den Publisher publicerar ändringar som görs i vissa tabeller (artiklar) genom att skicka uppdateringarna till distributören. Utgivaren kan vara en Azure SQL Managed Instance eller en SQL Server instans.
Distributören samlar in ändringar i artiklarna från en Publisher distribuerar dem till prenumeranterna. Distributören kan vara antingen en Azure SQL Managed Instance eller en SQL Server-instans (vilken version som helst så länge den är lika med eller högre än den Publisher versionen).
Prenumeranten får ändringar som gjorts på Publisher. En SQL Server-instans och Azure SQL Managed Instance kan både vara push- och pull-prenumeranter, även om en pull-prenumeration inte stöds när distributören är en hanterad Azure SQL-instans och prenumeranten inte stöds. En databas i Azure SQL Database bara vara push-prenumerant.
Azure SQL Managed Instance har stöd för att vara prenumerant från följande versioner av SQL Server:
SQL Server 2016 och senare
SQL Server 2014 RTM CU10 (12.0.4427.24) eller SP1 CU3 (12.0.2556.4)
SQL Server 2012 SP2 CU8 (11.0.5634.1) eller SP3 (11.0.6020.0) eller SP4 (11.0.7001.0)
Anteckning
- För andra versioner av SQL Server som inte stöder publicering till objekt i Azure är det möjligt att använda metoden för att publicera om data för att flytta data till nyare versioner av SQL Server.
- Försök att konfigurera replikering med en äldre version kan resultera i felnummer MSSQL_REPL20084 (processen kunde inte ansluta till prenumeranten.) och MSSQ_REPL40532 (Det går inte att öppna servern som begärdes vid <name> inloggningen. Inloggningen misslyckades.)
Typer av replikering
Det finns olika typer av replikering:
| Replikering | Azure SQL Database | Hanterad Azure SQL-instans |
|---|---|---|
| Standardtransaktionstransaktion | Ja (endast som prenumerant) | Yes |
| Ögonblicksbild | Ja (endast som prenumerant) | Yes |
| Slå samman replikering | Inga | Inga |
| Peer-to-peer | Inga | Inga |
| Dubbelriktad | Inga | Ja |
| Uppdatbara prenumerationer | Inga | Inga |
Supportmatris
Matrisen för stöd för transaktionsreplikering för Azure SQL Managed Instance är samma som den för SQL Server.
| Utgivare | Distributör | Abonnent |
|---|---|---|
| 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 |
När du ska använda detta
Transaktionsreplikering är användbart i följande scenarier:
- Publicera ändringar som görs i en eller flera tabeller i en databas och distribuera dem till en eller flera databaser i en SQL Server-instans eller Azure SQL Database som prenumererar på ändringarna.
- Se till att flera distribuerade databaser är synkroniserade.
- Migrera databaser från en SQL Server-instans eller Azure SQL Managed Instance till en annan databas genom att kontinuerligt publicera ändringarna.
Jämför Data Sync med transaktionsreplikering
| Kategori | Datasynkronisering | Transaktionsreplikering |
|---|---|---|
| Fördelar | – Stöd för aktiv-aktiv – Dubbelriktad mellan lokala och Azure SQL Database |
– Kortare svarstider – Transaktionskonsekvens – Återanvända befintlig topologi efter migrering |
| Nackdelar | – Ingen transaktionskonsekvens – Högre prestandapåverkan |
– Det går inte att publicera från Azure SQL Database – Höga underhållskostnader |
Vanliga konfigurationer
I allmänhet måste utgivaren och distributören antingen finnas i molnet eller lokalt. Följande konfigurationer stöds:
Publisher lokal distributör på SQL Managed Instance

Publisher och distributören konfigureras inom en enda SQL Managed Instance och distribuerar ändringar till en annan SQL Managed Instance, SQL Database eller SQL Server-instans.
Publisher med fjärrdistributör på SQL Managed Instance
I den här konfigurationen publicerar en hanterad instans ändringar till en distributör som placerats på en annan SQL Managed Instance som kan hantera många SQL-hanterade källinstanser och distribuera ändringar till ett eller flera mål på Azure SQL Database, Azure SQL Managed Instance eller SQL Server.

Publisher och distributören konfigureras på två hanterade instanser. Det finns vissa begränsningar med den här konfigurationen:
- Båda hanterade instanserna finns i samma virtuella nätverk.
- Båda hanterade instanserna finns på samma plats.
Lokal distribution Publisher fjärrprenumerant

I den här konfigurationen är en databas i Azure SQL Database eller Azure SQL Managed Instance en prenumerant. Den här konfigurationen stöder migrering från lokal plats till Azure. Om en prenumerant är en databas Azure SQL Database måste den vara i push-läge.
Krav
- Använd SQL autentisering för anslutning mellan replikeringsdeltagare.
- Använd en Azure Storage-kontoresurs för arbetskatalogen som används av replikeringen.
- Öppna TCP utgående port 445 i undernätets säkerhetsregler för att få åtkomst till Azure-filresursen.
- Öppna TCP:s utgående port 1433 när den SQL Managed Instance är Publisher/Distributor och prenumeranten inte är det. Du kan också behöva ändra säkerhetsregeln för utgående SQL NSG för den hanterade instansen för
allow_linkedserver_outboundport 1433-måltjänsttaggen från tillvirtualnetworkinternet. - Placera både utgivaren och distributören i molnet, eller både och lokalt.
- Konfigurera VPN-peering mellan de virtuella nätverken med replikeringsdeltagare om de virtuella nätverken är olika.
Anteckning
Du kan stöta på fel 53 när du ansluter till en Azure Storage-fil om den utgående nätverkssäkerhetsgruppens (NSG) port 445 blockeras när distributören är en Azure SQL Managed Instance-databas och prenumeranten är lokal. Uppdatera den virtuella nätverkets NSG för att lösa problemet.
Med redundansgrupper
Om en utgivare eller distributör SQL Managed Instance finns i en redundansgrupp måsteadministratören för SQL Managed Instance rensa alla publiceringar på den gamla primära instansen och konfigurera om dem på den nya primära instansen efter en redundans. Följande aktiviteter behövs i det här scenariot:
Stoppa alla replikeringsjobb som körs på databasen, om det finns några.
Ta bort prenumerationsmetadata från utgivaren genom att köra följande skript på utgivardatabasen:
EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'Ta bort prenumerationsmetadata från prenumeranten. Kör följande skript på prenumerationsdatabasen på prenumeranten 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>';Ta bort alla replikeringsobjekt från utgivaren med tvång genom att köra följande skript i den publicerade databasen:
EXEC sp_removedbreplicationLämna den gamla distributören med tvång från den ursprungliga primära SQL Managed Instance (om den kunde gå över till en gammal primär som tidigare hade en distributör). Kör följande skript på huvuddatabasen i den gamla distributören SQL Managed Instance:
EXEC sp_dropdistributor 1,1
Om en prenumerant SQL Managed Instance finns i en redundansgrupp ska publiceringen konfigureras för att ansluta till lyssnarslutpunkten för redundansgruppen för den hanterade prenumerantinstansen. I händelse av redundans beror efterföljande åtgärd av administratören för den hanterade instansen på vilken typ av redundans som inträffade:
- Vid en redundans utan dataförlust fortsätter replikeringen att fungera efter redundans.
- Vid en redundans med dataförlust fungerar replikering också. De förlorade ändringarna replikeras igen.
- Vid en redundans med dataförlust, men dataförlusten ligger utanför kvarhållningsperioden för distributionsdatabasen, måste administratören för SQL Managed Instance initiera om prenumerationsdatabasen.
Nästa steg
Mer information om hur du konfigurerar transaktionsreplikering finns i följande självstudier:
- Konfigurera replikering mellan en SQL utgivare och prenumerant
- Konfigurera replikering mellan en SQL Managed Instance-utgivare, SQL Managed Instance-distributör och SQL Server prenumerant
- Skapa en publikation.
- Skapa en push-prenumeration genom att använda servernamnet som prenumerant (till exempel och
N'azuresqldbdns.database.windows.netdatabasen i Azure SQL Database namn som måldatabas (till exempel Adventureworks. )