Dela via


Vad är en innesluten tillgänglighetsgrupp?

gäller för: SQL Server 2022 (16.x)

En innesluten tillgänglighetsgrupp är en AlwaysOn-tillgänglighetsgrupp (AG) som stöder:

  • hantera metadataobjekt (användare, inloggningar, behörigheter, SQL Agent-jobb och så vidare) på ag-nivå utöver instansnivån.

  • specialiserade inneslutna systemdatabaser inom AG.

Den här artikeln beskriver likheterna, skillnaderna och funktionerna i inneslutna AG:er.

Överblick

AG:er består vanligtvis av en eller flera användardatabaser som är avsedda att fungera som en samordnad grupp och som replikeras på ett antal noder i ett kluster. När det inträffar ett nodefel, eller när SQL Servers hälsotillstånd på noden som värdar den primära kopian försämras, flyttas databaserna som en enhet till en annan repliknod i AG. Alla användardatabaser förblir synkroniserade över alla repliker av tillgänglighetsgruppen (AG), antingen i synkront eller asynkront läge.

Den här arkitekturen fungerar bra för program som bara interagerar med den uppsättningen användardatabaser. Utmaningar uppstår dock när program också förlitar sig på objekt som användare, inloggningar, behörigheter, agentjobb och andra objekt som lagras i en av systemdatabaserna (master eller msdb). För att säkerställa att programmen fungerar smidigt och förutsägbart måste administratören manuellt se till att alla ändringar av dessa objekt dupliceras över alla replikinstanser i tillgänglighetsgruppen. Om du lägger till en ny instans i tillgänglighetsgruppen kan du automatiskt eller manuellt seeda databaserna i en enkel process. Du måste dock konfigurera om alla systemdatabasanpassningar på den nya instansen för att matcha de andra replikerna.

Inneslutna AG:er utökar begreppet databasgrupp som replikeras till att omfatta relevanta delar av master och msdb databaser. Tänk på det som körningskontexten för applikationer som använder den inneslutna AG. Tanken är att den inneslutna AG-miljön innehåller inställningar som påverkar det program som förlitar sig på dem. Därför gäller den inneslutna AG-miljön alla databaser som programmet interagerar med, den autentisering som används (inloggningar, användare, behörigheter), alla schemalagda uppgifter som förväntas köras och andra konfigurationsinställningar som påverkar programmet.

Det här konceptet skiljer sig från inneslutna databaser, som använder en annan mekanism för användarkontona, genom att lagra användarinformationen i själva databasen. Inneslutna databaser replikerar endast inloggningar och användare, och omfattningen för den replikerade inloggningen eller användaren är begränsad till den enskilda databasen (och dess repliker).

I en begränsad AG skapar du däremot användare, inloggningar, behörigheter och så vidare på AG-nivå. Dessa objekt är automatiskt konsekventa mellan replikor i tillgänglighetsgruppen, samt konsekventa mellan databaser i den inneslutna tillgänglighetsgruppen. Denna konsekvens innebär att administratören slipper göra dessa ändringar manuellt.

SQL Server 2025-ändringar

SQL Server 2025 (17.x) introducerar stöd för distribuerade tillgänglighetsgrupper för inneslutna tillgänglighetsgrupper.

Skillnader

När du arbetar med inneslutna AG:er bör du överväga några praktiska skillnader. Dessa skillnader omfattar skapandet av inneslutna systemdatabaser och tvångsanställa anslutningen på den kontoinerade AG-nivån i stället för anslutning på instansnivå.

Inneslutna systemdatabaser

Varje tillgänglighetsgrupp har sina egna master och msdb systemdatabaser, namngivna efter tillgänglighetsgruppens namn. I den i sammanhanget angivna AG MyContainedAG, har du till exempel databaser som heter MyContainedAG_master och MyContainedAG_msdb. Dessa systemdatabaser skickas automatiskt till nya repliker och uppdateringar replikeras till dessa databaser precis som andra databaser i en tillgänglighetsgrupp. När du lägger till ett objekt, till exempel ett inloggnings- eller agentjobb när du är ansluten till den inneslutna tillgänglighetsgruppen, ser du fortfarande agentjobben och kan autentisera med hjälp av inloggningen som skapades i den inneslutna tillgänglighetsgruppen när den inneslutna tillgänglighetsgruppen redundansväxlar till en annan instans.

Viktig

