Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Wanneer een AlwaysOn-beschikbaarheidsgroep (AG) een failover uitvoert, met een database die een replicatieabonnee is, kan het replicatieabonnement mislukken. Voor push-abonnees van transactionele replicatie blijft de distributieagent automatisch repliceren na een failover als het abonnement is gemaakt met behulp van de AG-listenernaam. Voor pull-abonnees met transactionele replicatie blijft de distributieagent automatisch repliceren na een failover, als het abonnement is gemaakt met de naam van de AG-listener en de oorspronkelijke abonneeserver actief is. Dit komt doordat de distributie-agenttaken alleen worden gemaakt op de oorspronkelijke subscriptieontvanger (primaire replica van de beschikbaarheidsgroep). Voor samenvoegabonnees moet een replicatiebeheerder de abonnee handmatig opnieuw configureren door het abonnement opnieuw te maken.
Wat wordt ondersteund
SQL Server-replicatie ondersteunt de automatische failover van de uitgever en de automatische failover van transactionele abonnees. Samenvoegabonnees kunnen deel uitmaken van een beschikbaarheidsgroep. Handmatige acties zijn echter vereist voor het configureren van de nieuwe abonnee na een failover. AG's kunnen niet worden gecombineerd met WebSync- en SQL Server Compact-scenario's.
Een transactioneel abonnement maken in een beschikbaarheidsgroep
Voor transactionele replicatie gebruikt u de volgende stappen om een abonnee-AG te configureren en een failover te laten plaatsvinden:
Voordat u het abonnement maakt, voegt u de abonneedatabase toe aan de juiste beschikbaarheidsgroep.
Voeg de AG-listener van de abonnee toe als een gekoppelde server aan alle knooppunten van de AG. Deze stap zorgt ervoor dat alle potentiële failoverpartners op de hoogte zijn van en verbinding kunnen maken met de listener.
Gebruik het script in de sectie Een pushabonnement voor transactionele replicatie maken om het abonnement te maken met de naam van de AG-listener van de abonnee. Na een failover blijft de listenernaam altijd geldig, terwijl de werkelijke servernaam van de abonnee afhankelijk is van het werkelijke knooppunt dat de nieuwe primaire is geworden.
Opmerking
U moet een Transact-SQL script gebruiken om het abonnement te maken. U kunt Management Studio niet gebruiken.
Een pull-abonnement maken:
Gebruik het voorbeeldscript in de sectie Een pull-abonnement voor transactionele replicatie maken om het abonnement aan te maken met de naam van de AG-listener van de abonnee.
Maak na een failover de distributieagenttaak op de nieuwe primaire replica met behulp van de
sp_addpullsubscription_agentopgeslagen procedure.
Wanneer u een pull-abonnement maakt met de abonnementsdatabase in een AG, moet u na elke failover de distributieagenttaak op de oude primaire replica uitschakelen en de taak op de nieuwe primaire replica inschakelen.
Een pushabonnement voor transactionele replicatie maken
-- 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
Een pull-abonnement voor transactionele replicatie maken
-- 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
Vereiste voor een luisteraar in een beschikbaarheidsgroep
Wanneer u sp_addpullsubscription_agent uitvoert voor een abonnee die deel uitmaakt van een AG, moet u de @subscriber parameterwaarde doorgeven aan de opgeslagen procedure als de naam van de AG-listener. Als u SQL Server 2016 (13.x) en eerdere versies uitvoert, of SQL Server 2017 (14.x) vóór CU 16, verwijst de opgeslagen procedure niet naar de naam van de AG-listener. Hiermee wordt het abonnement gemaakt met de naam van de abonneeserver waarop de opdracht wordt uitgevoerd. U kunt dit probleem oplossen door de @subscriber parameter voor de replicatiedistributieagent handmatig bij te werken met de naamwaarde van de AG-listener.
Als de abonnee AG-listener een niet-standaardpoort gebruikt, wordt het poortnummer opgegeven als onderdeel van de naam van de AG-listener in de @subscriber parameter niet ondersteund in Windows. Als tijdelijke oplossing kunt u een alias maken voor de listener en poort op de uitgever-, distributeur- en abonneeserver met behulp van Aliassen (SQL Server Configuration Manager) of het hulpprogramma SQL Server Client Network Utility (cliconfg) voor SQL Server 2022 (16.x) en latere versies, en de alias doorgeven als de @subscriber parameterwaarde.
De samenvoegagenten hervatten nadat de beschikbaarheidsgroep van de abonnee een failover heeft uitgevoerd
Voor samenvoegreplicatie moet een replicatiebeheerder de abonnee handmatig opnieuw configureren met de volgende stappen:
Voer uit
sp_subscription_cleanupom het oude abonnement voor de abonnee te verwijderen. Voer deze actie uit op de nieuwe primaire replica (voorheen de secundaire replica).Maak het abonnement opnieuw door een nieuw abonnement te maken, te beginnen met een nieuwe momentopname.
Opmerking
Dit proces is onhandig voor samenvoegingsreplicatieabonnees. Het belangrijkste scenario voor samenvoegingsreplicatie is echter niet-verbonden gebruikers (desktops, laptops, handsetapparaten), die geen AG's voor de abonnee gebruiken.