Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Den här artikeln beskriver hur du återställer en SQL Server-databas till en ny plats och om du vill byta namn på databasen i SQL Server med hjälp av SQL Server Management Studio (SSMS) eller Transact-SQL. Du kan flytta en databas till en ny katalogsökväg eller skapa en kopia av en databas på antingen samma serverinstans eller en annan serverinstans.
Begränsningar
- Systemadministratören som återställer en fullständig databassäkerhetskopia måste vara den enda person som för närvarande använder databasen som ska återställas.
Förutsättningar
När du använder den fullständiga eller massloggade återställningsmodellen måste du säkerhetskopiera den aktiva transaktionsloggen innan du kan återställa en databas. Mer information finns i Säkerhetskopiera en transaktionslogg.
Om du vill återställa en krypterad databas måste du ha åtkomst till certifikatet eller den asymmetriska nyckel som används för att kryptera databasen. Utan certifikatet eller den asymmetriska nyckeln kan du inte återställa databasen. Du måste behålla certifikatet som används för att kryptera databaskrypteringsnyckeln så länge du behöver säkerhetskopian. Mer information finns i SQL Server-certifikat och asymmetriska nycklar.
Recommendations
Andra överväganden för att flytta en databas finns i Kopiera databaser med säkerhetskopiering och återställning.
Om du återställer en SQL Server 2005 (9.x) eller högre databas till SQL Server uppgraderas databasen automatiskt. Vanligtvis blir databasen tillgänglig omedelbart. Men om en SQL Server 2005-databas (9.x) har fulltextindex importeras, återställs eller återskapas uppgraderingsprocessen, beroende på inställningen för serveregenskapen
upgrade_option. Om uppgraderingsalternativet är inställt på att importera (upgrade_option = 2) eller återskapa (upgrade_option = 0) är fulltextindexen inte tillgängliga under uppgraderingen. Beroende på hur mycket data som indexeras kan det ta flera timmar att importera, och återskapande kan ta upp till 10 gånger längre tid. När uppgraderingsalternativet är inställt på import återskapas dessutom de associerade fulltextindexen om en fulltextkatalog inte är tillgänglig. Om du vill ändra inställningen för serveregenskapenupgrade_optionanvänder du sp_fulltext_service.
Security
Av säkerhetsskäl rekommenderar vi inte att du bifogar eller återställer databaser från okända eller ej betrodda källor. Sådana databaser kan innehålla skadlig kod som kan köra oavsiktlig Transact-SQL kod eller orsaka fel genom att ändra schemat eller den fysiska databasstrukturen. Innan du använder en databas från en okänd eller obetrodd källa kör du DBCC CHECKDB på databasen på en icke-produktionsserver och undersöker även koden, till exempel lagrade procedurer eller annan användardefinierad kod, i databasen.
Permissions
Om databasen som återställs inte finns måste användaren ha CREATE DATABASE behörighet att kunna köra RESTORE. Om databasen finns är RESTORE behörigheter som standard medlemmar i sysadmin - och dbcreator-rollerna för fast server och ägaren (dbo) av databasen.
RESTORE behörigheter ges till roller där medlemskapsinformation alltid är lättillgänglig för servern. Eftersom fast databasrollmedlemskap endast kan kontrolleras när databasen är tillgänglig och oskadad, vilket inte alltid är fallet när RESTORE den körs, har RESTORE medlemmar i db_owner fast databasroll inte behörigheter.
Återställa en databas till en ny plats och om du vill byta namn på databasen med hjälp av SSMS
Anslut till lämplig instans av SQL Server Database Engine och välj sedan servernamnet i Object Explorer för att expandera serverträdet.
Högerklicka på Databaser och välj sedan Återställ databas.... Dialogrutan Återställ databas öppnas.
På sidan Allmänt i avsnittet Källa anger du källan och platsen för de säkerhetskopieringsuppsättningar som ska återställas. Välj något av följande alternativ:
Databas
Välj den databas som ska återställas från listrutan. Listan innehåller endast databaser som har säkerhetskopierats enligt säkerhetskopieringshistoriken
msdb.Anmärkning
Om säkerhetskopieringen skapas från en annan server har målservern inte informationen om säkerhetskopieringshistoriken för den angivna databasen. I det här fallet väljer du Enhet för att manuellt ange den fil eller enhet som ska återställas.
Device
Välj knappen Bläddra (...) för att öppna dialogrutan Välj säkerhetskopieringsenheter . I rutan Typ av säkerhetskopieringsmedia väljer du en av enhetstyperna i listan. Om du vill välja en eller flera enheter för rutan Säkerhetskopieringsmedia väljer du Lägg till.
När du har lagt till de enheter som du vill lägga till i listan Säkerhetskopieringsmedia väljer du OK för att återgå till sidan Allmänt .
I listan Källa: Enhet: Databas väljer du namnet på den databas som ska återställas.
Anmärkning
Den här listan är endast tillgänglig när Enheten är markerad. Endast databaser som har säkerhetskopior på den valda enheten är tillgängliga.
I avsnittet Mål fylls rutan Databas automatiskt i med namnet på databasen som ska återställas. Om du vill ändra namnet på databasen anger du det nya namnet i rutan Databas .
I rutan Återställ till lämnar du standardvärdet Till den senaste säkerhetskopieringen som gjordes eller väljer Tidslinje för att komma åt dialogrutan Tidslinje för säkerhetskopiering för att manuellt välja en tidpunkt för att stoppa återställningsåtgärden. Mer information om hur du anger en viss tidpunkt finns i Tidslinje för säkerhetskopiering .
I rutnätet Säkerhetskopieringsuppsättningar för återställning väljer du de säkerhetskopior som ska återställas. Det här rutnätet visar de säkerhetskopior som är tillgängliga för den angivna platsen. Som standard föreslås en återställningsplan. Om du vill åsidosätta den föreslagna återställningsplanen kan du ändra valen i rutnätet. Säkerhetskopior som är beroende av återställning av en tidigare säkerhetskopia avmarkeras automatiskt när den tidigare säkerhetskopieringen avmarkeras.
Information om kolumnerna i säkerhetskopieringsuppsättningarna för att återställa rutnätet finns i Återställa databas (allmänt sida).
Om du vill ange den nya platsen för databasfilerna väljer du sidan Filer och väljer sedan Flytta alla filer till mappen. Ange en ny plats för mappen Datafil och loggfilmappen. Mer information om det här rutnätet finns i Restore Database (Files Page).
På sidan Alternativ justerar du alternativen om du vill. Mer information om de här alternativen finns i Återställa databas (alternativsida).
Återställ databasen till en ny plats och byt valfritt namn på databasen med hjälp av T-SQL
Du kan också fastställa de logiska och fysiska namnen på filerna i säkerhetskopieringsuppsättningen som innehåller den fullständiga databassäkerhetskopiering som du vill återställa. Den här instruktionen visar den grundläggande syntaxen för att returnera en lista över databasen och loggfilerna som finns i säkerhetskopieringsuppsättningen:
RESTORE FILELISTONLY FROM backup_device WITH FILE = *backup_set_file_numberHär anger backup_set_file_number positionen för säkerhetskopian i medieuppsättningen. Du kan hämta positionen för en säkerhetskopia med hjälp av instruktionen RESTORE HEADERONLY . Mer information finns i Ange en säkerhetskopia.
Den här instruktionen stöder också flera
WITHalternativ. Mer information finns i RESTORE FILELISTONLY.Använd instruktionen RESTORE DATABASE (ÅTERSTÄLL DATABAS) för att återställa den fullständiga databassäkerhetskopian. Som standard återställs data och loggfiler till sina ursprungliga platser. Om du vill flytta en databas använder du
MOVEalternativet för att flytta var och en av databasfilerna och för att undvika kollisioner med befintliga filer.
Den grundläggande Transact-SQL syntaxen för att återställa databasen till en ny plats med ett nytt namn är:
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 ]
} ]
[ ; ]
Anmärkning
När du förbereder för att flytta en databas på en annan disk bör du kontrollera att det finns tillräckligt med utrymme och identifiera eventuella kollisioner med befintliga filer. Den här verifieringen omfattar användning av en RESTORE-instruktion – VERIFYONLY-instruktion som anger samma MOVE parametrar som du planerar att använda i - RESTORE DATABASE instruktionen.
Följande information beskriver argumenten i den här RESTORE instruktionen som rör återställning av en databas till en ny plats. Mer information om dessa argument finns i RESTORE-instruktioner.
new_database_name
Det nya namnet på databasen.
Anmärkning
Om du återställer databasen till en annan serverinstans kan du använda det ursprungliga databasnamnet i stället för ett nytt namn.
backup_device [ , ... n ]
Anger en kommaavgränsad lista över mellan 1 och 64 säkerhetskopierade enheter som databassäkerhetskopian ska återställas från. Du kan ange en fysisk säkerhetskopieringsenhet eller ange en motsvarande logisk säkerhetskopieringsenhet om en har definierats. Om du vill ange en fysisk säkerhetskopieringsenhet använder du DISK alternativet eller TAPE :
{ DISK | TAPE } = physical_backup_device_name
Mer information finns i Säkerhetskopieringsenheter.
{ ÅTERSTÄLLNING | NORECOVERY }
Om databasen använder den fullständiga återställningsmodellen kan du behöva använda säkerhetskopior av transaktionsloggar när du har återställt databasen. I det här fallet anger du alternativet NORECOVERY .
Annars använder du RECOVERY alternativet, som är standard.
FILE = { backup_set_file_number | @backup_set_file_number }
Identifierar den säkerhetskopieringsuppsättning som ska återställas. En backup_set_file_number1 anger till exempel den första säkerhetskopieringsuppsättningen på säkerhetskopieringsmediet och en backup_set_file_number2 anger den andra säkerhetskopieringsuppsättningen. Du kan hämta backup_set_file_number av en säkerhetskopieringsuppsättning med hjälp av RESTORE-uttrycken – HEADERONLY-instruktionen .
När det här alternativet inte har angetts är standardvärdet att använda den första säkerhetskopieringsuppsättningen på säkerhetskopieringsenheten.
Mer information finns i RESTORE-argument (Transact-SQL).
FLYTTA "logical_file_name_in_backup" TILL "operating_system_file_name" [ , ... n ]
Anger att de data eller loggfiler som anges av logical_file_name_in_backup ska återställas till den plats som anges av operating_system_file_name. Ange en MOVE instruktion för varje logisk fil som du vill återställa från säkerhetskopieringsuppsättningen till en ny plats.
| Option | Description |
|---|---|
logical_file_name_in_backup |
Anger det logiska namnet på en data- eller loggfil i säkerhetskopieringsuppsättningen. Det logiska filnamnet för en data- eller loggfil i en säkerhetskopia matchar dess logiska namn i databasen när säkerhetskopieringsuppsättningen skapades. Obs! Om du vill hämta en lista över de logiska filerna från säkerhetskopieringsuppsättningen använder du RESTORE-instruktioner – FILELISTONLY. |
operating_system_file_name |
Anger en ny plats för filen som anges av logical_file_name_in_backup. Filen återställs till den här platsen.operating_system_file_name Du kan också ange ett nytt filnamn för den återställde filen. Ett nytt namn krävs om du skapar en kopia av en befintlig databas på samma serverinstans. |
n |
En platshållare som anger att du kan ange ytterligare MOVE instruktioner. |
Exempel (Transact-SQL)
Det här exemplet skapar en ny databas med namnet MyAdvWorks genom att återställa en säkerhetskopia av exempeldatabasen AdventureWorks2022 , som innehåller två filer: AdventureWorks2022_Data och AdventureWorks2022_Log. Den här databasen använder den enkla återställningsmodellen. Databasen AdventureWorks2022 finns redan på serverinstansen, så filerna i säkerhetskopian måste återställas till en ny plats. -instruktionen RESTORE FILELISTONLY används för att fastställa antalet och namnen på filerna i databasen som återställs. Databassäkerhetskopian är den första säkerhetskopieringen som angetts på säkerhetskopieringsenheten.
Anmärkning
Exemplen på att säkerhetskopiera och återställa transaktionsloggen, inklusive återställningar till tidpunkt, använder databasen MyAdvWorks_FullRM som skapas från AdventureWorks2022, precis som i följande MyAdvWorks exempel. Den resulterande MyAdvWorks_FullRM databasen måste dock ändras för att använda den fullständiga återställningsmodellen med hjälp av följande Transact-SQL-instruktion: 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
Ett exempel på hur du skapar en fullständig databassäkerhetskopia av databasen finns i AdventureWorks2022Skapa en fullständig databassäkerhetskopia.
Relaterade uppgifter
- Skapa en fullständig databassäkerhetskopia
- Återställa en databassäkerhetskopia med hjälp av SSMS
- Säkerhetskopiera en transaktionslogg
- Återställa en säkerhetskopia av transaktionsloggen (SQL Server)