Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Tento článek popisuje, jak vytvořit kompletní databázovou zálohu v SQL Server pomocí SQL Server Management Studio (SSMS), Transact-SQL nebo PowerShell.
Další informace najdete v tématu Zálohování a obnovení SQL Serveru se službou Azure Blob Storage a zálohováním SQL Serveru na adresu URL pro Azure Blob Storage. Přehled konceptů a úkolů zálohování najdete v přehledu zálohování (SQL Server).
Doporučení
Jak databáze roste, plné zálohy v databázi trvají déle a vyžadují více úložiště. U velkých databází doplňte plné zálohy sérií diferenciálních databázových záloh.
Odhadněte velikost kompletní databázové zálohy pomocí sp_spaceused uložené procedury systému.
Ve výchozím nastavení každá úspěšná záloha přidá záznam do chybového logu SQL Server a logu systémových událostí. Časté zálohy mohou tyto záznamy zaplnit a ztížit nalezení dalších zpráv.
Pro potlačení záložních záznamů použijte trace flag 3226, pokud na ně vaše skripty nespoléhají.
Omezení
Nemůžete použít BACKUP toto tvrzení v explicitní ani implicitní transakci.
Zálohy z novějších verzí SQL Server nelze obnovit na starších verzích. Například nelze obnovit zálohu SQL Server 2025 (17.x) na SQL Server 2022 (16.x).
Zabezpečení
TRUSTWORTHY je na záloze databáze nastaveno na OFF. Chcete-li nastavit TRUSTWORTHY na ON, viz možnosti ALTER DATABASE SET.
Počínaje verzí SQL Server 2012 (11.x) nejsou možnosti PASSWORD a MEDIAPASSWORD pro vytváření záloh k dispozici. Zálohy vytvořené pomocí hesel můžete i nadále obnovit.
Dovolení
BACKUP DATABASE a BACKUP LOG oprávnění jsou výchozí pro členy role pevného správce systému a pro pevné databázové role db_owner a db_backupoperator .
Účet služby SQL Server musí mít oprávnění ke čtení a zápisu fyzického souboru záložního zařízení. Problémy s vlastnictvím nebo oprávněními k tomuto souboru brání zálohovacím a obnovovacím operacím a objevují se pouze při spuštění zálohy nebo obnovy.
Například procedura sp_addumpdevice systémově uložené, která přidává záznam záložního zařízení do systémových tabulek, nevaliduje přístup k souboru.
Použití aplikace SQL Server Management Studio
V Průzkumník objektů se připojte k Database Engine a poté rozbalte serverový strom.
Rozbalte databáze a poté vyberte uživatelskou databázi. Nebo rozbalte systémové databáze a vyberte systémovou databázi.
Klikněte pravým tlačítkem na databázi, kterou chcete zálohovat, nasměrujte na Úkoly a pak vyberte Zálohovat....
V dialogovém okně Zálohování databáze se vybraná databáze zobrazí v rozbalovacím seznamu. Databázi můžete změnit na jakoukoli jinou databázi na serveru.
V seznamu Typ zálohování vyberte typ zálohování. Výchozí hodnota je Úplná.
Důležitý
Před provedením rozdílového zálohování nebo zálohování transakčního protokolu musíte provést alespoň jednu úplnou zálohu databáze.
V části součásti Zálohování vyberte Database.
V části Cílová zkontrolujte výchozí umístění záložního souboru (ve složce ../mssql/data).
Pomocí seznamu Zálohovat do vyberte jiné zařízení. Zvolte Přidat pro přidání záložních objektů nebo destinací. Zálohovací sadu můžete rozdělit do více souborů, abyste zvýšili rychlost zálohování.
Chcete-li odebrat cíl zálohování, vyberte ho a klikněte na Odebrat. Pro zobrazení obsahu existujícího cíle zálohy jej vyberte a vyberte Obsah.
Volitelně si prohlédněte ostatní nastavení na stránkách Možnosti médií a Možnosti zálohování .
Pro více informací o možnostech zálohování viz Zálohovací databáze (Obecná stránka),Zálohovací databáze (stránka Možnosti médií) a Zálohovací databáze (Stránka možností zálohy).
Výběrem OK spusťte zálohování.
Po úspěšném dokončení zálohy vyberte OK pro uzavření dialogu.
Remarks
Když zadáte zálohovací úkol v SQL Server Management Studio, můžete vygenerovat odpovídající Transact-SQL BACKUP skript výběrem tlačítka Script a následným výběrem cíle skriptu.
Po vytvoření kompletní databázové zálohy můžete vytvořit diferenciální databázovou zálohu nebo zálohu transakčních logů.
Volitelně zaškrtněte políčko Záloha pouze pro kopii pro vytvoření zálohy pouze pro kopii. Záloha pouze pro kopírování je záloha SQL Serveru, která je nezávislá na posloupnosti běžných záloh SQL Serveru. Další informace najdete v tématu Zálohování pouze kopírování. Zálohy typu pouze kopie nejsou k dispozici pro typ zálohování Differential.
Možnost Přepisování médií je na stránce Nastavení médií při zálohování na URL zakázána.
Příklady
Pro následující příklady vytvořte testovací databázi pomocí následujícího Transact-SQL kódu:
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. Úplné zálohování na disk do výchozího umístění
Tento příklad zálohuje databázi SQLTestDB na disk ve výchozím místě zálohy.
V Průzkumník objektů se připojte k Database Engine a poté rozbalte serverový strom.
Rozbalte Databáze, klepněte pravým tlačítkem myši na
SQLTestDB, přejděte na Úkolya vyberte Zálohovat....Vyberte OK.
Po úspěšném dokončení zálohy vyberte OK pro uzavření dialogu.
B. Úplné zálohování na disk do nestandardního umístění
Tento příklad zálohuje databázi SQLTestDB na disk na místě, které si vyberete.
V Průzkumník objektů se připojte k Database Engine a poté rozbalte serverový strom.
Rozbalte Databáze, klepněte pravým tlačítkem myši na
SQLTestDB, přejděte na Úkolya vyberte Zálohovat....Na stránce Obecné v části Cíl vyberte v seznamu Zálohovat do možnost Disk.
Vyberte Odebrat , dokud nebudou odebrány všechny existující záložní soubory.
Vyberte Přidat. Otevře se dialogové okno Vybrat cíl zálohy .
Do pole Název souboru zadejte platnou cestu a název souboru. Použijte .bak jako příponu pro zjednodušení klasifikace souborů.
Vyberte OK a pak znovu OK, abyste zahájili zálohování.
Po úspěšném dokončení zálohy vyberte OK pro uzavření dialogu.
C. Vytvoření šifrované zálohy
Tento příklad zálohuje databázi SQLTestDB šifrováním do výchozího záložního místa.
V Průzkumník objektů se připojte k Database Engine a poté rozbalte serverový strom.
Rozbalte položku Databáze, rozbalte položku Systémové databáze, klepněte pravým tlačítkem myši
mastera potom výběrem možnosti Nový dotaz otevřete okno dotazu s připojením k databáziSQLTestDB.Spusť následující příkazy k vytvoření hlavního klíče databáze a certifikátu v databázi
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';V Průzkumníku objektů, v uzlu Databáze, klikněte pravým tlačítkem myši na
SQLTestDB, přejděte na Úkolya vyberte Zálohovat....Na stránce Možnosti médií v části Přepsat multimédia vyberte Zálohovat do nové sady médií a vymažte všechny existující sady záloh.
Na stránce Možnosti zálohování v části Šifrování vyberte Možnost Šifrovat zálohování.
V seznamu Algoritmy vyberte AES 256.
V seznamu certifikátů nebo asymetrických klíčů vyberte
MyCertificate.Vyberte OK.
D. Zálohování do služby Azure Blob Storage
Tento příklad vytvoří úplnou zálohu SQLTestDB databáze do služby Azure Blob Storage. Příklad předpokládá, že už máte úložný účet s blob kontejnerem. Příklad vytváří sdílený přístupový podpis a selže, pokud kontejner již má sdílený přístupový podpis.
Pokud nemáte Blob Storage kontejner v úložném účtu, vytvořte si ho, než budete pokračovat. Viz Vytvoření účtu úložiště pro obecné účely a Vytvoření kontejneru.
V Průzkumník objektů se připojte k Database Engine a poté rozbalte serverový strom.
Rozbalte Databáze, klepněte pravým tlačítkem myši na
SQLTestDB, přejděte na Úkolya vyberte Zálohovat....Na stránce Obecné vyberte v části Cíladresu URL v seznamu Zálohovat do seznamu.
Vyberte Přidat. Otevře se dialogové okno Vybrat cíl zálohy .
Pokud jste dříve zaregistrovali Azure storage kontejner, který chcete použít, s SSMS, vyberte ho. V opačném případě vyberte Nový kontejner a zaregistrujte nový kontejner.
V dialogovém okně Připojit se k předplatnému Microsoft se přihlaste ke svému účtu.
V poli Vybrat účet úložiště vyberte svůj účet úložiště.
V poli Vybrat kontejner objektů blob vyberte svůj kontejner objektů blob.
V kalendáři Expirace politiky sdíleného přístupu vyberte datum vypršení politiky sdíleného přístupu, kterou tento příklad vytváří.
Vyberte Vytvořit přihlašovací údaje pro generování sdíleného přístupového podpisu a přihlašovacího oprávnění v SSMS.
Zvolte OK pro uzavření dialogového okna Připojit se k předplatnému Microsoft.
V poli Záložní soubor změňte název záložního souboru, pokud chcete.
Vyberte OK pro uzavření dialogového okna Vybrat záložní cíl.
Výběrem OK spusťte zálohování.
Po úspěšném dokončení zálohy vyberte OK pro uzavření dialogu.
Poznámka
Zálohování do služby Blob Storage pomocí spravovaných identit se v současné době nepodporuje.
Použití Transact-SQL
Vytvořte kompletní zálohu databáze spuštěním příkazu BACKUP DATABASE . Specifikovat:
- Název databáze, která se má zálohovat.
- Zálohovací zařízení, kde se zapisuje úplné zálohování databáze.
Základní syntaxe Transact-SQL pro úplné zálohování databáze je:
BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
| Možnost | Popis |
|---|---|
<database> |
Databáze, která se má zálohovat. |
<backup_device> [ , ...n ] |
Specifikuje 1 až 64 zálohovacích zařízení pro zálohování. Specifikujte fyzické záložní zařízení, nebo odpovídající logické zálohovací zařízení, pokud je již definováno. Chcete-li určit fyzické zálohovací zařízení, použijte volbu DISK, TAPE nebo URL:{ DISK | URL | TAPE} = physical_backup_device_namePoužít URL pro zálohování do Azure Blob Storage nebo S3-kompatibilního objektového úložiště. Další informace naleznete v tématu zálohovací zařízení (SQL Server). |
WITH <with_options> [ , ...n ] |
Používá se k určení jedné nebo více možností, n. Některé základní WITH možnosti jsou popsány v následujícím seznamu. |
Volitelně můžete zadat jednu nebo více WITH možností. Tady je popsáno několik základních WITH možností. Pro informace o všech WITH možnostech viz BACKUP.
Základní možnosti sady záloh WITH:
{ KOMPRESE | BEZ_KOMPRESE }. SQL Server specifikuje, zda je na záloze provedena komprese záloh, čímž přepisuje výchozí nastavení na úrovni serveru.
ŠIFROVÁNÍ (ALGORITMUS, SERVER CERTIFICATE | ASYMMETRIC KEY). V SQL Server 2014 nebo novějším specifikuje šifrovací algoritmus a certifikát nebo asymetrický klíč k zabezpečení šifrování.
POPIS = { 'text' | @text_variable }. Určuje volný text, který popisuje zálohovací sadu. Řetězec může mít maximálně 255 znaků.
NAME = { backup_set_name | @backup_set_name_var }. Určuje název zálohovací sady. Názvy můžou mít maximálně 128 znaků. Pokud to nespecifikujete
NAME, je to prázdné.
Ve výchozím nastavení BACKUP připojí zálohu k existující sadě médií a zachová stávající sady záloh. Pokud chcete tuto konfiguraci explicitně zadat, použijte tuto NOINIT možnost. Informace o připojení k existujícím sadám záloh najdete v tématu Sady médií, rodiny médií a zálohovací sady (SQL Server).
Pokud chcete formátovat záložní médium, použijte tuto FORMAT možnost:
FORMÁT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]
Použijte tuto klauzuli FORMAT , když média používáte poprvé, nebo když chcete přepsat všechna existující data. Volitelně můžete novému médiu přiřadit název a popis média.
Důležitý
Buďte opatrní, když používáte klauzuli FORMAT příkazu BACKUP, protože tato možnost odstraní všechny zálohy dříve uložené na zálohovacím médiu.
Příklady
Pro následující příklady vytvořte testovací databázi pomocí následujícího Transact-SQL kódu:
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. Zálohování na diskové zařízení
Následující příklad zálohuje úplnou SQLTestDB databázi na disk. Používá FORMAT k vytvoření nové sady médií.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of SQLTestDB';
GO
B. Zálohování na páskové zařízení
Následující příklad zálohuje kompletní SQLTestDB databázi na pásku. Připojí zálohu k předchozím zálohám.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO TAPE = '\\.\Tape0'
WITH NOINIT,
NAME = 'Full Backup of SQLTestDB';
GO
C. Zálohování na logické páskové zařízení
Následující příklad vytvoří logické zálohovací zařízení pro páskovou jednotku. Příklad pak zálohuje kompletní SQLTestDB databázi do daného zařízení.
-- 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
Použijte cmdlet Backup-SqlDatabase. Pokud chcete explicitně označit úplné zálohování databáze, zadejte -BackupAction parametr s výchozí hodnotou Database. Tento parametr je volitelný pro úplné zálohy databáze.
Pokud otevřete PowerShell okno přímo v SSMS, abyste se připojili k Databázový stroj systému SQL Server, můžete část s přihlašovacím obsahem vynechat, protože vaše přihlašovací údaje v SSMS automaticky navážejí spojení mezi PowerShellem a Database Engine.
Poznámka
Tento příklad vyžaduje modul SqlServer. Další informace naleznete u poskytovatele PowerShellu SQL Serveru .
Příklady
A. Úplné zálohování (místní)
Následující příklad vytvoří úplnou zálohu databáze <myDatabase> do výchozího umístění zálohování instance serveru Computer\Instance. Volitelně tento příklad určuje -BackupAction Database.
Úplné příklady syntaxe najdete v tématu Backup-SqlDatabase.
$credential = Get-Credential
Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential
B. Úplné zálohování do Azure
Následující příklad vytvoří úplnou zálohu databáze <myDatabase> v <myServer> instanci do blob Storage. Je vytvořena uložená zásada přístupu s oprávněním ke čtení, zápisu a výpisu. Přihlašovací údaje SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, jsou vytvořeny pomocí podpisu sdíleného přístupu spojeného s politikou uloženého přístupu. Příkaz použije $backupFile parametr k určení umístění (URL) a názvu záložního souboru.
$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
Související úkoly
- Vytvoření rozdílového zálohování databáze (SQL Server)
- Obnovení zálohy databáze pomocí SSMS
- Obnovte zálohu databáze podle jednoduchého modelu obnovy
- Obnovení databáze do bodu selhání – úplné obnovení
- Obnovení databáze do nového umístění (SQL Server)
- Použít průvodce plánem údržby
Související obsah
- Řešení potíží s operacemi zálohování a obnovení SQL Serveru
- Přehled zálohování (SQL Server)
- Zálohy transakčního protokolu (SQL Server)
- Sady médií, rodiny médií a zálohovací sady (SQL Server)
- sys.sp_addumpdevice (Transact-SQL)
- BACKUP (Transact-SQL)
- Záloha databáze (obecná stránka)
- zálohování databáze (stránka Možností zálohování)
- Rozdílové zálohování (SQL Server)
- Úplné zálohy databáze (SQL Server)