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 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 Backup till URL.
Begränsningar och restriktioner
- Instruktionen
BACKUP
tillåts inte i en explicit eller implicit transaktion. - Säkerhetskopieringar som skapats av den senaste versionen 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 Spårningsflaggor (Transact-SQL).
Säkerhet
TRUSTWORTHY är inställt på OFF på en databassäkerhetskopia. Information om hur du anger TRUSTWORTHY till PÅ finns i ALTER DATABASE SET Options (Transact-SQL).
Från och med SQL Server 2012 (11.x) är alternativen PASSWORD och MEDIAPASSWORD inte längre 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 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 med den fysiska filen för säkerhetskopieringsenheten kanske inte visar sig förrän säkerhetskopian används eller ett försök att återställa görs.
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 klicka på knappen Skript och välja ett skriptmål.
När du har anslutit till rätt instans av Microsoft 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 (som du kan ändra till valfri annan databas på servern).
I listrutan Säkerhetskopieringstyp väljer du en säkerhetskopieringstyp – 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 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 listrutan 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 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 Ta bort. Om du vill visa innehållet i ett befintligt mål för säkerhetskopiering väljer du det och väljer Innehåll.
(valfritt) Granska de andra tillgängliga inställningarna under sidorna Mediealternativ och Alternativ för säkerhetskopiering .
Mer information om de olika alternativen för säkerhetskopiering finns på sidan Allmänt, Sidan Mediealternativ och Alternativ 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.
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 iCopy-Only Backups (SQL Server). 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 standardplats
I det här exemplet SQLTestDB
säkerhetskopieras databasen till disken på standardplatsen för säkerhetskopiering.
När du har anslutit till rätt instans av Microsoft SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDB
Uppgifter 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 plats som inte är standard
I det här exemplet SQLTestDB
säkerhetskopieras databasen till disken på valfri plats.
När du har anslutit till rätt instans av Microsoft SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDB
Uppgifter och välj sedan Säkerhetskopiera....På sidan Allmänt i avsnittet Mål väljer du Disk i listrutan Säkerhetskopiera till: .
Välj Ta bort tills alla befintliga säkerhetskopieringsfiler har tagits bort.
Välj Lägg till så öppnas dialogrutan Välj mål för säkerhetskopiering .
Ange en giltig sökväg och ett giltigt filnamn i textrutan Filnamn och använd .bak som tillägg för att förenkla klassificeringen av den här 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 rätt instans av Microsoft SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, expandera Systemdatabaser, högerklicka
master
och välj 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
master
databasen.-- Create the master key CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'; -- 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 = '23987hxJ#KL95234nl0zBe' -- 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 i avsnittet Kryptering markerar du kryssrutan Kryptera säkerhetskopiering .
I listrutan Algoritm väljer du AES 256.
I listrutan Certifikat eller Asymmetrisk nyckel väljer du
MyCertificate
.Välj OK.
D. Säkerhetskopiera till Azure Blob Storage
I exemplet skapas en fullständig databassäkerhetskopia av SQLTestDB
till Azure Blob Storage. Exemplet förutsätter att du redan har ett lagringskonto med en blobcontainer. Exemplet skapar en signatur för delad åtkomst åt dig. Det här exemplet misslyckas om containern har en befintlig signatur för delad åtkomst.
Om du inte har en Azure 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 rätt instans av Microsoft SQL Server Database Engine expanderar du serverträdet i Object Explorer.
Expandera Databaser, högerklicka , peka på
SQLTestDB
Uppgifter och välj sedan Säkerhetskopiera....På sidan Allmänt i avsnittet Mål väljer du URL från listrutan Säkerhetskopiera till: .
Välj Lägg till så öppnas dialogrutan Välj mål för säkerhetskopiering .
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 listrutan Välj lagringskonto väljer du ditt lagringskonto.
I listrutan Välj blobcontainer väljer du din blobcontainer.
I den nedrullningsbara kalenderrutan Förfallodatum 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 textrutan Säkerhetskopieringsfil ändrar du namnet på säkerhetskopieringsfilen (valfritt).
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 Azure Blob Storage stöds för närvarande inte med hanterade identiteter.
Använda Transact-SQL
Skapa en fullständig databassäkerhetskopia genom att köra -instruktionen BACKUP DATABASE
för att skapa den fullständiga databassäkerhetskopian 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:
Säkerhetskopiera databasen till backup_device [ ,... n ] [ med with_options [ ,... o ] ] ;
Alternativ | Beskrivning |
---|---|
databas | Är den databas som ska säkerhetskopieras. |
backup_device [ ,... n ] | Anger en lista med mellan 1 och 64 säkerhetskopieringsenheter som ska användas för säkerhetskopieringen. Du kan ange en fysisk säkerhetskopieringsenhet eller ange en motsvarande logisk säkerhetskopieringsenhet om den redan har definierats. Om du vill ange en fysisk säkerhetskopieringsenhet använder du alternativet DISK eller BAND: { DISK | TAPE } =physical_backup_device_name Mer information finns i Backup Devices (SQL Server). |
MED med_alternativ [ ,...och ] | Används för att ange ett eller flera alternativ, o. Information om några av de grundläggande alternativen finns i steg 2. |
Du kan också ange ett eller flera WITH-alternativ . Här beskrivs några grundläggande WITH-alternativ . Information om alla WITH-alternativ finns i BACKUP (Transact-SQL).
Alternativ för grundläggande säkerhetskopieringsinställningar MED:
- { KOMPRIMERING | INGEN_KOMPRIMERING }: I SQL Server 2008 (10.0.x) Enterprise och senare anger om säkerhetskopieringen ska komprimeras, som åsidosätter standardinställningen på servernivå.
- KRYPTERING (ALGORITM, SERVERCERTIFIKAT | ASYMMETRISK NYCKEL): I ENDAST SQL Server 2014 eller senare anger du den krypteringsalgoritm som ska användas samt certifikatet eller den asymmetriska nyckel som ska användas för att skydda krypteringen.
- BESKRIVNING= { 'text' | @text_variable }: Anger den fritext 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 NAMN inte har angetts är det tomt.
Som standard lägger BACKUP
till säkerhetskopian i en befintlig medieuppsättning och bevarar de befintliga kopiorna. Använd NOINIT
-alternativet för att uttryckligen specificera. Information om hur du lägger till befintliga säkerhetskopieringsuppsättningar finns i Media Sets, Media Families och Backup Sets (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 FORMAT-satsen när du använder media för första gången eller om du vill skriva över alla befintliga data. Du kan också tilldela det nya mediet ett medienamn och en beskrivning.
Viktigt!
Var mycket försiktig när du använder FORMAT-satsen i -instruktionen BACKUP
eftersom detta 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 med hjälp av 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 och säkerhetskopieringen läggs till 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
Med hjälp av 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 Get-Module -Name SqlServer
. Installera genom att köra 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 för att ansluta till en installation av SQL Server kan du utelämna autentiseringsdelen 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
. Alternativt anger det här exemplet -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 Azure 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 principen för lagrad åtkomst. PowerShell-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 SSMS-
- Återställa en databassäkerhetskopia under den enkla återställningsmodellen (Transact-SQL)
- Återställa en databas till felpunkten under den fullständiga återställningsmodellen (Transact-SQL)
- Återställa en databas till en ny plats (SQL Server)
- Använd Underhållsplanguiden
Relaterat innehåll
- Felsöka SQL Server-säkerhetskopiering och återställningsåtgärder
- Säkerhetskopieringsöversikt (SQL Server)
- Säkerhetskopiering av transaktionsloggar (SQL Server)
- Medieuppsättningar, Mediefamiljer och Säkerhetskopiauppsättningar (SQL Server)
- sp_addumpdevice (Transact-SQL)
- Säkerhetskopiering (Transact-SQL)
- Säkerhetskopiera databas (allmän sida)
- säkerhetskopieringsdatabas (sidan Säkerhetskopieringsalternativ)
- differentiella säkerhetskopieringar (SQL Server)
- Fullständig säkerhetskopiering av databaser (SQL Server)