Kommentar
Å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 man skapar en fullständig databasbackup i SQL Server med hjälp av SQL Server Management Studio (SSMS), 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. För en översikt av backupkoncept och uppgifter, se Backup overview (SQL Server).
Rekommendationer
När en databas växer tar fullständiga databasbackuper längre tid och kräver mer lagringsutrymme. För stora databaser, komplettera fullständiga säkerhetskopior med en serie differentierade databasbackuper.
Uppskatta storleken på en fullständig säkerhetskopia av databasen med den systemlagrade proceduren sp_spaceused.
Som standard lägger varje lyckad backup till en post i SQL Server-felloggen och systemets händelselogg. Frekventa säkerhetskopior kan fylla dessa loggar och göra andra meddelanden svåra att hitta.
För att undertrycka backup-loggposter, använd trace flag 3226, förutsatt att dina skript inte är beroende av dem.
Begränsningar
Du kan inte använda uttalandet BACKUP i en explicit eller implicit transaktion.
Du kan inte återställa säkerhetskopior från nyare versioner av SQL Server på tidigare versioner. Till exempel kan du inte återställa en SQL Server 2025 (17.x) backup på SQL Server 2022 (16.x).
Säkerhet
TRUSTWORTHY är inställt på OFF för en databasbackup. För att sätta TRUSTWORTHY till ON, se ALTER DATABASE SET alternativ.
Från och med SQL Server 2012 (11.x) är alternativen MEDIAPASSWORD och PASSWORD 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-behörigheter är som standard tilldelade medlemmar i den fasta serverrollen sysadmin samt de fasta databasrollerna db_owner och db_backupoperator.
SQL Server-tjänstekontot måste ha läs- och skrivbehörigheter på backupenhetens fysiska fil. Ägarskaps- eller behörighetsproblem på den filen förhindrar säkerhetskopierings- och återställningsoperationer, och uppstår endast när säkerhetskopierings- eller återställningsoperationen körs.
Till exempel validerar den systemlagrade proceduren sp_addumpdevice, som lägger till en post för en säkerhetskopieringsenhet i systemtabellerna, inte filåtkomst.
Använda SQL Server Management Studio
I Object Explorer, koppla till Database Engine och expandera sedan serverträdet.
Expandera Databaser och välj sedan en användardatabas. Eller expandera Systemdatabaser och välj en systemdatabas.
Högerklicka på databasen du vill säkerhetskopiera, peka på Tasks och välj sedan Säkerhetskopiera....
I dialogrutan Säkerhetskopierad databas visas databasen du valde i rullgardinsmenyn. Du kan byta databas till vilken annan databas som helst 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).
Använd listan Säkerhetskopiera till om du vill välja en annan enhet. Välj Lägg till för att lägga till backupobjekt eller destinationer. Du kan stripa säkerhetskopian över flera filer för att öka säkerhetskopieringshastigheten.
Om du vill ta bort ett mål för säkerhetskopiering väljer du det och väljer Ta bort. För att se innehållet i en befintlig backupdestination, välj den och välj Innehåll.
Eventuellt, granska de andra inställningarna på sidorna Media Options och Backup Options .
För mer information om säkerhetskopieringsalternativ, se Säkerhetskopieringsdatabas (Allmän sida),Säkerhetskopieringsdatabas (medieoptionssida) och Säkerhetskopieringsdatabas (Säkerhetskopieringsalternativssida).
Välj OK för att starta säkerhetskopieringen.
När säkerhetskopieringen är klar, välj OK för att stänga dialogen.
Remarks
När du anger en backup-uppgift i SQL Server Management Studio kan du generera motsvarande Transact-SQL-skript BACKUP genom att välja Script-knappen och sedan välja en skriptdestination.
Efter att du har skapat en fullständig databasbackup kan du skapa en differentiell databasbackup eller en transaktionslogg.
Du kan också markera kryssrutan Endast kopieringsbackup för att skapa en endast kopieringsbackup. En backup endast för kopiering är en SQL Server-säkerhetskopia som är oberoende av den vanliga sekvensen av SQL Server-säkerhetskopior. Mer information finns i kopieringsbara säkerhetskopior. Säkerhetskopior av typen endast kopia är inte tillgängliga för säkerhetskopieringstypen Differential.
Alternativet Överskriv media är inaktiverat på sidan Mediealternativ när du säkerhetskopierar till en URL.
Exempel
För följande exempel, skapa en testdatabas genom att använda 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 DEFAULT getdate() NOT NULL
);
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äkerhetskopia till disk på standardplatsen
Detta exempel säkerhetskopierar databasen SQLTestDB till disken på standardplatsen för säkerhetskopiering.
I Object Explorer, koppla till Database Engine och expandera sedan serverträdet.
Expandera Databaser, högerklicka , peka på
SQLTestDBUppgifter och välj sedan Säkerhetskopiera....Välj OK.
När säkerhetskopieringen är klar, välj OK för att stänga dialogen.
B. Fullständig säkerhetskopiering till disk till en nondefault-plats
Detta exempel säkerhetskopierar SQLTestDB databasen till disken på en plats du väljer.
I Object Explorer, koppla till Database Engine och expandera sedan serverträdet.
Expandera Databaser, högerklicka , peka på
SQLTestDBUppgifter och välj sedan Säkerhetskopiera....På sidan Generellt , i avsnittet Destination, välj 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 Backup Destination öppnas.
Ange en giltig sökväg och ett filnamn i rutan Filnamn . Använd .bak som filändelse för att förenkla filklassificeringen.
Välj OK, och välj sedan OK igen för att starta backupen.
När säkerhetskopieringen är klar, välj OK för att stänga dialogen.
C. Skapa en krypterad säkerhetskopia
Detta exempel säkerhetskopierar databasen SQLTestDB med kryptering till standardbackupplatsen.
I Object Explorer, koppla till Database Engine och expandera sedan serverträdet.
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 databasen
master.-- 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 antar att du redan har ett lagringskonto med en blobcontainer. Exemplet skapar en shared access-signatur och misslyckas om containern har en befintlig shared access-signatur.
Om du inte har en Blob Storage-container i ett lagringskonto, skapa en innan du fortsätter. Se Skapa ett lagringskonto för generell användning och Skapa en container.
I Object Explorer, koppla till Database Engine och expandera sedan serverträdet.
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 Backup Destination öppnas.
Om du tidigare registrerade Azure-lagringscontainern du vill använda med SSMS, välj den. Annars väljer du Ny container för att registrera en ny container.
I dialogrutan Koppla till en Microsoft-prenumeration loggar du in på ditt konto.
I rutan Välj lagringskonto väljer du ditt lagringskonto.
I rutan Välj blobcontainer väljer du din blobcontainer.
I rutan för Shared Access Policy Expiration kalender, välj ett utgångsdatum för den shared access-policy som detta exempel skapar.
Välj Create Credential för att generera en shared access-signatur och legitimation i SSMS.
Välj OK för att stänga dialogrutan Koppla 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 en backup-destination .
Välj OK för att starta säkerhetskopieringen.
När säkerhetskopieringen är klar, välj OK för att stänga dialogen.
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 databasbackup genom att köra satsen BACKUP DATABASE . Specificera:
- 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 ] |
Specificerar 1 till 64 backup-enheter som ska användas för backup-operationen. Ange en fysisk backup-enhet, eller ange en motsvarande logisk backup-enhet om en sådan redan är definierad. För att specificera en fysisk backup-enhet, använd DISK, TAPE, eller URL alternativet:{ DISK | URL | TAPE} = physical_backup_device_nameAnvänd URL för att säkerhetskopiera till Azure Blob Storage eller S3-kompatibel objektlagring. Mer information finns i Backup Devices (SQL Server). |
WITH <with_options> [ , ...n ] |
Används för att specificera ett eller flera alternativ, n. Några av de grundläggande WITH alternativen beskrivs i följande lista. |
Du kan också ange ett eller flera WITH alternativ. Här beskrivs några grundläggande WITH alternativ. För information om alla WITH alternativ, se BACKUP.
Grundläggande alternativ för säkerhetskopieringsuppsättning WITH :
{ KOMPRIMERING | INGEN_KOMPRIMERING }. SQL Server specificerar om säkerhetskopieringskomprimering utförs på backupen, vilket åsidosätter servernivåstandarden.
KRYPTERING (ALGORITM, SERVER CERTIFICATE | ASYMMETRIC KEY). I SQL Server 2014 eller senare specificeras krypteringsalgoritmen som ska användas, samt vilket certifikat eller den asymmetriska nyckeln som ska användas för att säkra krypteringen.
BESKRIVNING = { 'text' | @text_variable }. Anger den fritext som beskriver säkerhetskopieringsuppsättningen. Strängen kan innehålla högst 255 tecken.
NAMN = { backup_set_name | @backup_set_name_var }. Anger namnet på säkerhetskopieringsuppsättningen. Namn kan innehålla högst 128 tecken. Om du inte specificerar
NAMEär den tom.
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 } ]
Använd klausulen FORMAT när du använder media för första gången, eller när du vill skriva över all befintlig data. Du kan också tilldela det nya mediet ett medienamn och en beskrivning.
Viktigt!
Var försiktig när du använder klausulen FORMAT i uttalandet BACKUP eftersom detta alternativ förstör alla säkerhetskopior som tidigare lagrats på backupmediet.
Exempel
För följande exempel, skapa en testdatabas genom att använda 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 DEFAULT GETDATE() NOT NULL
);
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
EXECUTE 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
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.
Om du öppnar ett PowerShell-fönster från SSMS för att ansluta till Databasmotor för SQL Server kan du utelämna inloggningsdelen eftersom din inloggning i SSMS automatiskt etablerar anslutningen mellan PowerShell och Database Engine.
Anmärkning
Detta exempel kräver modulen SqlServer . Mer information finns i SQL Server PowerShell-provider.
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 policy för lagrad åtkomst skapas med läs-, skriv- och listrättigheter. SQL Server-inloggningsuppgifterna, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, skapas genom att använda en shared access-signatur kopplad till den lagrade åtkomstpolicyn. 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äll en databasbackup enligt den enkla återställningsmodellen
- Å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)
- sys.sp_addumpdevice (Transact-SQL)
- BACKUP (Transact-SQL)
- Säkerhetskopiera databas (allmän sida)
- säkerhetskopieringsdatabas (sidan Säkerhetskopieringsalternativ)
- Differentiella säkerhetskopior (SQL Server)
- Fullständiga databassäkerhetskopior (SQL Server)