Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
När en Always On-tillgänglighetsgrupp (AG) redundansväxlar och innehåller en databas som fungerar som replikeringsprenumerant, kan replikeringsprenumerationen misslyckas. För push-prenumeranter för transaktionsreplikering fortsätter distributionsagenten att replikera automatiskt efter en redundansväxling om prenumerationen skapades med hjälp av tillgänglighetsgruppens lyssnarnamn. För prenumerationsklienter för transaktionsreplikering fortsätter distributionsagenten att replikera automatiskt efter en failover, om prenumerationen skapades med tillgänglighetsgruppens lyssnarnamn och den ursprungliga prenumerantservern fungerar. Det beror på att distributionsagentjobben bara skapas på den ursprungliga prenumeranten (den primära repliken av tillgänglighetsgruppen). För sammanslagningsprenumeranter måste en replikeringsadministratör manuellt konfigurera om prenumeranten genom att återskapa prenumerationen.
Vad stöds
SQL Server-replikering stöder automatisk redundansväxling av utgivaren och automatisk redundansväxling av transaktionsprenumeranter. Sammanslagningsprenumeranter kan ingå i en tillgänglighetsgrupp. Manuella åtgärder krävs dock för att konfigurera den nya prenumeranten efter en överlämning. AG:er kan inte kombineras med WebSync- och SQL Server Compact-scenarier.
Skapa en transaktionsprenumeration i en tillgänglighetsgrupp
För transaktionsreplikering använder du följande steg för att konfigurera och växla över en tillgänglighetsgrupp:
Innan du skapar prenumerationen lägger du till prenumerantens databas i lämplig tillgänglighetsgrupp.
Lägg till subscribentens AG-lyssnare som länkad server till alla noder i AG. Det här steget säkerställer att alla potentiella redundanspartner är medvetna om och kan ansluta till lyssnaren.
Använd skriptet i avsnittet Skapa en push-prenumeration för transaktionsreplikering och skapa prenumerationen med namnet på AG-lyssnaren för prenumeranten. Efter en överbelastning är lyssnarnamnet alltid giltigt, medan det faktiska servernamnet för prenumeranten beror på vilken nod som blev den nya primära.
Anmärkning
Du måste använda ett Transact-SQL skript för att skapa prenumerationen. Du kan inte använda Management Studio.
Så här skapar du en pull-prenumeration:
Använd exempelskriptet i avsnittet Skapa en transaktionsreplikeringshämtningsprenumeration för att skapa prenumerationen med AG-lyssnarens namn för prenumeranten.
Efter en redundansväxling skapar du distributionsagentjobbet på den nya primära repliken med hjälp av den
sp_addpullsubscription_agentlagrade proceduren.
När du skapar en pull-prenumeration med prenumerationsdatabasen i en tillgänglighetsgrupp (AG), bör du efter varje failover inaktivera distributionsagentjobbet på den gamla primära repliken och aktivera jobbet på den nya primära repliken.
Skapa en push-prenumeration för transaktionsreplikering
-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO
EXEC sp_addsubscription @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@destination_db = N'<subscriber database name>',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0;
GO
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',
@subscriber = N'<AG listener name>',
@subscriber_db = N'<subscriber database name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Skapa en pull-prenumeration för transaktionsreplikering
-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO
EXEC sp_addpullsubscription @publisher = N'<publisher name>',
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@subscription_type = N'pull';
GO
EXEC sp_addpullsubscription_agent @publisher = N'<publisher name>',
@subscriber = N'<AG listener name or alias>',
@distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
@publisher_db = N'<publisher database name>',
@publication = N'<publication name>',
@job_login = NULL,
@job_password = NULL,
@subscriber_security_mode = 1;
GO
Krav för tillgänglighetsgrupplyssnare
När du kör sp_addpullsubscription_agent för en prenumerant som ingår i en tillgänglighetsgrupp måste du skicka @subscriber parametervärdet till den lagrade proceduren som tillgänglighetsgruppens lyssnarnamn. Om du kör SQL Server 2016 (13.x) och tidigare versioner, eller SQL Server 2017 (14.x) före CU 16, refererar den lagrade proceduren inte till tillgänglighetsgruppens lyssnarnamn. Den skapar prenumerationen med det prenumerantservernamn som kommandot körs på. Lös problemet genom att manuellt uppdatera parametern @subscriber på den distributionsagenten för replikering med lyssnarnamnet för tillgänglighetsgruppen (AG).
Om abonnentens tillgänglighetsgruppslyssnare använder en port som inte är standard kan du inte ange portnummer som en del av tillgänglighetsgruppens lyssnarnamn i parametern @subscriber i Windows. Som en lösning kan du skapa ett alias för lyssnaren och porten på utgivaren, distributören och prenumerantservern med alias (SQL Server Configuration Manager) eller verktyget SQL Server Client Network Utility (cliconfg) för SQL Server 2022 (16.x) och senare versioner och skicka aliaset @subscriber som parametervärde.
Återstarta sammanslagningsagenterna efter att tillgänglighetsgruppen hos prenumeranten har övergått till redundansläge
För sammanslagningsreplikering måste en replikeringsadministratör manuellt konfigurera om prenumeranten med följande steg:
Kör
sp_subscription_cleanupför att ta bort den gamla prenumerationen för prenumeranten. Utför den här åtgärden på den nya primära repliken (som tidigare var den sekundära repliken).Återskapa prenumerationen genom att skapa en ny prenumeration, som börjar med en ny ögonblicksbild.
Anmärkning
Den här processen är besvärlig för sammanslagningsreplikeringsprenumeranter. Huvudscenariot för sammanslagningsreplikering är frånkopplade användare (stationära datorer, bärbara datorer, handhållna enheter) som inte använder AG:er på prenumerantens sida.