Inneslutna AG:er är en mekanism för att hålla körningsmiljökonfigurationer konsekventa mellan replikerna i en tillgänglighetsgrupp. De representerar inte en säkerhetsgräns. Det finns till exempel ingen gräns som hindrar en anslutning till en innesluten tillgänglighetsgrupp från att komma åt databaser utanför tillgänglighetsgruppen.

Systemdatabaserna i en nyligen skapad avgränsad AG är inte kopior från den instans där du kör kommandot CREATE AVAILABILITY GROUP. De är till en början tomma mallar utan data. Omedelbart efter skapandet kopieras administratörskontona av processen från den instans som skapar den inneslutna AG till den inneslutna AG master. På så sätt kan administratören logga in på den inneslutna AG:n och konfigurera den resterande konfigurationen.

Om du skapar lokala användare eller konfigurationer i din instans visas de inte automatiskt när du skapar dina inneslutna systemdatabaser och de visas inte när du ansluter till den inneslutna tillgänglighetsgruppen. När användardatabasen går med i en listad tillgänglighetsgrupp förlorar dessa användare omedelbart sin åtkomst. Du måste manuellt återskapa dem i de avgränsade systemdatabaserna inom kontexten för den Inneslutna Tillgänglighetsgruppen, genom att ansluta direkt till databasen eller med hjälp av lyssnarens slutpunkt. Undantaget till den här regeln är att alla inloggningar i sysadmin-rollen i den överordnade instansen kopieras till den nya tillgänglighetsgruppens specifika master databas när den inneslutna tillgänglighetsgruppen skapas.

Not

master Eftersom databasen är separat för varje innesluten tillgänglighetsgrupp bevaras aktiviteter med serveromfattning som utförs i kontexten för den inneslutna tillgänglighetsgruppen endast i den inneslutna systemdatabasen. Den här regeln omfattar granskning. Om du granskar aktivitet på servernivå med SQL Server-granskning behöver du skapa motsvarande servergranskningar i varje inhägnad tillgänglighetsgrupp.

Initial datasynkronisering

De inneslutna systemdatabaserna stöder endast automatisk seeding som den inledande datasynkroniseringsmetoden.

I SQL Server 2022 (16.x) och tidigare versioner måste inneslutna tillgänglighetsgrupper använda automatisk seeding när de skapas. När du använder instruktionen CREATE AVAILABILITY GROUP eller guiden Ny tillgänglighetsgrupp i SQL Server Management Studio ska du bara inkludera användardatabaser som stöder automatisk seeding. Om du vill lägga till stora databaser med hjälp av manuell seeding (JOIN ONLY) väntar du tills den inneslutna tillgänglighetsgruppen har skapats.

I SQL Server 2025 (17.x) använder inneslutna systemdatabaser alltid automatisk seeding, även om instruktionen CREATE AVAILABILITY GROUP anger manuell seeding. Du kan ställa in såddläge till manuellt för att skapa en isolerad tillgänglighetsgrupp och senare lägga till användardatabaser med alternativa synkroniseringsmetoder istället för automatisk sådd.

Återställa en innesluten systemdatabas

Följ dessa steg för att återställa säkerhetskopior av inneslutna systemdatabaser:

  1. Släpp den inneslutna AG:n.

  2. Återställ de innehållna master och msdb databaserna på den ursprungliga primära replika av den innehållna AG.

  3. Ta bort de inneslutna master och msdb databaserna från de sekundära replikerna.

  4. På den primära repliken återskapar du den inneslutna tillgänglighetsgruppen med det ursprungliga namnet och noderna, med WITH (CONTAINED, REUSE_SYSTEM_DATABASES) och SEEDING_MODE = AUTOMATIC syntax.

När du återskapar en innesluten tillgänglighetsgrupp ska du inte ta med inneslutna systemdatabaser i -instruktionen CREATE AVAILABILITY GROUP . SQL Server identifierar dem automatiskt när du anger REUSE_SYSTEM_DATABASES. I SQL Server 2022 (16.x) och tidigare versioner innehåller endast små användardatabaser som stöder automatisk seeding. Lägg till stora databaser separat efter att den inneslutna AG har skapats med JOIN ONLY.

Avgränsade tillgänglighetsgruppjobb

Jobb som tillhör en begränsad tillgänglighetsgrupp körs endast på den primära kopian. De körs inte på sekundära repliker.

Anslut (avgränsad miljö)

Det är viktigt att göra skillnad mellan att ansluta till instansen och att ansluta till den tillhörande AG. Det enda sättet att komma åt miljön för den inneslutna tillgänglighetsgruppen är att ansluta till den inneslutna tillgänglighetsgruppens lyssnare eller att ansluta till en databas som finns i den inneslutna tillgänglighetsgruppen.

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"

