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-
In dit onderwerp wordt beschreven hoe u een database voorbereidt op een AlwaysOn-beschikbaarheidsgroep in SQL Server met behulp van SQL Server Management Studio, Transact-SQL of PowerShell. Voor het voorbereiden van een database zijn twee stappen vereist:
- Herstel een recente databaseback-up van de primaire database en vervolglogboekback-ups naar elk serverexemplaar dat als host fungeert voor de secundaire replica, met RESTORE WITH NORECOVERY.
- Voeg de herstelde database toe aan de beschikbaarheidsgroep.
Fooi
Als u een bestaande configuratie voor logboekverzending hebt, kunt u de primaire database voor logboekverzending samen met een of meer secundaire databases converteren naar een primaire replica van een beschikbaarheidsgroep en een of meer secundaire replica's. Zie Vereisten voor het migreren van logboekverzending naar AlwaysOn-beschikbaarheidsgroepen (SQL Server)voor meer informatie.
Vereisten en beperkingen
Zorg ervoor dat het systeem waarop u de database wilt plaatsen een schijfstation heeft met voldoende ruimte voor de secundaire databases.
De naam van de secundaire database moet gelijk zijn aan de naam van de primaire database.
Gebruik RESTORE WITH NORECOVERY voor elke herstelbewerking.
Als de secundaire database zich op een ander bestandspad (inclusief de stationsletter) moet bevinden dan de primaire database, moet de herstelopdracht ook de optie WITH MOVE gebruiken voor elk van de databasebestanden om deze op te geven naar het pad van de secundaire database.
Als u de databasebestandsgroep per bestandsgroep herstelt, moet u ervoor zorgen dat u de hele database herstelt.
Nadat u de database hebt hersteld, moet u elke logboekback-up die is gemaakt sinds de laatste herstelde gegevensback-up herstellen (WITH NORECOVERY).
Aanbevelingen
Bij zelfstandige exemplaren van SQL Server raden we u aan, indien mogelijk, het bestandspad (inclusief de stationsletter) van een bepaalde secundaire database identiek te zijn aan het pad van de bijbehorende primaire database. Dit komt doordat als u de databasebestanden verplaatst bij het maken van een secundaire database, een latere bewerking voor het toevoegen van bestanden op de secundaire database kan mislukken en ervoor zorgt dat de secundaire database wordt onderbroken.
Voordat u uw secundaire databases voorbereidt, raden we u ten zeerste aan geplande logboekback-ups op de databases in de beschikbaarheidsgroep op te schorten totdat de initialisatie van secundaire replica's is voltooid.
Veiligheid
Wanneer een back-up van een database wordt gemaakt, wordt de eigenschap TRUSTWORTHY-databaseeigenschap is ingesteld op UIT. Daarom is TRUSTWORTHY altijd UITGESCHAKELD op een zojuist herstelde database.
Machtigingen
Machtigingen voor BACKUP DATABASE en BACKUP LOG zijn standaard toegewezen aan leden van de sysadmin vaste serverrol en de db_owner en db_backupoperator vaste databaserollen. Zie BACKUP (Transact-SQL)voor meer informatie.
Wanneer de database die wordt hersteld niet bestaat op de serverinstantie, zijn er CREËER DATABASE-machtigingen vereist. Zie RESTORE (Transact-SQL)voor meer informatie.
SQL Server Management Studio gebruiken
Notitie
Als de back-up- en herstelbestandspaden identiek zijn tussen het serverexemplaren die als host fungeert voor de primaire replica en elk exemplaar dat als host fungeert voor een secundaire replica, kunt u secundaire replicadatabases maken met wizard Nieuwe beschikbaarheidsgroep, wizard Replica toevoegen aan beschikbaarheidsgroepof wizard Database toevoegen aan beschikbaarheidsgroep.
Een secundaire database voorbereiden
Tenzij u al een recente databaseback-up van de primaire database hebt, maakt u een nieuwe volledige of differentiële databaseback-up. Als best practice plaatst u deze back-up en eventuele volgende logboekback-ups op de aanbevolen netwerkshare.
Maak ten minste één nieuwe logboekback-up van de primaire database.
Notitie
Een back-up van transactielogboeken is mogelijk niet vereist als een back-up van het transactielogboek niet eerder is vastgelegd in de database in de primaire replica. Microsoft raadt aan een back-up van een transactielogboek te maken telkens wanneer een nieuwe database aan de beschikbaarheidsgroep wordt toegevoegd.
Op de serverexemplaar dat fungeert als host voor de secundaire replica, herstel de volledige databaseback-up van de primaire database (en eventueel een differentiële back-up), gevolgd door eventueel volgende logboekback-ups.
Selecteer op de pagina RESTORE DATABASE Options de optie Laat de database niet operationeel en zet de niet-doorgevoerde transacties niet terug. Aanvullende transactielogboeken kunnen worden hersteld. (HERSTELLEN MET NORECOVERY).
Als de bestandspaden van de primaire database en de secundaire database verschillen, bijvoorbeeld, als de primaire database zich op station F: staat, maar de serverinstantie die de secundaire replica host geen F:-station heeft, gebruikt u de optie MOVE in uw WITH-clause.
Als u de configuratie van de secundaire database wilt voltooien, moet u de secundaire database toevoegen aan de beschikbaarheidsgroep. Voor meer informatie, Een secundaire database toevoegen aan een beschikbaarheidsgroep (SQL Server).
Notitie
Zie Gerelateerde back-up- en hersteltakenverderop in deze sectie voor meer informatie over het uitvoeren van deze back-up- en herstelbewerkingen.
Gerelateerde back-up- en hersteltaken
Een back-up van een database maken
Een logboekback-up maken
Back-ups herstellen
een back-up van een transactielogboek (SQL Server) herstellen
een database herstellen naar een nieuwe locatie (SQL Server)
Transact-SQL gebruiken
Een secundaire database voorbereiden
Notitie
Zie voorbeeld (Transact-SQL)eerder in dit onderwerp voor een voorbeeld van deze procedure.
Tenzij u een recente volledige back-up van de primaire database hebt, maakt u verbinding met het serverexemplaren waarop de primaire replica wordt gehost en maakt u een volledige databaseback-up. Als best practice plaatst u deze back-up en eventuele volgende logboekback-ups op de aanbevolen netwerkshare.
Herstel op het serverexemplaar dat host is voor de secundaire replica de volledige databaseback-up van de primaire database (en eventueel een differentiële back-up), gevolgd door alle opeenvolgende logboekback-ups. Gebruik WITH NORECOVERY voor elke herstelbewerking.
Als de bestandspaden van de primaire database en de secundaire database verschillen, bijvoorbeeld als de primaire database zich op station F: bevindt, maar de serverinstantie waarop de secundaire replica wordt gehost geen F:-station heeft, neemt u de MOVE-optie op in uw WITH-clausule.
Als er logboekback-ups zijn gemaakt op de primaire database sinds de vereiste logboekback-up, moet u deze ook kopiëren naar het serverexemplaar dat als host fungeert voor de secundaire replica en elk van deze logboekback-ups toepassen op de secundaire database, beginnend met de vroegste en altijd herstellen met NORECOVERY.
Notitie
Er bestaat geen logboekback-up als de primaire database zojuist is gemaakt en er nog geen logboekback-up is gemaakt of als het herstelmodel zojuist is gewijzigd van eenvoudig naar volledig.
Als u de configuratie van de secundaire database wilt voltooien, moet u de secundaire database toevoegen aan de beschikbaarheidsgroep. Voor meer informatie, voeg een secundaire database toe aan een beschikbaarheidsgroep (SQL Server).
Notitie
Zie Gerelateerde back-up- en hersteltakenverderop in dit onderwerp voor meer informatie over het uitvoeren van deze back-up- en herstelbewerkingen.
Transact-SQL voorbeeld
In het volgende voorbeeld wordt een secundaire database voorbereid. In dit voorbeeld wordt de AdventureWorks2022
voorbeelddatabase gebruikt, die standaard gebruikmaakt van het eenvoudige herstelmodel.
Als u de
AdventureWorks2022
-database wilt gebruiken, wijzigt u deze om het volledige herstelmodel te gebruiken:USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GO
Nadat u het herstelmodel van de database hebt gewijzigd van SIMPLE naar FULL, maakt u een volledige back-up die kan worden gebruikt om de secundaire database te maken. Omdat het herstelmodel zojuist is gewijzigd, wordt de optie WITH FORMAT opgegeven om een nieuwe mediaset te maken. Dit is handig om de back-ups onder het volledige herstelmodel te scheiden van eerdere back-ups die zijn gemaakt onder het eenvoudige herstelmodel. In dit voorbeeld wordt, omdat het gaat om een specifiek geval, het back-upbestand (C:\
AdventureWorks2022
.bak) gemaakt op hetzelfde station als de database.Notitie
Voor een productiedatabase moet u altijd een back-up maken van een afzonderlijk apparaat.
Maak op de serverinstantie die als host fungeert voor de primaire replica (
INSTANCE01
), als volgt een volledige back-up van de primaire database:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GO
Kopieer de volledige back-up naar het serverexemplaar dat als host fungeert voor de secundaire replica.
Voer de volledige back-up uit met behulp van RESTORE WITH NORECOVERY op het serverexemplaar waarop de secundaire replica wordt gehost. De herstelopdracht is afhankelijk van of de paden van primaire en secundaire databases identiek zijn.
Als de paden identiek zijn:
Herstel de volledige back-up op de computer die als host fungeert voor de secundaire replica als volgt:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GO
Als de paden verschillen:
Als het pad van de secundaire database verschilt van het pad van de primaire database (bijvoorbeeld de stationsletters verschillen), moet voor het maken van de secundaire database de herstelbewerking een MOVE-component bevatten.
Belangrijk
Als de padnamen van de primaire en secundaire databases verschillen, kunt u geen bestand toevoegen. Dit komt doordat de serverinstantie van de secundaire replica bij ontvangst van het logboek voor de bestand toe te voegen bewerking het nieuwe bestand in hetzelfde pad probeert te plaatsen als dat door de primaire database wordt gebruikt.
Met de volgende opdracht wordt bijvoorbeeld een back-up van een primaire database hersteld die zich in de gegevensmap van het standaardexemplaren van SQL Server, C:\Program Files\Microsoft SQL Server\MSSQL12 bevindt. MSSQLSERVER\MSSQL\DATA. De hersteldatabasebewerking moet de database verplaatsen naar de gegevensmap van een extern exemplaar van SQL Server met de naam (Always On1), die als host fungeert voor de secundaire replica op een ander clusterknooppunt. Daar worden de gegevens en logboekbestanden hersteld naar de C:\Program Files\Microsoft SQL Server\MSSQL13. Always On1\MSSQL\DATA map. De herstelbewerking maakt gebruik van WITH NORECOVERY om de secundaire database in de hersteldatabase te laten staan.
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf'; GO
Nadat u de volledige back-up hebt hersteld, moet u een logboekback-up maken op de primaire database. De volgende Transact-SQL instructie maakt bijvoorbeeld een back-up van het logbestand naar een back-upbestand genaamd E:\MyDB1_log.trn:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.trn' GO
Voordat u de database aan de secundaire replica kunt koppelen, moet u de vereiste logboekback-up (en eventuele volgende logboekback-ups) toepassen.
Met de volgende Transact-SQL instructie wordt bijvoorbeeld het eerste logboek hersteld van C:\MyDB1.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=1, NORECOVERY GO
Als er extra logboekback-ups worden gemaakt voordat de database lid wordt van de secundaire replica, moet u ook al deze logboekback-ups op volgorde herstellen naar het serverexemplement dat als host fungeert voor de secundaire replica met RESTORE WITH NORECOVERY.
Met de volgende Transact-SQL instructie worden bijvoorbeeld twee extra logboeken hersteld uit E:\MyDB1_log.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=3, NORECOVERY GO
PowerShell gebruiken
Een secundaire database voorbereiden
Als u een recente back-up van de primaire database moet maken, wijzigt u de map (cd) naar het serverexemplaar dat de primaire replica host.
Gebruik de cmdlet Backup-SqlDatabase om elk van de back-ups te maken.
Wijzig de directory (cd) naar het serverexemplaar waarop de secundaire replica wordt gehost.
Als u de database en logboekback-ups van elke primaire database wilt herstellen, gebruikt u de cmdlet restore-SqlDatabase, waarbij u de parameter NoRecovery herstelparameter opgeeft. Als de bestandspaden verschillen tussen de computers waarop de primaire replica en de secundaire doelreplica worden gehost, gebruikt u ook de parameter RelocateFile herstelparameter.
Notitie
Als u de syntaxis van een cmdlet wilt weergeven, gebruikt u de Get-Help--cmdlet in de SQL Server PowerShell-omgeving. Voor meer informatie, zie Help SQL Server PowerShell.
Als u de configuratie van de secundaire database wilt voltooien, moet u deze toevoegen aan de beschikbaarheidsgroep. Voor meer informatie, een secundaire database toevoegen aan een beschikbaarheidsgroep (SQL Server).
De SQL Server PowerShell-provider instellen en gebruiken
Voorbeeld van back-up en herstelscript en opdracht
Met de volgende PowerShell-opdrachten maakt u een back-up van een volledige databaseback-up en transactielogboek naar een netwerkshare en herstelt u deze back-ups van die share. In dit voorbeeld wordt ervan uitgegaan dat het bestandspad waarnaar de database wordt hersteld, hetzelfde is als het bestandspad waarop een back-up van de database is gemaakt.
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
Volgende stappen
Als u de configuratie van de secundaire database wilt voltooien, voegt u de zojuist herstelde database toe aan de beschikbaarheidsgroep. Zie een secundaire database toevoegen aan een beschikbaarheidsgroep (SQL Server)voor meer informatie.
Zie ook
overzicht van AlwaysOn-beschikbaarheidsgroepen (SQL Server)
BACKUP (Transact-SQL)
RESTORE-argumenten (Transact-SQL)
RESTORE (Transact-SQL)
problemen met een mislukte Add-File bewerking (AlwaysOn-beschikbaarheidsgroepen) oplossen