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 2022 (16.x)
Obsažená skupina dostupnosti je skupina dostupnosti AlwaysOn (AG), která podporuje:
správa objektů metadat (uživatelé, přihlášení, oprávnění, úlohy agenta SQL atd.) v rámci úrovně AG kromě úrovně instance.
specializované databáze odděleného systému v rámci skupiny dostupnosti AG.
Tento článek podrobně popisuje podobnosti, rozdíly a funkce uzavřených AG skupin.
Přehled
Skupiny AG se obvykle skládají z jedné nebo více uživatelských databází, které mají fungovat jako koordinovaná skupina a které se replikují na některém počtu uzlů v clusteru. Pokud dojde k selhání v uzlu nebo ve stavu SQL Serveru na uzlu, který je hostitelem primární kopie, skupina databází se přesune jako jednotka do jiného uzlu repliky ve skupině dostupnosti. Všechny uživatelské databáze zůstanou synchronizované mezi všemi replikami Grupy dostupnosti (AG) v synchronním nebo asynchronním režimu.
Tato architektura funguje dobře pro aplikace, které pracují pouze s touto sadou uživatelských databází. Problémy však vznikají, když aplikace také spoléhají na objekty, jako jsou uživatelé, přihlášení, oprávnění, úlohy agenta a další objekty uložené v některé ze systémových databází (master nebo msdb). Aby bylo zajištěno, že aplikace fungují hladce a předvídatelně, musí správce ručně zajistit, aby všechny změny těchto objektů byly duplikovány napříč všemi instancemi replik ve skupině dostupnosti. Pokud přidáte novou instanci do skupiny dostupnosti (AG), můžete databáze automaticky nebo ručně nasadit v jednoduchém a přehledném procesu. Musíte ale překonfigurovat všechna vlastní nastavení systémové databáze v nové instanci tak, aby odpovídala ostatním replikám.
Obsažené dostupné skupiny (AG) rozšiřují koncept replikace skupiny databází, aby zahrnovaly relevantní části master a msdb databází. Představte si to jako kontext provádění pro aplikace používající obsaženou AG. Cílem je, aby obsažené prostředí skupiny dostupnosti obsahovalo nastavení, která ovlivňují aplikaci, která na ně spoléhá. Uzavřené prostředí skupiny dostupnosti se vztahuje ke všem databázím, s nimiž aplikace pracuje, používání autentizace (přihlášení, uživatelé, oprávnění), jakékoli naplánované úlohy, u nichž je očekáváno spuštění, a další nastavení konfigurace ovlivňující aplikaci.
Tento koncept se liší od databází s omezením, které používají jiný mechanismus pro uživatelské účty tím, že uloží informace o uživateli do samotné databáze. Omezené databáze replikují pouze přihlášení a uživatele, a rozsah replikovaného přihlášení nebo uživatele je omezen na tuto konkrétní databázi (a její repliky).
Naproti tomu, v rámci "Availability Group" (AG), vytváříte uživatele, přihlašovací údaje, oprávnění atd. na úrovni AG. Tyto objekty jsou automaticky konzistentní mezi replikami ve skupině dostupnosti a také konzistentní napříč databázemi v rámci této skupiny dostupnosti. Tato konzistence šetří správci, aby tyto změny musel provádět ručně.
Změny SQL Serveru 2025
SQL Server 2025 (17.x) zavádí podporu distribuované skupiny dostupnosti pro obsažené skupiny dostupnosti.
Rozdíly
Při práci s uzavřenými skupinami AG zvažte určité praktické rozdíly. Mezi tyto rozdíly patří vytvoření obsažených systémových databází a vynucení připojení na úrovni obsažené skupiny dostupnosti, místo připojení na úrovni instance.
Systémové databáze v uzavřeném systému
Každá skupina dostupnosti obsahuje vlastní systémové databáze master a msdb, které jsou pojmenované podle názvu skupiny dostupnosti. Například v obsahovaném AG MyContainedAGmáte databáze MyContainedAG_master a MyContainedAG_msdb. Tyto systémové databáze jsou automaticky nasazené na nové repliky a aktualizace se replikují na tyto databáze stejně jako na jiné databáze ve skupině dostupnosti. Když přidáte objekt, například přihlašovací údaj nebo úlohu agenta při připojení k obsažené skupině dostupnosti, stále uvidíte úlohy agenta a při přechodu obsažené skupiny dostupnosti na jinou instanci se můžete ověřit pomocí přihlašovacího údaje vytvořeného v obsažené skupině dostupnosti.
Důležitý
Obsahované skupiny dostupnosti jsou mechanismem pro udržení konzistentní konfigurace prostředí provádění napříč replikami této skupiny dostupnosti. nepředstavují hranici zabezpečení. Například neexistuje žádná hranice, která by zabránila připojení k obsažené AG v přístupu k databázím mimo AG.
Systémové databáze v nově vytvořené uzavřené skupině dostupnosti (AG) nejsou kopiemi z instance, ve které příkaz spustíte CREATE AVAILABILITY GROUP. Zpočátku jsou prázdné šablony bez jakýchkoli dat. Okamžitě po vytvoření proces zkopíruje účty správce v instanci, která vytvoří obsaženou skupinu dostupnosti do obsažené skupiny dostupnosti master. Správce se tak může přihlásit k obsažené skupině dostupnosti a nastavit zbytek konfigurace.
Pokud ve vaší instanci vytváříte místní uživatele nebo konfigurace, nezobrazí se automaticky při vytváření obsažených systémových databází a nejsou viditelné při připojení k obsažené skupině dostupnosti. Jakmile se uživatelská databáze připojí k obsažené skupině dostupnosti, tito uživatelé okamžitě ztratí přístup. Musíte je ručně znovu vytvořit v systémových databázích obsažených v rámci obsahované skupiny dostupnosti, a to buď přímým připojením k databázi, nebo použitím koncového bodu posluchače. Výjimkou tohoto pravidla je, že se všechna přihlášení v roli sysadmin v nadřazené instanci zkopírují do nové databáze specifické pro master AG během vytváření obsažené AG.
Poznámka
Vzhledem k tomu, že databáze je oddělená pro každou oddělenou skupinu dostupnosti, aktivity na úrovni serveru prováděné v kontextu oddělené skupiny dostupnosti přetrvávají pouze v oddělené systémové databázi. Toto pravidlo zahrnuje auditování. Pokud auditujete aktivitu na úrovni serveru pomocí Auditování SQL Serveru, musíte v rámci každé obsahované skupiny dostupnosti vytvořit stejné auditní záznamy serveru.
Počáteční synchronizace dat
Obsažené systémové databáze podporují automatické seeding pouze jako počáteční metoda synchronizace dat.
V SQL Serveru 2022 (16.x) a starších verzích musí skupiny dostupnosti s omezeným obsahem během vytváření používat automatické nasazování. Při použití příkazu CREATE AVAILABILITY GROUP nebo Průvodce novou skupinou dostupnosti v SQL Server Management Studio zahrňte pouze uživatelské databáze, které podporují automatické nasazení. Pokud chcete přidat velké databáze pomocí ručního seedingu (JOIN ONLY), počkejte, až se vytvoří obsažená skupina dostupnosti.
Ve verzi SQL Server 2025 (17.x) obsahové systémové databáze vždy používají automatické spouštění, i když je v příkazu CREATE AVAILABILITY GROUP uvedeno ruční spouštění. Režim inicializace můžete nastavit na ruční vytvoření uzavřené skupiny dostupnosti a později přidat uživatelské databáze použitím jiných metod synchronizace než automatického seedingu.
Obnovení uzavřené systémové databáze
Chcete-li obnovit zálohy obsažených systémových databází, postupujte takto:
Zahoďte obsažené AG.
Obnovte databáze
masteramsdbna původní primární replice skupiny dostupnosti s obsahem.Odstraňte obsažené databáze
masteramsdbze sekundárních replik.Na primární replice znovu sestavte obsaženou skupinu dostupnosti pomocí původního názvu a uzlů, se syntaxí
WITH (CONTAINED, REUSE_SYSTEM_DATABASES)aSEEDING_MODE = AUTOMATIC.
Při opětovném vytvoření obsažené skupiny dostupnosti nezahrnujte do příkazu systémové databáze CREATE AVAILABILITY GROUP . SQL Server je rozpozná automaticky při zadání REUSE_SYSTEM_DATABASES. V systému SQL Server 2022 (16.x) a starších verzích zahrňte pouze malé uživatelské databáze, které podporují automatické nasazení. Přidejte velké databáze samostatně po vytvoření obsažené skupiny dostupnosti pomocí JOIN ONLY.
Úlohy obsažené skupiny dostupnosti
Úlohy, které patří do omezené skupiny dostupnosti, běží jenom na primární replice. Neběží na sekundárních replikách.
Připojení (uzavřené prostředí)
Je důležité rozlišovat mezi připojením k instanci a připojením ke skupině dostupnosti (AG). Jediným způsobem, jak získat přístup k prostředí obsažené skupiny dostupnosti (AG), je připojit se k naslouchacímu procesu pro obsaženou skupinu dostupnosti nebo se připojit k databázi, která je v obsažené skupině dostupnosti.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"
Kde MyContainedDatabase je databáze v rámci omezené skupiny dostupnosti, se kterou chcete pracovat.
Abyste mohli efektivně používat obsaženou skupinu dostupnosti, je nutné vytvořit naslouchací program. Pokud se připojíte k jedné z instancí hostující obsaženou skupinu dostupnosti, nikoli přímo k obsažené skupině dostupnosti pomocí posluchače, jste v prostředí instance, a ne v obsažené skupině dostupnosti.
Pokud je například vaše skupina dostupnosti MyContainedAG hostovaná na serveru SERVER\MSSQLSERVERa místo připojení k naslouchacímu procesu MyContainedAG_Listenerse připojíte k instanci pomocí SERVER\MSSQLSERVER, nacházíte se v prostředí instance a ne v prostředí MyContainedAG. Podléháte obsahu (uživatelům, oprávněním, úlohám atd.), který se nachází v systémových databázích instance. Pokud chcete získat přístup k obsahu nalezenému v obsažených systémových databázích obsažené skupiny dostupnosti, připojte se místo toho k naslouchacímu procesu skupiny dostupnosti (napříkladMyContainedAG_Listener). Když jste připojeni k instanci prostřednictvím naslouchacího procesu obsažené skupiny dostupnosti, při interakci s masterjste skutečně přesměrováni do databáze master (například MyContainedAG_master).
Směrování pouze pro čtení a uzavřené skupiny dostupnosti
Pokud nakonfigurujete směrování jen pro čtení pro přesměrování připojení se záměrem čtení na sekundární repliku (viz Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn) a chcete se připojit pomocí přihlášení vytvořeného pouze v obsažené skupině dostupnosti, je potřeba vzít v úvahu další aspekty:
- Je nutné zadat databázi, která je součástí Contained Availability Group v připojovacím řetězci.
- Uživatel zadaný v připojovacím řetězci musí mít oprávnění pro přístup k databázím v omezené skupině dostupnosti.
Například v následujícím připojovacím řetězci je AdventureWorks databáze obsažená ve skupině dostupnosti, která má MyContainedListener, a MyUser je uživatel definovaný v obsažené skupině dostupnosti a není součástí žádné z účastnících se instancí.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"
Tento příklad vás připojí ke čitelné sekundární části konfigurace směrování ReadOnly a nacházíte se v kontextu obsažené skupiny dostupnosti.
Rozdíly mezi připojením k instanci a připojením k obsažené skupině dostupnosti
- Při připojení ke skupině dostupnosti AG uživatelé uvidí pouze databáze v této skupině dostupnosti AG a
tempdb. - Na úrovni instance jsou jména obsažených AG
masteramsdb[contained AG]_mastera[contained AG]_msdb. Uvnitř obsaženého AG jsou jejich názvymasteramsdb. - ID databáze pro obsaženou AG
masterje uvnitř obsažené AG1, ale při připojení k instanci je to něco jiného. - I když uživatelé nevidí databáze mimo uzavřenou AG v
sys.databasespři připojení k uzavřené AG, můžou k těmto databázím přistupovat pomocí třídílného názvu nebo příkazuUSE. - Konfiguraci serveru prostřednictvím
sp_configurelze číst z obsaženého připojení AG, ale lze ji zapisovat pouze z úrovně instance. - Z uzavřených připojení skupiny dostupnosti může správce systému provádět operace na úrovni instance, jako je vypnutí SQL Serveru.
- Většinu operací na úrovni databáze, koncového bodu nebo úrovni skupiny dostupnosti lze provádět pouze z připojení instancí, nikoli z připojení obsažené skupiny dostupnosti.
Interakce s dalšími funkcemi
Při používání určitých funkcí s obsaženými skupinami AG zvažte další faktory. Některé funkce se v současné době nepodporují.
Zálohovat
Postupy zálohování databází v uzavřené skupině dostupnosti jsou stejné jako postupy zálohování uživatelských databází. Toto tvrzení platí pro obsažené uživatelské databáze skupiny dostupnosti i systémové databáze skupiny dostupnosti.
Pokud používáte místní umístění zálohování, záložní soubory se umístí na server, na kterém běží úloha zálohování. To znamená, že záložní soubory můžou být v různých umístěních.
Pokud pro záložní umístění použijete síťový prostředek, budou mít všechny servery, které hostují repliky, přístup k danému prostředku.
Povolení vytváření nebo obnovení databáze v relacích skupiny dostupnosti
Platí pro: SQL Server 2025 (17.x) CU 1 a novější verze.
V SQL Server 2025 (17.x) v Kumulativní aktualizaci 1 (CU1) můžete povolit vytvoření a obnovení databáze přímo v rámci relace obsažené skupiny dostupnosti prostřednictvím naslouchacího zařízení této skupiny. Toto vylepšení zjednodušuje pracovní postupy pro uživatele, kteří mají přiřazené příslušné role, což umožňuje bezproblémový provoz v rámci prostředí AG.
Databáze můžou v omezené relaci skupiny dostupnosti vytvářet pouze uživatelé s rolí dbcreator. Databáze můžou obnovit jenom uživatelé s rolí db_owner nebo správce systému .
Následující příklad aktivuje funkci pro vaši relaci s použitím kontextového klíče relace allow_cag_create_db v uložené proceduře sp_set_session_contex. Chcete-li jej zakázat, nastavte @value na 0.
EXECUTE sp_set_session_context
@key = N'allow_cag_create_db',
@value = 1;
Distribuované skupiny dostupnosti
Distribuovaná skupina dostupnosti je speciální typ skupiny dostupnosti, která zahrnuje dvě základní skupiny dostupnosti. Když nakonfigurujete distribuovanou skupinu dostupnosti, změny provedené na globální primární replice (což je primární replika vaší první skupiny dostupnosti) se pak replikují do primární repliky druhé skupiny dostupnosti, označované jako předávací služba.
Počínaje SQL Serverem 2025 (17.x) můžete nakonfigurovat distribuovanou skupinu dostupnosti mezi dvěma obsahovými skupinami dostupnosti. Vzhledem k tomu, že se obsahová skupina dostupnosti spoléhá na obsažené master a msdb systémové databáze, musí mít druhá skupina dostupnosti (předávací server) stejnou systémovou databázi obsahové skupiny dostupnosti jako globální primární server.
Pokud máte v úmyslu použít izolovanou skupinu dostupnosti jako předávač v distribuované skupině dostupnosti, musíte vytvořit tuto skupinu dostupnosti použitím klauzule AUTOSEEDING_SYSTEM_DATABASES pro možnost WITH | CONTAINED v rámci příkazu CREATE AVAILABILITY GROUP. Klauzule AUTOSEEDING_SYSTEM_DATABASES říká systému SQL Server, aby přeskočil vytváření vlastních systémových databází skupiny dostupnosti a místo toho načte systémové databáze skupiny dostupnosti obsažené z globální primární databáze.
Správce prostředků
Platí pro: SQL Server 2022 (16.x) CU 18 a novější verze.
V SQL Serveru 2022 (16.x) před kumulativní aktualizací (CU) 18 a ve starších verzích SQL Serveru není podporována konfigurace nebo použití Resource Governor na obsažených připojeních skupin dostupnosti.
Pokud v SQL Serveru 2022 (16.x) CU 18 a novějších verzích nakonfigurujete správce prostředků na připojení instance, bude se spotřeba prostředků na připojení instance nebo připojení v rámci skupiny dostupnosti řídit očekávaným způsobem. Pokud se pokusíte nakonfigurovat správce prostředků u připojení obsažené skupiny dostupnosti, zobrazí se chyba.
Správce prostředků funguje na úrovni instance databázového serveru. Konfigurace správce prostředků na úrovni instance se nešíří na dostupnost replik. Pro každou instanci hostující repliku dostupnosti musíte nakonfigurovat správce prostředků.
Návod
Pro všechny instance databázového stroje, které hostují repliky dostupnosti, byste měli použít stejnou konfiguraci správce prostředků, aby bylo zajištěno konzistentní chování při přepnutí skupiny dostupnosti.
Další informace najdete v tématu Správce prostředků a kurz: Příklady konfigurace správce prostředků a osvědčené postupy.
Změna zachytávání dat
Zachytávání změn dat (CDC) se implementuje jako úlohy agenta SQL, takže agent SQL musí být spuštěn na všech instancích s replikami v uzavřené skupině dostupnosti.
Pokud chcete použít zachytávání dat změn s obsaženou skupinou dostupnosti, připojte se při konfiguraci CDC k naslouchacímu procesu skupiny dostupnosti, aby metadata CDC byla nakonfigurována s využitím obsažených systémových databází.
Přenášení protokolů
Odesílání protokolů můžete nakonfigurovat, pokud je zdrojová databáze v obsažené skupině dostupnosti. Cílový server pro odesílání protokolu ale není podporován v rámci obsažené skupiny dostupnosti. Kromě toho je potřeba upravit úlohu odeslání protokolu po konfiguraci CDC.
Pokud chcete nakonfigurovat přepravu protokolů s obsaženou skupinou dostupnosti, postupujte takto:
- Připojte se k naslouchacímu procesu posluchače skupiny dostupnosti (AG).
- Nakonfigurujte přepravu protokolu jako obvykle.
- Po nakonfigurování úlohy odesílání protokolu upravte úlohu tak, aby se před provedením zálohy připojila k naslouchacímu zařízení skupiny dostupnosti v kontejneru.
Transparentní šifrování dat (TDE)
Pokud chcete použít transparentní šifrování dat (TDE) s databázemi v obsažené skupině dostupnosti, ručně nainstalujte hlavní klíč databáze (DMK) do obsažené master databáze v rámci obsažené skupiny dostupnosti.
Databáze, které používají TDE (transparentní šifrování dat), spoléhají na certifikáty v databázi master k dešifrování šifrovacího klíče databáze (DEK). Bez takového certifikátu nemůže SQL Server dešifrovat databáze šifrované transparentním šifrováním dat ani je přenést do režimu online. Ve skupině obsažené dostupnosti SQL Server zkontroluje obě dvě databáze master pro DMK, databázi instance master a obsaženou databázi master v rámci skupiny obsažené dostupnosti pro dešifrování databáze. Pokud certifikát nemůže najít v jiném umístění, SQL Server nemůže databázi přenést do online režimu.
Pokud chcete přenést klíč DMK z master databáze instance do obsahující databáze master, přečtěte si téma Přesunutí databáze chráněné transparentním šifrováním dat na jiný SQL Server, a to především se zaměřením na části, ve kterých je DMK přenesen z původního serveru na nový.
Poznámka
Šifrování jakékoli databáze v instanci SQL Serveru také šifruje tempdb systémovou databázi.
Balíčky A plány údržby služby SSIS
Použití balíčků SSIS, včetně plánů údržby, není podporováno pro obsažené skupiny dostupnosti.
Nepodporováno
V současné době nejsou u obsažené skupiny dostupnosti podporované následující funkce SQL Serveru:
- Replikace SQL Serveru libovolného typu (transakční, slučovací, snímek atd.)
- Přeprava protokolů, kde je cílová databáze v obsažené AG. Přenos protokolů se zdrojovou databází v obsažené skupině dostupnosti je podporováno.
Podpora DDL
V pracovním postupu CREATE AVAILABILITY GROUP je WITH klauzule s několika možnostmi:
<with_option_spec> ::=
CONTAINED [REUSE_SYSTEM_DATABASES | AUTOSEEDING_SYSTEM_DATABASES ]
OBSAH
Tato možnost určuje, že skupina dostupnosti, kterou vytváříte, je obsažená skupina dostupnosti.
REUSE_SYSTEM_DATABASES
Tato REUSE_SYSTEM_DATABASES možnost je platná pouze pro uzavřené skupiny dostupnosti (AGs). Určuje, že nová skupina dostupnosti (AG) by měla znovu použít existující systémové databáze obsažené v předchozí skupině dostupnosti se stejným názvem. Pokud jste například měli skupinu dostupnosti s omezením MyContainedAG a chtěli jste ji odstranit a znovu vytvořit, můžete tuto možnost použít k opětovnému použití obsahu původních obsažených systémových databází. Při použití této možnosti nezadávejte názvy systémových databází. SQL Server je automaticky rozpozná.
SYSTÉMOVÉ DATABÁZE AUTOSEEDING
Platí na: SQL Server 2025 (17.x) a novější verze.
Pokud chcete použít obsaženou skupinu dostupnosti jako přenašeč v distribuované skupině dostupnosti, musíte použít možnost AUTOSEEDING_SYSTEM_DATABASES při vytváření obsažené skupiny dostupnosti. Tato možnost říká SQL Serveru, aby přeskočilo vytváření vlastních obsažených systémových databází skupiny dostupnosti (AG) a místo toho nasadilo obsažené systémové databáze ze skupiny dostupnosti z globální primární databáze.
Podpora systémových objektů pro obsažené skupiny dostupnosti
Dvě systémová zobrazení zahrnují přidání souvisejících s obsaženými skupinami dostupnosti:
- Zobrazení dynamické správy sys.dm_exec_sessions obsahuje
contained_availability_group_idsloupec. - Zobrazení katalogu sys.availability_groups obsahuje
is_containedsloupec.