Var MyContainedDatabase finns en databas i den inneslutna tillgänglighetsgruppen som du vill interagera med.

Du måste skapa en lyssnare för den inneslutna tillgänglighetsgruppen för att effektivt använda en innesluten tillgänglighetsgrupp. Om du ansluter till en av de instanserna som är värd för den inneslutna tillgänglighetsgruppen i stället för att direkt till den inneslutna tillgänglighetsgruppen via lyssnarenär du i miljön för instansen och inte den inneslutna tillgänglighetsgruppen.

Om tillgänglighetsgruppen till exempel MyContainedAG finns på servern SERVER\MSSQLSERVERoch i stället för att ansluta till lyssnaren MyContainedAG_Listeneransluter du till instansen med SERVER\MSSQLSERVER, är du i instansens miljö och inte i miljön för MyContainedAG. Du omfattas av innehållet (användare, behörigheter, jobb och så vidare) som finns i systemdatabaserna i instansen. För att komma åt innehållet som finns i de inneslutna systemdatabaserna i den inneslutna tillgänglighetsgruppen ansluter du till den inneslutna tillgänglighetsgruppens lyssnare (MyContainedAG_Listener, till exempel) i stället. När du ansluter till instansen via lyssnaren för den begränsade tillgänglighetsgruppen och interagerar med master, blir du faktiskt omdirigerad till den begränsade master-databasen (till exempel MyContainedAG_master).

Endast läsbar routing och avgränsade tillgänglighetsgrupper

Om du konfigurerar skrivskyddad routning för att omdirigera anslutningar med läsinsikt till en sekundär replik (se Konfigurera skrivskyddad routning för en AlwaysOn-tillgänglighetsgrupp) och du vill ansluta med en inloggning som endast skapas i den inneslutna tillgänglighetsgruppen finns det ytterligare överväganden:

  • Du måste ange en databas som ingår i den innehållna AG (tillgänglighetsgrupp) i anslutningssträngen.
  • Användaren som anges i anslutningssträngen måste ha behörighet för att komma åt databaserna i den inneslutna tillgänglighetsgruppen.

I följande anslutningssträng AdventureWorks är till exempel en databas i den inneslutna tillgänglighetsgruppen som har MyContainedListener, och MyUser är en användare som definierats i den inneslutna tillgänglighetsgruppen och ingen av de deltagande instanserna:

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"

Det här exemplet ansluter dig till den läsbara sekundära som ingår i ReadOnly Routing-konfigurationen, och du är inom kontexten för den inneslutna tillgänglighetsgruppen.

Skillnader mellan att ansluta till instansen och ansluta till den inneslutna tillgänglighetsgruppen

  • När de är anslutna till en innesluten tillgänglighetsgrupp ser användarna bara databaser i den inneslutna tillgänglighetsgruppen, plus tempdb.
  • På instansnivå är de innehållna AG-namnen master och msdb, [contained AG]_masteroch [contained AG]_msdb. I det inneslutna AG är deras namn master och msdb.
  • Databas-ID för den inneslutna AG:n master är 1 inifrån den inneslutna AG:n, men något annat när den är ansluten till instansen.
  • Även om användarna inte ser databaser utanför den inneslutna tillgänglighetsgruppen i sys.databases när de är anslutna i en innesluten tillgänglighetsgruppsanslutning, kan de komma åt dessa databaser med tredelade namn eller via kommandot USE.
  • Serverkonfiguration via sp_configure kan läsas från den inneslutna AG-anslutningen, men kan endast skrivas på instansnivå.
  • Från inneslutna AG-anslutningar kan sysadmin utföra åtgärder på instansnivå, till exempel stänga av SQL Server.
  • De flesta åtgärder på databasnivå, ändpunktsnivå eller tillgänglighetsgruppsnivå kan endast utföras från instansanslutningar, inte från kontrollerade tillgänglighetsgruppsanslutningar.

Interaktioner med andra funktioner

Tänk på andra faktorer när du använder vissa funktioner med inneslutna AG:er. Vissa funktioner stöds för närvarande inte.

Säkerhetskopiera

Procedurerna för att säkerhetskopiera databaser i en innesluten tillgänglighetsgrupp är desamma som alla säkerhetskopieringsprocedurer för användardatabaser. Det här uttalandet gäller både för de innehållna AG-användardatabaserna och AG-systemdatabaserna.

