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 artikel wordt beschreven hoe u een SQL Server-database herstelt naar een nieuwe locatie en eventueel de naam van de database in SQL Server wijzigt met behulp van SQL Server Management Studio (SSMS) of Transact-SQL. U kunt een database verplaatsen naar een nieuw mappad of een kopie van een database maken op hetzelfde serverexemplaar of een ander serverexemplaar.
Voordat u begint
Beperkingen en beperkingen
- De systeembeheerder die een volledige databaseback-up herstelt, moet de enige persoon zijn die momenteel de database gebruikt om te worden hersteld.
Voorwaarden
Onder het volledige of bulksgewijs vastgelegde herstelmodel moet u een back-up maken van het actieve transactielogboek voordat u een database kunt herstellen. Zie Back-up maken van een transactielogboek (SQL Server)voor meer informatie.
Als u een versleutelde database wilt herstellen, moet u toegang hebben tot het certificaat of de asymmetrische sleutel die wordt gebruikt om de database te versleutelen. Zonder dat certificaat of asymmetrische sleutel kunt u de database niet herstellen. U moet dat certificaat bewaren dat wordt gebruikt voor het versleutelen van de databaseversleutelingssleutel zolang u de back-up nodig hebt. Zie SQL Server-certificaten en Asymmetrische sleutelsvoor meer informatie.
Aanbevelingen
Zie Databases kopiëren met back-up en herstelvoor andere overwegingen voor het verplaatsen van een database.
Als u een SQL Server 2005 (9.x) of een hogere database herstelt naar SQL Server, wordt de database automatisch bijgewerkt. Normaal gesproken wordt de database onmiddellijk beschikbaar. Als een SQL Server 2005-database (9.x) echter voltekstindexen bevat, worden deze geïmporteerd, opnieuw ingesteld of opnieuw opgebouwd volgens de instelling van de upgrade_option servereigenschap. Als de upgradeoptie is ingesteld op importeren (upgrade_option = 2) of opnieuw opbouwen (upgrade_option = 0), zijn de indexen in volledige tekst niet beschikbaar tijdens de upgrade. Afhankelijk van de hoeveelheid gegevens die wordt geïndexeerd, kan het importeren enkele uren duren en kan het opnieuw opbouwen tot 10 keer langer duren. Houd er ook rekening mee dat wanneer de upgradeoptie is ingesteld op importeren, de bijbehorende indexen voor volledige tekst opnieuw worden opgebouwd als er geen volledige tekstcatalogus beschikbaar is. Als u de instelling van de eigenschap upgrade_option server wilt wijzigen, gebruikt u sp_fulltext_service.
Veiligheid
Voor beveiligingsdoeleinden raden we u aan geen databases te koppelen of te herstellen uit onbekende of niet-vertrouwde bronnen. Dergelijke databases kunnen schadelijke code bevatten die onbedoelde Transact-SQL code kan uitvoeren of fouten kan veroorzaken door het schema of de structuur van de fysieke database te wijzigen. Voordat u een database van een onbekende of niet-vertrouwde bron gebruikt, voert u DBCC CHECKDB- uit op de database op een niet-productieserver en onderzoekt u ook de code, zoals opgeslagen procedures of andere door de gebruiker gedefinieerde code, in de database.
Machtigingen
Als de database die wordt hersteld niet bestaat, moet de gebruiker CREATE DATABASE-machtigingen hebben om RESTORE uit te voeren. Als de database bestaat, worden standaard herstelmachtigingen toegekend aan leden van de vaste serverrollen sysadmin en dbcreator en aan de eigenaar (dbo) van de database.
HERSTELmachtigingen worden gegeven aan rollen waarin lidmaatschapsgegevens altijd direct beschikbaar zijn voor de server. Omdat lidmaatschap van een vaste databaserol alleen kan worden gecontroleerd wanneer de database toegankelijk en onbeschadigd is, wat niet altijd het geval is wanneer RESTORE wordt uitgevoerd, hebben leden van de db_owner vaste databaserol geen MACHTIGINGEN VOOR HERSTELLEN.
Een database herstellen naar een nieuwe locatie; desgewenst de naam van de database wijzigen met behulp van SSMS
Maak verbinding met het juiste exemplaar van de SQL Server Database Engine en selecteer vervolgens in Objectverkenner de servernaam om de serverstructuur uit te vouwen.
Klik met de rechtermuisknop op Databasesen selecteer Herstel Database. Het dialoogvenster Database herstellen wordt geopend.
Gebruik op de pagina Algemeen de sectie Bron om de bron en locatie van de back-upsets op te geven die moeten worden hersteld. Selecteer een van de volgende opties:
Database
Selecteer de database die u wilt herstellen in de vervolgkeuzelijst. De lijst bevat alleen databases waarvan een back-up is gemaakt volgens de msdb back-upgeschiedenis.
Notitie
Als de back-up wordt gemaakt vanaf een andere server, beschikt de doelserver niet over de back-upgeschiedenisgegevens voor de opgegeven database. Selecteer in dit geval Apparaat om handmatig het bestand of apparaat op te geven dat moet worden hersteld.
Apparaat
Selecteer de knop Bladeren (...) om het dialoogvenster Back-upapparaten selecteren te openen. Selecteer in het vak Back-upmediatype een van de vermelde apparaattypen. Als u een of meer apparaten voor het Back-upmedia vak wilt selecteren, selecteert u Toevoegen.
Nadat u de apparaten hebt toegevoegd die u wilt toevoegen aan de back-upmedia keuzelijst, selecteert u OK om terug te keren naar de pagina Algemeen.
Selecteer in de Bron: Apparaat: Database keuzelijst de naam van de database die moet worden hersteld.
Opmerking Deze lijst is alleen beschikbaar wanneer apparaat is geselecteerd. Alleen databases met back-ups op het geselecteerde apparaat zijn beschikbaar.
In de sectie Doel wordt het vak Database automatisch ingevuld met de naam van de database die moet worden hersteld. Als u de naam van de database wilt wijzigen, voert u de nieuwe naam in het vak Database in.
Laat in het vak Herstellen naar de standaardinstelling op Tot de laatste gemaakte back-up of selecteer Tijdlijn om toegang te krijgen tot het Back-up Tijdlijn dialoogvenster om handmatig een tijdstip te selecteren om de herstelactie te stoppen. Zie tijdlijn voor back-ups voor meer informatie over het aanwijzen van een specifiek tijdstip.
Selecteer in de Back-upsets om raster te herstellen de back-ups die u wilt herstellen. In dit raster worden de back-ups weergegeven die beschikbaar zijn voor de opgegeven locatie. Standaard wordt een herstelplan voorgesteld. Als u het voorgestelde herstelplan wilt overschrijven, kunt u de selecties in het raster wijzigen. Back-ups die afhankelijk zijn van het herstel van een eerdere back-up, worden automatisch gedeselecteerd wanneer de eerdere back-up wordt gedeselecteerd.
Zie Database herstellen (algemene pagina)voor meer informatie over de kolommen in de Back-upsets om raster te herstellen.
Als u de nieuwe locatie van de databasebestanden wilt opgeven, selecteert u de pagina Bestanden en selecteert u vervolgens Alle bestanden verplaatsen naar map. Geef een nieuwe locatie op voor de map Gegevensbestand en logboekbestandsmap. Voor meer informatie over dit raster, zie Database (bestandenpagina) herstellen.
Pas op de pagina Opties de gewenste opties aan. Zie Database herstellen (optiespagina)voor meer informatie over deze opties.
Database herstellen naar een nieuwe locatie; desgewenst de naam van de database wijzigen met behulp van T-SQL
U kunt eventueel de logische en fysieke namen van de bestanden in de back-upset bepalen die de volledige databaseback-up bevat die u wilt herstellen. Deze instructie retourneert een lijst met de database- en logboekbestanden in de back-upset. De basissyntaxis is als volgt:
RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number
Hier geeft backup_set_file_number de positie van de back-up in de mediaset aan. U kunt de positie van een back-upset verkrijgen met behulp van de instructie RESTORE HEADERONLY. Zie Een back-upset opgevenvoor meer informatie.
Deze verklaring ondersteunt ook verschillende WITH-opties. Zie RESTORE FILELISTONLY (Transact-SQL)voor meer informatie.
Gebruik de instructie RESTORE DATABASE om de volledige databaseback-up te herstellen. Standaard worden gegevens- en logboekbestanden teruggezet naar hun oorspronkelijke locaties. Als u een database wilt verplaatsen, gebruikt u de optie MOVE om elk van de databasebestanden te verplaatsen en om conflicten met bestaande bestanden te voorkomen.
De basissyntaxis Transact-SQL voor het herstellen van de database naar een nieuwe locatie en een nieuwe naam is:
RESTORE DATABASE *new_database_name*
FROM *backup_device* [ ,...*n* ]
[ WITH
{
[ **RECOVERY** | NORECOVERY ]
[ , ] [ FILE ={ *backup_set_file_number* | @*backup_set_file_number* } ]
[ , ] MOVE '*logical_file_name_in_backup*' TO '*operating_system_file_name*' [ ,...*n* ]
}
;
Notitie
Wanneer u zich voorbereidt om een database op een andere schijf te verplaatsen, moet u controleren of er voldoende ruimte beschikbaar is en mogelijke conflicten met bestaande bestanden identificeren. Dit omvat het gebruik van een RESTORE VERIFYONLY-statement waarmee dezelfde MOVE-parameters worden opgegeven die u wilt gebruiken in de RESTORE DATABASE-statement.
In de volgende tabel worden argumenten van deze RESTORE-instructie beschreven in termen van het herstellen van een database naar een nieuwe locatie. Zie RESTORE (Transact-SQL)voor meer informatie over deze argumenten.
new_database_name
De nieuwe naam voor de database.
Notitie
Als u de database herstelt naar een ander serverexemplaren, kunt u de oorspronkelijke databasenaam gebruiken in plaats van een nieuwe naam.
backup_device [ ,...n ]
Hiermee geeft u een door komma's gescheiden lijst op van 1 tot 64 back-upapparaten van waaruit de databaseback-up moet worden hersteld. U kunt een fysiek back-upapparaat opgeven of u kunt een bijbehorend logisch back-upapparaat opgeven, indien gedefinieerd. Als u een fysiek back-upapparaat wilt opgeven, gebruikt u de optie SCHIJF of TAPE:
{ DISK | TAPE } =physical_backup_device_name
Zie Back-upapparaten (SQL Server)voor meer informatie.
{ RECOVERY- | NORECOVERY }
Als de database gebruikmaakt van het volledige herstelmodel, moet u mogelijk back-ups van transactielogboeken toepassen nadat u de database hebt hersteld. Geef in dit geval de optie NORECOVERY op.
Gebruik anders de optie HERSTEL. Dit is de standaardinstelling.
FILE = { backup_set_file_number | @backup_set_file_number }
Identificeert de back-upset die moet worden hersteld. Een backup_set_file_number van 1 geeft bijvoorbeeld de eerste back-upset op het back-upmedium aan, en een backup_set_file_number van 2 geeft de tweede back-upset aan. U kunt de backup_set_file_number van een back-upset verkrijgen door de instructie RESTORE HEADERONLY te gebruiken.
Wanneer deze optie niet is opgegeven, is de standaardinstelling het gebruik van de eerste back-upset op het back-upapparaat.
Voor meer informatie, zie "Een back-upset opgeven" in RESTORE-argumenten (Transact-SQL).
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
Hiermee geeft u op dat de gegevens of het logboekbestand dat is opgegeven door logical_file_name_in_backup moet worden hersteld naar de locatie die is opgegeven door operating_system_file_name. Geef een MOVE-instructie op voor elk logisch bestand dat u wilt herstellen van de back-upset naar een nieuwe locatie.
Optie | Beschrijving |
---|---|
logical_file_name_in_backup | Hiermee geeft u de logische naam van een gegevens- of logboekbestand in de back-upset. De naam van een logisch bestand van een gegevens- of logboekbestand in een back-upset komt overeen met de logische naam in de database toen de back-upset werd gemaakt. Opmerking: gebruik RESTORE FILELISTONLYom een lijst met logische bestanden op te halen uit de back-upset. |
besturingssysteem_bestandsnaam | Hiermee geeft u een nieuwe locatie voor het bestand dat is opgegeven door logical_file_name_in_backup. Het bestand wordt teruggezet naar deze locatie. Desgewenst geeft operating_system_file_name een nieuwe bestandsnaam op voor het herstelde bestand. Dit is nodig als u een kopie van een bestaande database op hetzelfde serverexemplaar maakt. |
n | Dit is een tijdelijke aanduiding die aangeeft dat u aanvullende MOVE-instructies kunt opgeven. |
Voorbeeld (Transact-SQL)
In dit voorbeeld wordt een nieuwe database met de naam MyAdvWorks
gemaakt door een back-up te herstellen van de AdventureWorks2022
voorbeelddatabase, die twee bestanden bevat: AdventureWorks2022
_Data en AdventureWorks2022
_Log. Deze database maakt gebruik van het eenvoudige herstelmodel. De AdventureWorks2022
database bestaat al op het serverexemplaren, zodat de bestanden in de back-up moeten worden hersteld naar een nieuwe locatie. De instructie RESTORE FILELISTONLY wordt gebruikt om het aantal en de namen te bepalen van de bestanden in de database die worden hersteld. De database-back-up is de eerste back-upset op het back-up-apparaat.
Notitie
De voorbeelden van het maken van back-ups en het herstellen van het transactielogboek, inclusief herstel naar een bepaald tijdstip, gebruiken de MyAdvWorks_FullRM
database die is gemaakt op basis van AdventureWorks2022
, net zoals in het volgende MyAdvWorks
voorbeeld. De resulterende MyAdvWorks_FullRM
database moet echter worden gewijzigd om het volledige herstelmodel te kunnen gebruiken met behulp van de volgende Transact-SQL instructie: ALTER DATABASE <database_name> SET RECOVERY FULL.
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2022_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2022_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2022_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
Zie Een volledige databaseback-up maken (SQL Server)voor een voorbeeld van het maken van een volledige databaseback-up van de AdventureWorks2022
database.