Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
van toepassing op: SQL Server 2022 (16.x)
Een ingesloten beschikbaarheidsgroep is een AlwaysOn-beschikbaarheidsgroep (AG) die ondersteuning biedt voor:
het beheren van metagegevensobjecten (gebruikers, aanmeldingen, machtigingen, SQL Agent-taken, enzovoort) op AG-niveau naast het exemplaarniveau.
gespecialiseerde ingesloten systeemdatabases binnen de AG.
In dit artikel worden de overeenkomsten, verschillen en functionaliteiten van ingesloten AG's beschreven.
Overzicht
AG's bestaan over het algemeen uit een of meer gebruikersdatabases die zijn bedoeld om te werken als een gecoördineerde groep en die worden gerepliceerd op een aantal knooppunten in een cluster. Wanneer er een fout opgetreden is in het knooppunt of in de status van SQL Server op het knooppunt dat als host fungeert voor de primaire kopie, wordt de groep databases verplaatst als een eenheid naar een ander replicaknooppunt in de AG. Alle gebruikersdatabases blijven gesynchroniseerd over alle replica's van de AG, in synchrone of asynchrone modus.
Deze architectuur werkt goed voor toepassingen die alleen met die set gebruikersdatabases communiceren. Problemen ontstaan echter wanneer toepassingen ook afhankelijk zijn van objecten zoals gebruikers, aanmeldingen, machtigingen, agenttaken en andere objecten die zijn opgeslagen in een van de systeemdatabases (master of msdb). Om ervoor te zorgen dat toepassingen soepel en voorspelbaar werken, moet de beheerder er handmatig voor zorgen dat elke wijziging in deze objecten wordt gedupliceerd in alle replica-exemplaren binnen de AG (BeschikbaarheidsGroep). Als u een nieuwe instantie aan de beschikbaarheidsgroep (AG) toevoegt, kunt u de databases automatisch of handmatig initialiseren in een eenvoudig proces. U moet echter alle aanpassingen van de systeemdatabase opnieuw configureren op het nieuwe exemplaar zodat deze overeenkomen met de andere replica's.
Ingesloten AGs breiden het concept uit van het repliceren van een groep databases om relevante delen van de master en msdb databases op te nemen. Denk hieraan als de uitvoeringscontext voor toepassingen die de ingesloten AG gebruiken. Het idee is dat de ingesloten AG-omgeving instellingen bevat die van invloed zijn op de toepassing die erop vertrouwt. Als zodanig heeft de ingesloten AG-omgeving betrekking op alle databases waarmee de toepassing communiceert, de verificatie die wordt gebruikt (aanmeldingen, gebruikers, machtigingen), geplande taken die worden verwacht uit te voeren en andere configuratie-instellingen die van invloed zijn op de toepassing.
Dit concept verschilt van ingesloten databases, die gebruikmaken van een ander mechanisme voor de gebruikersaccounts door de gebruikersgegevens op te slaan in de database zelf. Ingesloten databases repliceren alleen aanmeldingen en gebruikers en het bereik van de gerepliceerde aanmelding of gebruiker is beperkt tot die individuele database (en de bijbehorende replica's).
In een ingesloten beschikbaarheidsgroep maakt u daarentegen gebruikers, aanmeldingen, machtigingen, enzovoort, op beschikbaarheidsgroepniveau aan. Deze objecten zijn automatisch consistent voor replica's in de AG, evenals consistent in databases binnen diezelfde AG. Met deze consistentie hoeft de beheerder deze wijzigingen niet handmatig aan te brengen.
SQL Server 2025-wijzigingen
SQL Server 2025 (17.x) introduceert gedistribueerde beschikbaarheidsgroepondersteuning voor ingesloten beschikbaarheidsgroepen.
Verschillen
Houd rekening met enkele praktische verschillen wanneer u met ingesloten AG's werkt. Deze verschillen omvatten het maken van ingesloten systeemdatabases en het afdwingen van de verbinding op het niveau van de ingesloten AG in plaats van verbinding te maken op exemplaarniveau.
Ingesloten systeemdatabases
Elke ingesloten beschikbaarheidsgroep heeft eigen master en msdb systeemdatabases, genoemd naar de naam van de beschikbaarheidsgroep. In ingesloten AG-MyContainedAGhebt u bijvoorbeeld databases met de naam MyContainedAG_master en MyContainedAG_msdb. Deze systeemdatabases worden automatisch geseed naar nieuwe replica's en updates worden gerepliceerd naar deze databases, net als elke andere database in een beschikbaarheidsgroep. Wanneer u een object zoals een aanmelding of agenttaak toevoegt terwijl deze is verbonden met de ingesloten beschikbaarheidsgroep, ziet u nog steeds de agenttaken en kunt u zich authenticeren door middel van de aanmelding die is gemaakt in de ingesloten AG wanneer de ingesloten AG een failover naar een ander exemplaar uitvoert.
Belangrijk
Ingesloten AG's zijn een mechanisme voor het consistent houden van uitvoeringsomgevingconfiguraties in de replica's van een beschikbaarheidsgroep. Ze vertegenwoordigen geen beveiligingsgrens. Er is bijvoorbeeld geen grens waardoor een verbinding met een ingesloten beschikbaarheidsgroep geen toegang heeft tot databases buiten de beschikbaarheidsgroep.
De systeemdatabases in een nieuw gemaakte ingesloten AG zijn geen kopieën van het exemplaar waarop u de CREATE AVAILABILITY GROUP opdracht uitvoert. Ze zijn in eerste instantie lege sjablonen zonder gegevens. Onmiddellijk na het maken kopieert het proces de beheerdersaccounts op het exemplaar dat de ingesloten AG maakt in de ingesloten AG master. Op die manier kan de beheerder zich aanmelden bij de ingesloten AG en de rest van de configuratie voltooien.
Als u lokale gebruikers of configuraties in uw exemplaar maakt, worden ze niet automatisch weergegeven wanneer u de ingesloten systeemdatabases maakt, en zijn ze ook niet zichtbaar wanneer u verbinding maakt met de ingesloten beschikbaarheidsgroep. Zodra de gebruikersdatabase lid wordt van een ingesloten beschikbaarheidsgroep, hebben deze gebruikers onmiddellijk geen toegang meer. U moet ze handmatig opnieuw maken in de ingesloten systeemdatabases binnen de context van de ingesloten AG door rechtstreeks verbinding te maken met de database of door het listener-eindpunt te gebruiken. De uitzondering op deze regel is dat alle aanmeldingen in de rol sysadmin in de bovenliggende instantie worden gekopieerd naar de nieuwe AG-specifieke master database tijdens het maken van een contained AG.
Notitie
Omdat de master database afzonderlijk is voor elke ingesloten beschikbaarheidsgroep, blijven serverbereikactiviteiten die worden uitgevoerd in de context van de ingesloten beschikbaarheidsgroep alleen behouden in de ingesloten systeemdatabase. Deze regel omvat controle. Als u activiteit op serverniveau controleert met SQL Server Auditing, moet u dezelfde serveraudits maken binnen elke ingesloten AG (Availability Group).
Initiële gegevenssynchronisatie
De ingesloten systeemdatabases ondersteunen alleen automatische seeding als de initiële methode voor gegevenssynchronisatie.
In SQL Server 2022 (16.x) en eerdere versies moeten ingesloten beschikbaarheidsgroepen automatische seeding gebruiken tijdens het maken. Wanneer u de CREATE AVAILABILITY GROUP instructie of de wizard Nieuwe beschikbaarheidsgroep in SQL Server Management Studio gebruikt, neemt u alleen gebruikersdatabases op die ondersteuning bieden voor automatisch seeden. Als u grote databases wilt toevoegen met behulp van handmatige seeding (JOIN ONLY), wacht u totdat de ingesloten AG is gemaakt.
In SQL Server 2025 (17.x) gebruiken ingesloten systeemdatabases altijd automatische seeding, zelfs als de CREATE AVAILABILITY GROUP instructie handmatig seeding aangeeft. U kunt de seedingmodus instellen op handmatig om een zelfstandige beschikbaarheidsgroep (AG) te maken en later gebruikersdatabases toe te voegen met behulp van andere synchronisatiemethoden dan automatische seeding.
Een ingesloten systeemdatabase herstellen
Volg deze stappen om back-ups van ingesloten systeemdatabases te herstellen:
Verwijder de ingesloten Availability Group.
Herstel de ingesloten
masterenmsdbdatabases op de oorspronkelijke primaire replica van de ingesloten BESCHIKBAARHEIDSGROEP.Verwijder de ingesloten
masterenmsdbdatabases uit secundaire replica's.Maak op de primaire replica de gecontaineriseerde beschikbaarheidsgroep opnieuw aan met de oorspronkelijke naam en knooppunten, met de syntaxis
WITH (CONTAINED, REUSE_SYSTEM_DATABASES)enSEEDING_MODE = AUTOMATIC.
Wanneer u een ingesloten beschikbaarheidsgroep opnieuw maakt, moet u geen ingesloten systeemdatabases opnemen in de CREATE AVAILABILITY GROUP instructie. SQL Server detecteert deze automatisch wanneer u opgeeft REUSE_SYSTEM_DATABASES. In SQL Server 2022 (16.x) en eerdere versies zijn alleen kleine gebruikersdatabases opgenomen die ondersteuning bieden voor automatisch seeden. Voeg grote databases afzonderlijk toe nadat de ingesloten beschikbaarheidsgroep is gemaakt, door JOIN ONLY te gebruiken.
Bevatte beschikbaarheidsgroepwerkzaamheden
Taken die deel uitmaken van een ingesloten beschikbaarheidsgroep worden alleen uitgevoerd op de primaire replica. Ze worden niet uitgevoerd op secundaire replica's.
Verbinding maken (ingesloten omgeving)
Het is belangrijk om onderscheid te maken tussen het maken van verbinding met de instantie en het maken van verbinding met de bevatten AG. De enige manier om toegang te krijgen tot de omgeving van de ingesloten AG is om verbinding te maken met de ingesloten AG-listener of om verbinding te maken met een database die zich in de ingesloten AG bevindt.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"
Waar MyContainedDatabase een database is binnen de gekoppelde beschikbaarheidsgroep waarmee u wilt werken.
U moet een listener voor de ingesloten beschikbaarheidsgroep maken om effectief een ingesloten beschikbaarheidsgroep te kunnen gebruiken. Als u verbinding maakt met een van de exemplaren die als host fungeren voor de ingesloten AG in plaats van rechtstreeks naar de ingesloten AG via de listener te maken, bevindt u zich in de omgeving van het exemplaar en niet de ingesloten AG.
Als uw beschikbaarheidsgroep bijvoorbeeld MyContainedAG wordt gehost op de server SERVER\MSSQLSERVERen in plaats van verbinding te maken met de listener MyContainedAG_Listener, maakt u verbinding met het exemplaar met behulp van SERVER\MSSQLSERVER, bevindt u zich in de omgeving van het exemplaar en niet in de omgeving van MyContainedAG. U bent gebonden aan de inhoud (gebruikers, machtigingen, taken, enzovoort) die worden gevonden in deze systeemdatabases van de instantie. Voor toegang tot de inhoud in de ingesloten systeemdatabases van de ingesloten AG maakt u in plaats daarvan verbinding met de ingesloten AG-listener (bijvoorbeeldMyContainedAG_Listener). Wanneer u bent verbonden met het exemplaar via de ingesloten AG-listener, wanneer u met mastercommuniceert, wordt u daadwerkelijk omgeleid naar de ingesloten master-database (bijvoorbeeld MyContainedAG_master).
Alleen-lezen routering en ingesloten beschikbaarheidsgroepen
Als u alleen-lezenroutering configureert om verbindingen met een leesintentie om te leiden naar een secundaire replica (zie Alleen-lezenroutering configureren voor een AlwaysOn-beschikbaarheidsgroep) en u verbinding wilt maken met behulp van een aanmelding die alleen in de ingesloten beschikbaarheidsgroep is gemaakt, zijn er verdere overwegingen:
- U moet een database opgeven die deel uitmaakt van de ingesloten beschikbaarheidsgroep in de verbindingsreeks.
- De gebruiker die is opgegeven in de connectiestring, moet permissie hebben om toegang te krijgen tot de databases in de bevatte AG.
In de volgende verbindingsreeks is AdventureWorks bijvoorbeeld een database binnen de ingesloten beschikbaarheidsgroep die MyContainedListener heeft, en MyUser is een gebruiker die is gedefinieerd in de ingesloten AG en niet in een van de deelnemende instanties.
"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"
In dit voorbeeld wordt u verbonden met de leesbare secundaire server die deel uitmaakt van de configuratie readOnly-routering en u zich in de context van de ingesloten beschikbaarheidsgroep bevindt.
Verschillen tussen het maken van verbinding met het exemplaar en het maken van verbinding met de ingesloten beschikbaarheidsgroep
- Wanneer ze zijn verbonden met een ingesloten beschikbaarheidsgroep, zien gebruikers alleen databases in de ingesloten beschikbaarheidsgroep, plus
tempdb. - Op instantie-niveau zijn de ingesloten AG
masterenmsdbnamen[contained AG]_masteren[contained AG]_msdb. Binnen de ingesloten AG worden hun namenmasterenmsdb. - De database-id voor de ingesloten AG
masteris1vanuit de ingesloten AG, maar iets anders wanneer verbonden met het exemplaar. - Hoewel gebruikers geen databases buiten de ingesloten AG in
sys.databaseszien wanneer ze verbonden zijn via een ingesloten AG-verbinding, kunnen ze toegang verkrijgen tot die databases met een driedelige naam of via de opdrachtUSE. - Serverconfiguratie via
sp_configurekan worden gelezen vanuit de bevatte AG-verbinding, maar kan alleen worden geschreven vanaf instantie-niveau. - Vanuit ingesloten AG-verbindingen kan de systeembeheerder bewerkingen op exemplaarniveau uitvoeren, zoals het afsluiten van SQL Server.
- De meeste bewerkingen op databaseniveau, eindpuntniveau of AG-niveau kunnen alleen worden uitgevoerd vanuit exemplaarverbindingen, niet vanuit contained AG-verbindingen.
Interacties met andere functies
Houd rekening met andere factoren bij het gebruik van bepaalde functies met ingesloten AG's. Sommige functies worden momenteel niet ondersteund.
Reservekopie maken
De procedures voor het maken van back-ups van databases in een ingesloten beschikbaarheidsgroep zijn hetzelfde als back-upprocedures voor gebruikersdatabases. Deze instructie geldt voor zowel de ingesloten AG-gebruikersdatabases als de ingesloten AG-systeemdatabases.
Als u een lokale back-uplocatie gebruikt, worden de back-upbestanden op de server geplaatst waarop de back-uptaak wordt uitgevoerd. Dit betekent dat uw back-upbestanden zich mogelijk op verschillende locaties bevinden.
Als u een netwerkresource gebruikt voor de back-uplocatie, hebben alle servers die replica's hosten toegang nodig tot die resource.
Ingesloten beschikbaarheidsgroepsessies inschakelen om databases te maken of te herstellen.
Van toepassing op: SQL Server 2025 (17.x) CU 1 en latere versies.
In SQL Server 2025 (17.x) Cumulatieve update (CU) 1 kunt u het maken en herstellen van databases rechtstreeks in een ingesloten beschikbaarheidsgroepsessie inschakelen via de ingesloten AG-listener. Deze verbetering stroomlijnt werkstromen voor gebruikers die de juiste rollen hebben toegewezen, waardoor naadloze bewerkingen in ingesloten AG-omgevingen mogelijk zijn.
Alleen gebruikers met de rol dbcreator kunnen databases maken in een ingesloten AG-sessie. Alleen gebruikers met de rol db_owner of sysadmin kunnen databases herstellen.
In het volgende voorbeeld wordt de functie voor uw sessie ingeschakeld met behulp van de sessiecontextsleutel allow_cag_create_db in de sp_set_session_contex opgeslagen procedure. Om het uit te schakelen, stelt u @value in op 0.
EXECUTE sp_set_session_context
@key = N'allow_cag_create_db',
@value = 1;
Gedistribueerde beschikbaarheidsgroepen
Een gedistribueerde beschikbaarheidsgroep is een speciaal type beschikbaarheidsgroep dat twee onderliggende beschikbaarheidsgroepen omvat. Wanneer u een gedistribueerde beschikbaarheidsgroep configureert, worden wijzigingen die zijn aangebracht op de globale primaire replica (de primaire replica van uw eerste AG) vervolgens gerepliceerd naar de primaire replica van uw tweede AG, ook wel de doorstuurreplica genoemd.
Vanaf SQL Server 2025 (17.x) kunt u een gedistribueerde beschikbaarheidsgroep tussen twee ingesloten AG's configureren. Aangezien een ingesloten beschikbaarheidsgroep afhankelijk is van ingesloten master databases en msdb systeemdatabases, moet de tweede AG (doorstuurserver) dezelfde ingesloten AG-systeemdatabase hebben als de globale primaire.
Als u van plan bent om een ingesloten AG te gebruiken als doorstuureenheid in een gedistribueerde beschikbaarheidsgroep, moet u de ingesloten AG maken met behulp van de AUTOSEEDING_SYSTEM_DATABASES clausule voor de WITH | CONTAINED optie van de CREATE AVAILABILITY GROUP-instructie. De AUTOSEEDING_SYSTEM_DATABASES clausule vertelt SQL Server om het aanmaken van zijn eigen ingesloten AG-systeemdatabases over te slaan en in plaats daarvan de ingesloten AG-systeemdatabases vanuit de globale primaire te zaaien.
Resourcesbeheerder
Van toepassing op: SQL Server 2022 (16.x) CU 18 en nieuwere versies.
In SQL Server 2022 (16.x) vóór cumulatieve update (CU) 18 en in oudere versies van SQL Server wordt het configureren of gebruiken van resource governor op ingesloten beschikbaarheidsgroepverbindingen niet ondersteund.
In SQL Server 2022 (16.x) CU 18 en nieuwere versies, als u resource governor configureert voor een exemplaarverbinding, wordt het resourceverbruik voor exemplaarverbindingen of ingesloten beschikbaarheidsgroepverbindingen beheerd zoals verwacht. Als u resource governor probeert te configureren voor een ingesloten verbinding met een beschikbaarheidsgroep, krijgt u een foutmelding.
Resource governor werkt op 'Database Engine'-instantieniveau. Resource Governor-configuratie op exemplaarniveau wordt niet doorgegeven aan beschikbaarheidsreplica's. U moet resource governor configureren voor elk exemplaar dat als host fungeert voor een beschikbaarheidsreplica.
Hint
U moet dezelfde resource governor-configuratie gebruiken voor alle database-engine-exemplaren die beschikbaarheidsreplica's hosten om consistent gedrag te garanderen wanneer failovers van beschikbaarheidsgroepen optreden.
Zie Resource Governor en Zelfstudie: Voorbeelden en best practices van Resource Governor-configuratie voor meer informatie.
Gegevenswijzigingen vastleggen
Change Data Capture (CDC) wordt geïmplementeerd als SQL Agent-taken, dus de SQL Agent moet worden uitgevoerd op alle exemplaren met replica's in de ingesloten AG.
Als u wijzigingsgegevens vastleggen wilt gebruiken met een ingesloten AG, maakt u verbinding met de AG-listener wanneer u CDC configureert, zodat de CDC-metagegevens worden geconfigureerd door de ingesloten systeemdatabases te gebruiken.
Logboekverzending
U kunt logboekverzending configureren als de brondatabase zich in de ingesloten beschikbaarheidsgroep bevindt. Een verzenddoel voor logboeken wordt echter niet ondersteund binnen een ingesloten AG. Daarnaast moet u de taak voor het verzenden van logboeken wijzigen nadat u CDC hebt geconfigureerd.
Volg deze stappen om log shipping met een zelfstandige beschikbaarheidsgroep te configureren:
- Maak verbinding met de ingesloten AG-listener.
- Configureer logboekverzending zoals u dat normaal zou doen.
- Nadat u de logboekverzendingstaak hebt geconfigureerd, wijzigt u de taak om verbinding te maken met de ingesloten AG-listener voordat u een back-up maakt.
Transparent Data Encryption (TDE)
Als u TDE (Transparent Data Encryption) wilt gebruiken met databases in een ingesloten beschikbaarheidsgroep, installeert u de DATABASE Master Key (DMK) handmatig op de ingesloten master-database in de ingesloten BESCHIKBAARHEIDSGROEP.
Databases die gebruikmaken van TDE zijn afhankelijk van certificaten in de master-database om de DEK (Database Encryption Key) te ontsleutelen. Zonder dat certificaat kan SQL Server databases die zijn versleuteld met TDE niet ontsleutelen of online brengen. In een ingesloten beschikbaarheidsgroep controleert SQL Server beide master-databases op de DMK, de master-database voor het exemplaar en de ingesloten master-database binnen de beschikbaarheidsgroep om de database te ontsleutelen. Als het certificaat niet op een van beide locaties kan worden gevonden, kan SQL Server de database niet online brengen.
Als u de DMK wilt overdragen van de master database van de instantie naar de zelfstandige master database, raadpleegt u Een met TDE beveiligde database verplaatsen naar een andere SQL Server, vooral gericht op de gedeelten waar de DMK van de oude server naar de nieuwe wordt overgeplaatst.
Notitie
Als u een database op een SQL Server-exemplaar versleutelt, wordt de tempdb systeemdatabase ook versleuteld.
SSIS-pakketten en onderhoudsplannen
Het gebruik van SSIS-pakketten, inclusief onderhoudsplannen, wordt niet ondersteund met ingesloten beschikbaarheidsgroepen.
Niet ondersteund
Momenteel worden de volgende SQL Server-functies niet ondersteund met een Contained Availability Group (CAG):
- SQL Server-replicatie van elk type (transactionele, samenvoeging, momentopname, enzovoort).
- Log shipping waarbij de doeldatabase zich in de gesloten AG bevindt. Logboekverzending met de brondatabase in de ingesloten beschikbaarheidsgroep wordt ondersteund.
DDL-ondersteuning
In de werkstroom BESCHIKBAARHEIDSGROEP MAKEN is er een WITH component met verschillende opties:
<with_option_spec> ::=
CONTAINED [REUSE_SYSTEM_DATABASES | AUTOSEEDING_SYSTEM_DATABASES ]
INGESLOTEN
Met deze optie geeft u op dat de ag die u maakt een ingesloten ag is.
HERGEBRUIK_SYSTEEM_DATABASES
De REUSE_SYSTEM_DATABASES optie is alleen geldig voor ingesloten AG's. Het geeft aan dat de nieuwe AG bestaande opgenomen systeemdatabases van een eerder opgenomen AG met dezelfde naam opnieuw moet gebruiken. Als u bijvoorbeeld een ingesloten beschikbaarheidsgroep met de naam MyContainedAGhebt en u deze wilt verwijderen en opnieuw wilt maken, kunt u deze optie gebruiken om de inhoud van de oorspronkelijke ingesloten systeemdatabases opnieuw te gebruiken. Wanneer u deze optie gebruikt, moet u geen systeemdatabasenamen opgeven. SQL Server detecteert deze automatisch.
AUTOSEEDING_SYSTEM_DATABASES
Van toepassing op: SQL Server 2025 (17.x) en latere versies.
Als u uw ingesloten beschikbaarheidsgroep wilt gebruiken als de doorstuurserver in een gedistribueerde beschikbaarheidsgroep, moet u de AUTOSEEDING_SYSTEM_DATABASES optie gebruiken wanneer u de ingesloten beschikbaarheidsgroep maakt . Deze optie geeft SQL Server de opdracht om het maken van eigen ingesloten AG-systeemdatabases over te slaan en in plaats daarvan de ingesloten AG-systeemdatabases te zaden van de globale primaire database.
Systeemobjectondersteuning voor ingesloten beschikbaarheidsgroepen
Twee systeemweergaven bevatten toevoegingen met betrekking tot ingesloten beschikbaarheidsgroepen:
- De sys.dm_exec_sessions dynamische beheerweergave bevat een
contained_availability_group_idkolom. - De sys.availability_groups catalogusweergave bevat de
is_containedkolom.