Om du använder en lokal säkerhetskopieringsplats placeras säkerhetskopieringsfilerna på den server som kör säkerhetskopieringsjobbet. Det innebär att dina säkerhetskopieringsfiler kan finnas på olika platser.

Om du använder en nätverksresurs för säkerhetskopieringsplatsen behöver alla servrar som är värdar för repliker åtkomst till den resursen.

Aktivera skapande eller återställning av databaser i inneslutna tillgänglighetsgruppsessioner

Gäller för: SQL Server 2025 (17.x) CU 1 och senare versioner.

I SQL Server 2025 (17.x) Kumulativ Uppdatering (CU) 1 kan du aktivera skapande och återställning av databaser direkt i en innesluten tillgänglighetsgruppsession via den inneslutna AG-listenern. Den här förbättringen effektiviserar arbetsflöden för användare som tilldelats lämpliga roller, vilket möjliggör sömlösa operationer inom inneslutna miljöer för tillgänglighetsgrupper.

Endast användare med rollen dbcreator kan skapa databaser i en innesluten tillgänglighetsgruppssession. Endast användare med rollen db_owner eller sysadmin kan återställa databaser.

I följande exempel aktiveras funktionen för sessionen med hjälp av sessionskontextnyckeln allow_cag_create_db i den sp_set_session_contex lagrade proceduren. Om du vill inaktivera det anger du @value till 0.

EXECUTE sp_set_session_context
    @key = N'allow_cag_create_db',
    @value = 1;

Distribuerade tillgänglighetsgrupper

En distribuerad tillgänglighetsgrupp är en särskild typ av tillgänglighetsgrupp som omfattar två underliggande tillgänglighetsgrupper. När du konfigurerar en distribuerad tillgänglighetsgrupp replikeras ändringar som görs på den globala primärrepliken (som är den primära repliken för din första tillgänglighetsgrupp) till den primära repliken av den andra tillgänglighetsgruppen, som kallas vidarebefordraren.

Från och med SQL Server 2025 (17.x) kan du konfigurera en distribuerad tillgänglighetsgrupp mellan två inneslutna AG:er. Eftersom en innesluten tillgänglighetsgrupp förlitar sig på inneslutna master databaser och msdb systemdatabaser måste den andra tillgänglighetsgruppen (vidarebefordraren) ha samma innehållna tillgänglighetsgruppsdatabas som den globala primära.

Om du tänker använda en innesluten tillgänglighetsgrupp (AG) som vidarebefordrare i en distribuerad tillgänglighetsgrupp måste du skapa den inneslutna AG med hjälp av AUTOSEEDING_SYSTEM_DATABASES-klausulen för WITH | CONTAINED-alternativet i CREATE AVAILABILITY GROUP-instruktionen. Satsen AUTOSEEDING_SYSTEM_DATABASES instruerar SQL Server att hoppa över att skapa egna inneslutna AG-systemdatabaser och istället så de inneslutna AG-systemdatabaserna från den globala primära.

Resursguvernör

Gäller för: SQL Server 2022 (16.x) CU 18 och senare versioner.

I SQL Server 2022 (16.x) före kumulativ uppdatering (CU) 18 och i äldre versioner av SQL Server stöds inte konfiguration eller användning av resource governor på inneslutna tillgänglighetsgruppanslutningar.

I SQL Server 2022 (16.x) CU 18 och senare versioner styrs resursförbrukningen på antingen instansanslutningar eller inneslutna tillgänglighetsgruppanslutningar som förväntat om du konfigurerar resursguvernör för en instansanslutning. Om du försöker konfigurera resursguvernören för en innesluten tillgänglighetsgruppanslutning får du ett fel.

Resursguvernören fungerar på instansnivå för databasmotorn. Konfigurationen av resursguvernören på instansnivå överförs inte till tillgänglighetsrepliker. Du måste konfigurera resursguvernör för varje instans som är värd för en tillgänglighetsreplik.

Tips/Råd

Du bör använda samma resursstyrningskonfiguration för alla instanser av databasmotorn som är värdar för tillgänglighetsrepliker för att säkerställa konsekvent beteende när redundansväxlingar för tillgänglighetsgrupper sker.

Mer information finns i Resursguvernör och Självstudie: Konfigurationsexempel för resursguvernör och metodtips.

Ändra datainsamling

Ändringsdatainsamling (CDC) implementeras som SQL Agent-jobb, så SQL-agenten måste köras på alla instanser med repliker i den innehållna AG:n.

