Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Když dojde k přeřazení skupiny dostupnosti Always On (AG), která obsahuje databázi, jež je odběratelem replikace, může dojít k selhání replikace. U push odběratelů transakční replikace bude distribuční agent pokračovat v replikaci automaticky po přepnutí na zálohu, pokud bylo předplatné vytvořeno s pomocí názvu posluchače AG. U odběratelů vyžádané transakční replikace bude distribuční agent i nadále replikovat automaticky po převzetí služeb při selhání, pokud se předplatné vytvořilo pomocí naslouchacího jména AG a původní server odběratele je v provozu. Důvodem je to, že úlohy distribučního agenta se vytvoří pouze u původního odběratele (primární repliky skupiny dostupnosti). Pro slučovací předplatitele musí správce replikace ručně překonfigurovat odběratele znovuvytvořením předplatného.
Co je podporováno
Replikace SQL Serveru podporuje automatické převzetí služeb při selhání vydavatele a automatické převzetí služeb při selhání transakčních odběratelů. Předplatitelé sloučení můžou být součástí skupiny dostupnosti. Ruční akce jsou však potřeba ke konfiguraci nového klienta po přepnutí při selhání. Skupiny dostupnosti (AG) se nedají kombinovat se scénáři WebSync a SQL Server Compact.
Vytvoření transakčního předplatného ve skupině dostupnosti
Pro transakční replikaci použijte následující postup ke konfiguraci a převzetí služeb při selhání skupiny dostupnosti odběratele:
Před vytvořením předplatného přidejte databázi odběratele do příslušné skupiny dostupnosti (AG).
Přidejte naslouchací proces skupiny dostupnosti (AG) odběratele jako propojený server ke všem uzlům skupiny dostupnosti. Tento krok zajistí, aby všichni potenciální partneři převzetí při selhání věděli a mohli se připojit k posluchači.
Pomocí skriptu v části Vytvoření transakční replikace push předplatného vytvořte předplatné pomocí názvu naslouchacího procesu skupiny dostupnosti předplatitele. Po failoveru zůstane název posluchače vždy platný, zatímco skutečný název serveru odběratele závisí na skutečném uzlu, který se stal novým primárním uzlem.
Poznámka:
K vytvoření předplatného musíte použít skript Transact-SQL. Management Studio nemůžete použít.
Chcete-li vytvořit pull předplatné:
Pomocí ukázkového skriptu v části Vytvoření odběru vyžádané replikace transakční replikace vytvořte předplatné pomocí názvu posluchače skupiny dostupnosti na straně odběratele.
Po převzetí služeb při selhání vytvořte úlohu distribučního agenta na nové primární replice pomocí
sp_addpullsubscription_agentuložené procedury.
Když vytvoříte předplatné s databází v rámci skupiny dostupnosti, po každém převzetí služeb při selhání byste měli zakázat úlohu distribučního agenta na staré primární replice a povolit ji na nové primární replice.
Vytvořte transakční pushové předplatné replikace
-- 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
Vytvoření vyžádaného předplatného transakční replikace
-- 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
Požadavek na naslouchací rozhraní skupiny dostupnosti
Když spustíte sp_addpullsubscription_agent pro odběratele, který je součástí skupiny dostupnosti, musíte předat @subscriber hodnotu parametru uložené proceduře jako název naslouchacího procesu skupiny dostupnosti. Pokud spustíte SQL Server 2016 (13.x) a starší verze nebo SQL Server 2017 (14.x) před verzí CU 16, uložená procedura neodkazuje na název nasluchače Availability Group. Vytvoří předplatné s názvem serveru odběratele, na kterém se příkaz spustí. Pokud chcete tento problém vyřešit, ručně aktualizujte parametr @subscriber na agentu distribuce replikace hodnotou názvu posluchače skupiny dostupnosti.
Pokud naslouchací proces AG odběratele používá jiný než výchozí port, není na Windows podporováno uvedení čísla portu jako součást názvu naslouchacího procesu v parametru @subscriber. Jako alternativní řešení můžete vytvořit alias pro naslouchací proces a port na serveru vydavatele, distributora a odběratele pomocí aliasů (SQL Server Configuration Manager) nebo nástroje SQL Server Client Network Utility (cliconfg) pro SQL Server 2022 (16.x) a novějších verzí a předat alias jako hodnotu parametru @subscriber .
Pokračujte v činnosti agentů slučování po převzetí dostupnosti skupiny odběratele při selhání.
Pro slučovací replikaci musí správce replikace ručně překonfigurovat odběratele pomocí následujících kroků:
Spusťte
sp_subscription_cleanupk odebrání starého předplatného pro předplatitele. Tuto akci proveďte u nové primární repliky (která byla dříve sekundární replikou).Obnovte předplatné tím, že vytvoříte nové předplatné, začínající novým snímkem.
Poznámka:
Tento proces je pro předplatitele replikace sloučení nepohodlný. Hlavní scénář pro slučovací replikaci je však pro odpojené uživatele (stolní počítače, přenosné počítače, ruční zařízení), kteří nepoužívají Availability Groups na straně odběratele.