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 skapar en fullständig databassäkerhetskopia i SQL Server med hjälp av SQL Server Management Studio, Transact-SQL eller PowerShell.
Mer information finns i Säkerhetskopiering och återställning av SQL Server med Azure Blob Storage och SQL Server-säkerhetskopiering till URL för Azure Blob Storage.
Begränsningar
- Instruktionen
BACKUPtillåts inte i en explicit eller implicit transaktion. - Säkerhetskopieringar som skapats av nyare versioner av SQL Server kan inte återställas i tidigare versioner av SQL Server.
En översikt över och en djupare genomgång av säkerhetskopieringsbegrepp och uppgifter finns i Översikt över säkerhetskopiering (SQL Server) innan du fortsätter.
Rekommendationer
- När en databas ökar i storlek tar fullständiga databassäkerhetskopieringar mer tid att slutföra och kräver mer lagringsutrymme. För stora databaser bör du överväga att komplettera fullständiga databassäkerhetskopior med en serie differentiella databassäkerhetskopior.
- Beräkna storleken på en fullständig databassäkerhetskopia med hjälp av den sp_spaceused system lagrade proceduren.
- Som standard lägger varje lyckad säkerhetskopiering till en post i SQL Server-felloggen och i systemhändelseloggen. Om du säkerhetskopierar ofta ackumuleras lyckade meddelanden snabbt, vilket resulterar i enorma felloggar, vilket gör det svårt att hitta andra meddelanden. I sådana fall kan du utelämna dessa poster i säkerhetskopieringsloggen med hjälp av spårningsflagga 3226 om inget av dina skript är beroende av dessa poster. Mer information finns i Ange spårningsflaggor med DBCC TRACEON.
Säkerhet
TRUSTWORTHY är inställt OFF på på en databassäkerhetskopia. Information om hur du anger TRUSTWORTHY till ONfinns i ALTER DATABASE SET-alternativ.
Från och med SQL Server 2012 (11.x) PASSWORD är alternativen och MEDIAPASSWORD inte tillgängliga för att skapa säkerhetskopior. Du kan fortfarande återställa säkerhetskopior som skapats med lösenord.
Behörigheter
BACKUP DATABASE och BACKUP LOG är behörigheter som standard för medlemmar i den fördefinierade serverrollen sysadmin samt de fördefinierade databasrollerna db_owner och db_backupoperator.
Ägarskaps- och behörighetsproblem på säkerhetskopieringsenhetens fysiska fil kan störa en säkerhetskopieringsåtgärd. SQL Server-tjänsten bör läsa från och skriva till enheten. Det konto under vilket SQL Server-tjänsten körs måste ha skrivbehörighet till säkerhetskopieringsenheten. Men sp_addumpdevice, som lägger till en post för en säkerhetskopieringsenhet i systemtabellerna, kontrollerar inte filåtkomstbehörigheter. Problem i säkerhetskopieringsenhetens fysiska fil kanske inte visas förrän säkerhetskopian har använts eller ett återställningsförsök.
Använda SQL Server Management Studio
Anmärkning
När du anger en säkerhetskopieringsaktivitet med hjälp av SQL Server Management Studio kan du generera motsvarande Transact-SQL BACKUP-skript genom att välja knappen Skript och sedan välja ett skriptmål.
När du har anslutit till lämplig instans av SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser och välj antingen en användardatabas eller expandera Systemdatabaser och välj en systemdatabas.
Högerklicka på databasen som du vill säkerhetskopiera, peka på Uppgifter och välj sedan Säkerhetskopiera....
I dialogrutan Säkerhetskopiera databas visas den databas som du har valt i listrutan. (Du kan ändra databasen till valfri annan databas på servern.)
I listan Typ av säkerhetskopiering väljer du en typ av säkerhetskopia. Standardvärdet är Full.
Viktigt!
Du måste utföra minst en fullständig säkerhetskopia av databasen innan du kan utföra en differentiell säkerhetskopiering eller en säkerhetskopia av transaktionsloggen.
Under Säkerhetskopieringskomponent väljer du Databas.
I avsnittet Destination granskar du standardplatsen för säkerhetskopieringsfilen (i ../mssql/data-mappen).
Du kan använda listan Säkerhetskopiera till för att välja en annan enhet. Välj Lägg till för att lägga till säkerhetskopieringsobjekt och/eller mål. Du kan fördela säkerhetskopieringen över flera filer för ökad backuphastighet.
Om du vill ta bort ett mål för säkerhetskopiering väljer du det och väljer sedan Ta bort. Om du vill visa innehållet i ett befintligt mål för säkerhetskopiering väljer du det och väljer sedan Innehåll.
(Valfritt) Granska de andra tillgängliga inställningarna på sidorna Mediealternativ och Alternativ för säkerhetskopiering .
Mer information om de olika säkerhetskopieringsalternativen finns i Säkerhetskopieringsdatabas (allmän sida), Säkerhetskopieringsdatabas (sidan Mediealternativ) och Säkerhetskopieringsdatabas (sidan Säkerhetskopieringsalternativ).
Välj OK för att starta säkerhetskopieringen.
När säkerhetskopieringen är klar väljer du OK för att stänga dialogrutan SQL Server Management Studio.
Ytterligare information
När du har skapat en fullständig säkerhetskopia av databasen kan du skapa en differentiell databassäkerhetskopia eller en säkerhetskopia av transaktionsloggen.
(Valfritt) Du kan markera kryssrutan Endast kopiering för att skapa en säkerhetskopia. En kopieringssäkerhetskopia är en SQL Server-säkerhetskopia som är oberoende av sekvensen med konventionella SQL Server-säkerhetskopior. Mer information finns i Kopieringssäkerhetskopior. En säkerhetskopia med endast kopiering är inte tillgänglig för typen Differentiell säkerhetskopiering.
Alternativet Skriv över media är inaktiverat på sidan Mediealternativ om du säkerhetskopierar till en URL.
Exempel
I följande exempel skapar du en testdatabas med följande Transact-SQL kod:
USE [master]
GO
CREATE DATABASE [SQLTestDB]
GO
USE [SQLTestDB]
GO
CREATE TABLE SQLTest
(
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
);
GO
USE [SQLTestDB]
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO
SELECT * FROM SQLTest
GO
A. Fullständig säkerhetskopiering till disk till standardplatsen
I det här exemplet SQLTestDB säkerhetskopieras databasen till disken på standardplatsen för säkerhetskopiering.
När du har anslutit till lämplig instans av SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDBUppgifter och välj sedan Säkerhetskopiera....Välj OK.
När säkerhetskopieringen är klar väljer du OK för att stänga dialogrutan SQL Server Management Studio.
B. Fullständig säkerhetskopiering till disk till en nondefault-plats
I det här exemplet SQLTestDB säkerhetskopieras databasen till disken på en plats som du väljer.
När du har anslutit till lämplig instans av SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDBUppgifter och välj sedan Säkerhetskopiera....På sidan Allmänt i avsnittet Mål väljer du Disk i listan Säkerhetskopiera till .
Välj Ta bort tills alla befintliga säkerhetskopieringsfiler har tagits bort.
Välj Lägg till. Dialogrutan Välj mål för säkerhetskopiering öppnas.
Ange en giltig sökväg och ett filnamn i rutan Filnamn . Använd .bak som tillägg för att förenkla klassificeringen av filen.
Välj OK och välj sedan OK igen för att starta säkerhetskopieringen.
När säkerhetskopieringen är klar väljer du OK för att stänga dialogrutan SQL Server Management Studio.
C. Skapa en krypterad säkerhetskopia
I det här exemplet SQLTestDB säkerhetskopieras databasen med kryptering till standardplatsen för säkerhetskopiering.
När du har anslutit till lämplig instans av SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, expandera Systemdatabaser, högerklicka
masteroch välj sedan Ny fråga för att öppna ett frågefönster med en anslutning till databasenSQLTestDB.Kör följande kommandon för att skapa en databashuvudnyckel och ett certifikat i
masterdatabasen.-- Create the master key. CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; -- If the master key already exists, open it in the same session that you create the certificate. (See next step.) OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>' -- Create the certificate encrypted by the master key. CREATE CERTIFICATE MyCertificate WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';I Object Explorer, i noden Databaser, högerklickar du på
SQLTestDB, pekar på Uppgifter och väljer sedan Säkerhetskopiera....På sidan Mediealternativ går du till avsnittet Skriv över media och väljer Säkerhetskopiera till en ny medieuppsättning och raderar alla befintliga säkerhetskopieringsuppsättningar.
På sidan Alternativ för säkerhetskopiering går du till avsnittet Kryptering och väljer Kryptera säkerhetskopiering.
I listan Algoritm väljer du AES 256.
I listan Certifikat eller asymmetrisk nyckel väljer du
MyCertificate.Välj OK.
D. Säkerhetskopiera till Azure Blob Storage
Det här exemplet skapar en fullständig databassäkerhetskopia av SQLTestDB till Azure Blob Storage. Exemplet skrivs med antagandet att du redan har ett lagringskonto med en blobcontainer. I exemplet skapas en signatur för delad åtkomst. Exemplet misslyckas om containern har en befintlig signatur för delad åtkomst.
Om du inte har en Blob Storage-container på ett lagringskonto skapar du en innan du fortsätter. Se Skapa ett lagringskonto för generell användning och Skapa en container.
När du har anslutit till lämplig instans av SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDBUppgifter och välj sedan Säkerhetskopiera....På sidan Allmänt i avsnittet Mål väljer du URL i listan Säkerhetskopiera till .
Välj Lägg till. Dialogrutan Välj mål för säkerhetskopiering öppnas.
Om du tidigare har registrerat den Azure Storage-container som du vill använda med SQL Server Management Studio väljer du den. Annars väljer du Ny container för att registrera en ny container.
Logga in på ditt konto i dialogrutan Anslut till en Microsoft-prenumeration .
I rutan Välj lagringskonto väljer du ditt lagringskonto.
I rutan Välj blobcontainer väljer du din blobcontainer.
I rutan Förfallokalender för principen för delad åtkomst väljer du ett förfallodatum för principen för delad åtkomst som du skapar i det här exemplet.
Välj Skapa autentiseringsuppgifter för att generera en signatur för delad åtkomst och autentiseringsuppgifter i SQL Server Management Studio.
Välj OK stäng dialogrutan Anslut till en Microsoft-prenumeration .
I rutan Säkerhetskopieringsfil ändrar du namnet på säkerhetskopieringsfilen om du vill.
Välj OK för att stänga dialogrutan Välj ett mål för säkerhetskopiering .
Välj OK för att starta säkerhetskopieringen.
När säkerhetskopieringen är klar väljer du OK för att stänga dialogrutan SQL Server Management Studio.
Anmärkning
Säkerhetskopiering till Blob Storage med hjälp av hanterade identiteter stöds inte för närvarande.
Använda Transact-SQL
Skapa en fullständig databassäkerhetskopia genom att köra -instruktionen BACKUP DATABASE och ange:
- Namnet på databasen som ska säkerhetskopieras.
- Den säkerhetskopieringsenhet där den fullständiga databassäkerhetskopian är skriven.
Den grundläggande Transact-SQL syntaxen för en fullständig databassäkerhetskopiering är:
BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
| Alternativ | Beskrivning |
|---|---|
<database> |
Databasen som ska säkerhetskopieras. |
<backup_device> [ , ...n ] |
Anger en lista över mellan 1 och 64 enheter för säkerhetskopiering som ska användas för säkerhetskopieringen. Du kan ange en fysisk säkerhetskopieringsenhet eller ange en motsvarande logisk säkerhetskopieringsenhet om en redan har definierats. Om du vill ange en fysisk säkerhetskopieringsenhet använder du DISK alternativet eller TAPE :{ DISK | TAPE } =physical_backup_device_nameMer information finns i Backup Devices (SQL Server). |
WITH <with_options> [ , ...o ] |
Används för att ange ett eller flera alternativ, o. Information om några av de grundläggande WITH alternativen följer. |
Du kan också ange ett eller flera WITH alternativ. Här beskrivs några grundläggande WITH alternativ. Information om alla alternativ finns i WITHSÄKERHETSKOPIERing.
Grundläggande alternativ för säkerhetskopieringsuppsättning WITH :
- { KOMPRIMERING | NO_COMPRESSION }. I SQL Server 2008 (10.0.x) Enterprise och senare anger om säkerhetskopieringskomprimering utförs på säkerhetskopieringen, vilket åsidosätter standardvärdet på servernivå.
- KRYPTERING (ALGORITM, SERVERCERTIFIKAT | ASYMMETRISK NYCKEL). Endast i SQL Server 2014 eller senare anger krypteringsalgoritmen som ska användas och certifikatet eller den asymmetriska nyckel som ska användas för att skydda krypteringen.
- BESKRIVNING = { 'text' | @text_variable }. Anger den friformulärstext som beskriver säkerhetskopieringsuppsättningen. Strängen kan innehålla högst 255 tecken.
-
NAME = { backup_set_name | @backup_set_name_var }. Anger namnet på säkerhetskopieringsuppsättningen. Namn kan innehålla högst 128 tecken. Om
NAMEinte anges är det tomt.
Som standard lägger BACKUP till säkerhetskopian i en befintlig medieuppsättning och bevarar de befintliga kopiorna. Använd alternativet för att uttryckligen ange den här konfigurationen NOINIT . Information om hur du lägger till befintliga säkerhetskopieringsuppsättningar finns i Medieuppsättningar, mediefamiljer och säkerhetskopieringsuppsättningar (SQL Server).
Om du vill formatera säkerhetskopieringsmediet använder du alternativet FORMAT :
FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]
FORMAT Använd -satsen när du använder media för första gången eller när du vill skriva över alla befintliga data. Du kan också tilldela det nya mediet ett medienamn och en beskrivning.
Viktigt!
Var försiktig när du använder FORMAT instruktionssatsen BACKUP eftersom det här alternativet förstör alla säkerhetskopior som tidigare lagrats på säkerhetskopieringsmediet.
Exempel
I följande exempel skapar du en testdatabas med följande Transact-SQL kod:
USE [master]
GO
CREATE DATABASE [SQLTestDB]
GO
USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT GETDATE()
)
GO
USE [SQLTestDB]
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO
SELECT * FROM SQLTest
GO
A. Säkerhetskopiera till en diskenhet
I följande exempel säkerhetskopieras den fullständiga SQLTestDB databasen till disken. Den använder FORMAT för att skapa en ny medieuppsättning.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of SQLTestDB';
GO
B. Säkerhetskopiera till en bandenhet
I följande exempel säkerhetskopieras hela SQLTestDB databasen till band. Säkerhetskopieringen läggs till i de tidigare säkerhetskopiorna.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO TAPE = '\\.\Tape0'
WITH NOINIT,
NAME = 'Full Backup of SQLTestDB';
GO
C. Säkerhetskopiera till en logisk bandenhet
I följande exempel skapas en logisk säkerhetskopieringsenhet för en bandenhet. Exemplet säkerhetskopierar sedan den fullständiga SQLTestDB databasen till den enheten.
-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0'; USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO SQLTestDB_Bak_Tape
WITH FORMAT,
MEDIANAME = 'SQLTestDB_Bak_Tape',
MEDIADESCRIPTION = '\\.\tape0',
NAME = 'Full Backup of SQLTestDB';
GO
Använda PowerShell
Använd cmdleten Backup-SqlDatabase . Om du uttryckligen vill ange en fullständig databassäkerhetskopia anger du parametern -BackupAction med standardvärdet . Database Den här parametern är valfri för fullständiga databassäkerhetskopior.
Anmärkning
De här exemplen kräver SqlServer-modulen. För att avgöra om den är installerad kör du Get-Module -Name SqlServer. Om du vill installera det kör du Install-Module -Name SqlServer i en administratörssession i PowerShell.
Mer information finns i SQL Server PowerShell-provider.
Viktigt!
Om du öppnar ett PowerShell-fönster inifrån SQL Server Management Studio (SSMS) för att ansluta till en instans av SQL Server kan du utelämna autentiseringsuppgiftsdelen eftersom dina autentiseringsuppgifter i SSMS används automatiskt för att upprätta anslutningen mellan PowerShell och SQL Server-instansen.
Exempel
A. Fullständig säkerhetskopiering (lokal)
I följande exempel skapas en fullständig databassäkerhetskopia av <myDatabase> databasen till standardplatsen för säkerhetskopiering av serverinstansen Computer\Instance. Det här exemplet kan också ange -BackupAction Database.
Fullständiga syntaxexempel finns i Backup-SqlDatabase.
$credential = Get-Credential
Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential
B. Fullständig säkerhetskopiering till Azure
I följande exempel skapas en fullständig säkerhetskopia av databasen <myDatabase> på instansen <myServer> till Blob Storage. En lagrad åtkomstprincip har skapats med läs-, skriv- och listrättigheter. SQL Server-autentiseringsuppgifterna, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, skapades med hjälp av en signatur för delad åtkomst som är associerad med den lagrade åtkomstprincipen. Kommandot använder parametern $backupFile för att ange platsen (URL) och namnet på säkerhetskopian.
$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName
Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential
Relaterade uppgifter
- Skapa en differentiell databassäkerhetskopia (SQL Server)
- Återställa en databassäkerhetskopia med hjälp av SSMS
- Återställa en databassäkerhetskopia under den enkla återställningsmodellen (Transact-SQL)
- Återställa databasen till felpunkten – fullständig återställning
- Återställa en databas till en ny plats (SQL Server)
- Använd Underhållsplanguiden
Relaterat innehåll
- Felsöka säkerhetskopierings- och återställningsåtgärder för SQL Server
- Översikt över säkerhetskopiering (SQL Server)
- Säkerhetskopior av transaktionsloggar (SQL Server)
- Medieuppsättningar, mediefamiljer och säkerhetskopieringsuppsättningar (SQL Server)
- sp_addumpdevice (Transact-SQL)
- Säkerhetskopiering (Transact-SQL)
- Säkerhetskopiera databas (allmän sida)
- säkerhetskopieringsdatabas (sidan Säkerhetskopieringsalternativ)
- Differentiella säkerhetskopior (SQL Server)
- Fullständiga databassäkerhetskopior (SQL Server)