Om du vill använda Change Data Capture med en tillgänglighetsgrupp med inneslutet läge, anslut till lyssnaren för tillgänglighetsgruppen när du konfigurerar CDC så att CDC-metadata konfigureras med hjälp av de inneslutna systemdatabaserna.

Loggöverföring

Du kan konfigurera loggleverans om källdatabasen finns i den inneslutna tillgänglighetsgruppen. Ett loggleveransmål stöds dock inte i en avgränsad tillgänglighetsgrupp. Dessutom måste du ändra loggöverföringsjobbet när du har konfigurerat CDC.

Följ dessa steg för att konfigurera loggöverföring med en innesluten tillgänglighetsgrupp (AG):

  1. Anslut till den begränsade AG-lyssnaren.
  2. Konfigurera loggöverföring som du normalt skulle göra.
  3. När du har konfigurerat loggleveransjobbet justerar du jobbet för att ansluta till den innehållna AG-lyssnaren innan du säkerhetskopierar.

Transparent datakryptering (TDE)

Om du vill använda transparent datakryptering (TDE) med databaser i en innesluten tillgänglighetsgrupp installerar du manuellt databashuvudnyckeln (DMK) till den inneslutna master databasen i den inneslutna tillgänglighetsgruppen.

Databaser som använder TDE förlitar sig på certifikat i master-databasen för att dekryptera databaskrypteringsnyckeln (DEK). Utan det certifikatet kan SQL Server inte dekryptera databaser som krypterats med TDE eller föra dem online. I en kontrollerad AG, kontrollerar SQL Server både master-databaserna för DMK, master-databasen för instansen och den inneslutna master-databasen inom den inneslutna AG:n för att dekryptera databasen. Om det inte kan hitta certifikatet på någon av platserna kan SQL Server inte ta databasen online.

Information om hur du överför DMK:n från master instansdatabasen till den inneslutna master databasen finns i Flytta en TDE-skyddad databas till en annan SQL Server, främst med fokus på de delar där DMK överförs från den gamla servern till den nya.

Not

Om du krypterar en databas på en SQL Server-instans krypteras även systemdatabasentempdb.

SSIS-paket och underhållsplaner

Användning av SSIS-paket, inklusive underhållsplaner, stöds inte med inneslutna tillgänglighetsgrupper.

Stöds inte

För närvarande stöds inte följande SQL Server-funktioner i en innesluten tillgänglighetsgrupp:

  • SQL Server-replikering av valfri typ (transaktionell, sammanslagning, ögonblicksbild och så vidare).
  • Loggleverans där måldatabasen finns i den avgränsade tillgänglighetsgruppen. Loggleverans med källdatabasen i den inneslutna tillgänglighetsgruppen stöds.

DDL-stöd

I arbetsflödet SKAPA TILLGÄNGLIGHETSGRUPP finns det en WITH sats med flera alternativ:

<with_option_spec> ::=
CONTAINED [REUSE_SYSTEM_DATABASES | AUTOSEEDING_SYSTEM_DATABASES ]

INNEHÖLL

Det här alternativet anger att AG:n som du skapar är en begränsad AG.

REUSE_SYSTEM_DATABASES

Alternativet REUSE_SYSTEM_DATABASES är endast giltigt för inneslutna AG:er. Den anger att den nya tillgänglighetsgruppen ska återanvända befintliga inneslutna systemdatabaser från en tidigare innesluten tillgänglighetsgrupp med samma namn. Om du till exempel hade en containergjord AG med namnet MyContainedAG, och du ville ta bort och återskapa den, kan du använda det här alternativet för att återanvända innehållet i de ursprungliga containergjorda systemdatabaserna. När du använder det här alternativet ska du inte ange systemdatabasnamn. SQL Server identifierar dem automatiskt.

AUTOSEEDING_SYSTEM_DATABASES

Gäller för: SQL Server 2025 (17.x) och senare versioner.

Om du vill använda den inneslutna tillgänglighetsgruppen som vidarebefordrare i en distribuerad tillgänglighetsgrupp måste du använda AUTOSEEDING_SYSTEM_DATABASES alternativet när du skapar den inneslutna tillgänglighetsgruppen. Det här alternativet instruerar SQL Server att hoppa över skapandet av sina egna inneslutna AG-systemdatabaser och istället överföra de inneslutna AG-systemdatabaserna från den globala primära.

Stöd för systemobjekt för inneslutna tillgänglighetsgrupper

Två systemvyer innehåller tillägg relaterade till inneslutna tillgänglighetsgrupper: