Sdílet prostřednictvím


Vytvoření úplné zálohy databáze

platí pro:SQL Server

Tento článek popisuje, jak vytvořit úplnou zálohu databáze v SQL Serveru pomocí aplikace SQL Server Management Studio, Transact-SQL nebo PowerShellu.

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.

Omezení

  • Příkaz BACKUP není v explicitní ani implicitní transakci povolený.
  • Zálohy vytvořené novějšími verzemi SQL Serveru nejde obnovit v dřívějších verzích SQL Serveru.

Přehled konceptů a úloh zálohování a hlubších informací najdete v tématu Přehled zálohování (SQL Server) a teprve potom pokračujte.

Doporučení

  • S rostoucí velikostí databáze trvá úplné zálohování databáze více času a vyžaduje větší prostor úložiště. U velkých databází zvažte doplnění úplných záloh databáze řadou rozdílových záloh databáze.
  • Pomocí uložené procedury sp_spaceused systému odhadněte velikost úplného zálohování databáze.
  • Ve výchozím nastavení každá úspěšná operace zálohování přidá položku do protokolu chyb SQL Serveru a do systémového protokolu událostí. Pokud zálohujete často, zprávy o úspěchu se rychle hromadí, což vede k obrovským chybám protokolů, což ztěžuje hledání dalších zpráv. V takových případech můžete tyto položky protokolu zálohování potlačit pomocí trasovacího příznaku 3226, pokud žádný z vašich skriptů na těchto položkách nezávisí. Další informace naleznete v tématu Nastavení příznaků trasování pomocí DBCC TRACEON.

Zabezpečení

TRUSTWORTHY je nastavená na OFF zálohu databáze. Informace o nastavení TRUSTWORTHYONnaleznete v tématu ALTER DATABASE SET možnosti.

Počínaje SQL Serverem 2012 (11.x) PASSWORD nejsou dostupné možnosti pro MEDIAPASSWORD vytváření záloh. 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 sysadmin pevné role serveru a db_owner a db_backupoperator pevných databázových rolí.

Problémy s vlastnictvím a oprávněním ve fyzickém souboru zálohovacího zařízení můžou kolidovat s operací zálohování. Služba SQL Serveru by měla číst a zapisovat do zařízení. Účet, pod kterým běží služba SQL Serveru, musí mít oprávnění k zápisu do zálohovacího zařízení. sp_addumpdevice, který přidává položku pro zálohovací zařízení v systémových tabulkách, ale nekontroluje přístupová oprávnění k souborům. Problémy s fyzickým souborem zálohovaného zařízení se nemusí zobrazit, dokud se záloha nepoužije nebo se nepokusí o obnovení.

Použití aplikace SQL Server Management Studio

Poznámka

Když zadáte úlohu zálohování pomocí aplikace SQL Server Management Studio, můžete vygenerovat odpovídající skript Transact-SQL BACKUP výběrem tlačítka Skript a následným výběrem cíle skriptu.

  1. Po připojení k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů rozbalte strom serveru.

  2. Rozbalte Databázea buď vyberte uživatelskou databázi, nebo rozbalte systémové databáze a vyberte systémovou databázi.

  3. Klikněte pravým tlačítkem myši na databázi, kterou chcete zálohovat, přejděte na příkaz Úkoly a pak vyberte Zálohovat....

  4. V dialogovém okně Zálohovat databázi se vybraná databáze zobrazí v rozevíracím seznamu. (Databázi můžete změnit na jakoukoli jinou databázi na serveru.)

  5. 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.

  6. V části součásti Zálohování vyberte Database.

  7. V části Cílová zkontrolujte výchozí umístění záložního souboru (ve složce ../mssql/data).

    Pomocí seznamu Zálohovat můžete vybrat jiné zařízení. Výběrem možnosti Přidat přidáte zálohované objekty nebo cíle. Pro zvýšení rychlosti zálohování můžete rozčlenit sadu zálohy mezi více souborů.

    Pokud chcete odebrat cíl zálohování, vyberte ho a pak vyberte Odebrat. Pokud chcete zobrazit obsah existujícího cíle zálohování, vyberte ho a pak vyberte Obsah.

  8. (Volitelné) Zkontrolujte další dostupná nastavení na stránkách Možnosti médií a Možnosti zálohování .

    Další informace o různých možnostech zálohování najdete v tématu Zálohování databáze (obecná stránka),Zálohování databáze (stránka Možnosti média) a Zálohovat databázi (stránka Možnosti zálohování).

  9. Výběrem OK spusťte zálohování.

  10. Po úspěšném dokončení zálohování zavřete dialogové okno aplikace SQL Server Management Studio výběrem možnosti OK .

Další informace

  • Po vytvoření úplné zálohy databáze můžete vytvořit diferenciální zálohu databáze nebo zálohu transakčního logu.

  • (Volitelné) Pokud chcete vytvořit zálohu jen pro kopírování, můžete zaškrtnout políčko jen pro kopírování. Zálohování pouze kopírování je záloha SQL Serveru, která je nezávislá na sekvenci konvenčních záloh SQL Serveru. Další informace najdete v tématu Zálohování pouze kopírování. Záloha jen pro kopírování není k dispozici pro rozdílový typ zálohování .

  • Možnost Přepsat média je na stránce Možnosti médií zakázána, pokud zálohujete na URL adresu.

Příklady

V následujících příkladech vytvořte testovací databázi s následujícím kódem Transact-SQL:

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. Úplné zálohování na disk do výchozího umístění

V tomto příkladu SQLTestDB se databáze zálohuje na disk ve výchozím umístění zálohování.

  1. Po připojení k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů rozbalte strom serveru.

  2. Rozbalte Databáze, klepněte pravým tlačítkem myši na SQLTestDB, přejděte na Úkolya vyberte Zálohovat....

  3. Vyberte OK.

  4. Po úspěšném dokončení zálohování zavřete dialogové okno aplikace SQL Server Management Studio výběrem možnosti OK .

Snímek obrazovky znázorňující kroky pro vytvoření zálohy

B. Úplné zálohování na disk do nestandardního umístění

V tomto příkladu SQLTestDB se databáze zálohuje na disk v umístění, které zvolíte.

  1. Po připojení k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů rozbalte strom serveru.

  2. Rozbalte Databáze, klepněte pravým tlačítkem myši na SQLTestDB, přejděte na Úkolya vyberte Zálohovat....

  3. Na stránce Obecné v části Cíl vyberte disk v seznamu Zálohovat do seznamu.

  4. Vyberte Odebrat , dokud nebudou odebrány všechny existující záložní soubory.

  5. Vyberte Přidat. Otevře se dialogové okno Vybrat cíl zálohování .

  6. Do pole Název souboru zadejte platnou cestu a název souboru. Pro zjednodušení klasifikace souboru použijte .bak jako příponu.

  7. Vyberte OK a pak znovu vyberte OK spusťte zálohování.

  8. Po úspěšném dokončení zálohování zavřete dialogové okno aplikace SQL Server Management Studio výběrem možnosti OK .

Snímek obrazovky znázorňující, jak přidat nebo odebrat umístění zálohy

C. Vytvoření šifrované zálohy

V tomto příkladu SQLTestDB se databáze zálohuje pomocí šifrování do výchozího umístění zálohování.

  1. Po připojení k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů rozbalte strom serveru.

  2. 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ázi SQLTestDB .

  3. Spuštěním následujících příkazů vytvořte hlavní klíč databáze a certifikát 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';
    
  4. 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....

  5. 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.

  6. Na stránce Možnosti zálohování v části Šifrování vyberte Možnost Šifrovat zálohování.

  7. V seznamu Algoritmy vyberte AES 256.

  8. V seznamu certifikátů nebo asymetrických klíčů vyberte MyCertificate.

  9. Vyberte OK.

Snímek obrazovky znázorňující kroky pro vytvoření šifrované zálohy

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 se zapíše s předpokladem, že už máte účet úložiště s kontejnerem objektů blob. Příklad vytvoří sdílený přístupový podpis. Příklad selže, pokud má kontejner existující sdílený přístupový podpis.

Pokud v účtu úložiště nemáte kontejner Blob Storage, vytvořte ho před pokračováním. Viz Vytvoření účtu úložiště pro obecné účely a Vytvoření kontejneru.

  1. Po připojení k příslušné instanci databázového stroje SQL Serveru v Průzkumníku objektů rozbalte strom serveru.

  2. Rozbalte Databáze, klepněte pravým tlačítkem myši na SQLTestDB, přejděte na Úkolya vyberte Zálohovat....

  3. Na stránce Obecné vyberte v části Cíladresu URL v seznamu Zálohovat do seznamu.

  4. Vyberte Přidat. Otevře se dialogové okno Vybrat cíl zálohování .

  5. Pokud jste dříve zaregistrovali kontejner úložiště Azure, který chcete použít se sadou SQL Server Management Studio, vyberte ho. V opačném případě vyberte Nový kontejner a zaregistrujte nový kontejner.

  6. V dialogovém okně Připojit k předplatnému Microsoftu se přihlaste ke svému účtu.

  7. V poli Vybrat účet úložiště vyberte svůj účet úložiště.

  8. V poli Vybrat kontejner objektů blob vyberte kontejner objektů blob.

  9. V poli Kalendář vypršení platnosti zásad sdíleného přístupu vyberte datum vypršení platnosti pro zásady sdíleného přístupu, které vytvoříte v tomto příkladu.

  10. Vyberte možnost Create Credential pro vygenerování sdíleného přístupového podpisu a přihlašovacích údajů v aplikaci SQL Server Management Studio.

  11. Vyberte OK zavřete dialogové okno Připojit k předplatnému Microsoftu .

  12. V poli Záložní soubor změňte název záložního souboru, pokud chcete.

  13. Výběrem možnosti OK zavřete dialogové okno Vybrat cíl zálohování .

  14. Výběrem OK spusťte zálohování.

  15. Po úspěšném dokončení zálohování zavřete dialogové okno aplikace SQL Server Management Studio výběrem možnosti OK .

Poznámka

Zálohování do služby Blob Storage pomocí spravovaných identit se v současné době nepodporuje.

Použití Transact-SQL

Spuštěním BACKUP DATABASE příkazu vytvořte úplnou zálohu databáze a zadejte:

  • 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 ] Určuje seznam mezi 1 a 64 záložními zařízeními, která se mají použít pro operaci zálohování. Můžete zadat fyzické zálohovací zařízení nebo můžete určit odpovídající logické zálohovací zařízení, pokud už je definované. Pokud chcete zadat fyzické zálohovací zařízení, použijte tuto DISK možnost TAPE :

{ DISK | TAPE } =physical_backup_device_name

Další informace naleznete v tématu zálohovací zařízení (SQL Server).
WITH <with_options> [ , ...o ] Slouží k určení jedné nebo více možností, o. Informace o některých základních WITH možnostech jsou následující.

Volitelně můžete zadat jednu nebo více WITH možností. Tady je popsáno několik základních WITH možností. Informace o všechmožnostch WITH

Základní možnosti sady WITH záloh:

  • { COMPRESSION | NO_COMPRESSION }. V systému SQL Server 2008 (10.0.x) Enterprise a novějším určuje, jestli se u zálohování provádí komprese zálohování , která přepisuje výchozí nastavení na úrovni serveru.
  • ŠIFROVÁNÍ (ALGORITMUS, CERTIFIKÁT SERVERU | ASYMETRICKÝ KLÍČ). V SQL Serveru 2014 nebo novějším určuje šifrovací algoritmus, který se má použít, a certifikát nebo asymetrický klíč, který se má použít k zabezpečení šifrování.
  • DESCRIPTION = { '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 NAME není zadaný, je 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:

FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]

Klauzuli FORMAT použijte při prvním použití média nebo při přepsání všech existujících dat. Volitelně můžete novému médiu přiřadit název a popis média.

Důležitý

Při použití FORMAT klauzule BACKUP příkazu buďte opatrní, protože tato možnost zničí všechny zálohy, které byly dříve uloženy na záložním médiu.

Příklady

V následujících příkladech vytvořte testovací databázi s následujícím kódem Transact-SQL:

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. Zálohování na diskové zařízení

Následující příklad zálohuje úplnou SQLTestDB databázi na disk. Používá FORMAT se 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
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

Použití PowerShellu

Použijte rutinu 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.

Poznámka

Tyto příklady vyžadují modul SqlServer. Pokud chcete zjistit, jestli je nainstalovaný, spusťte Get-Module -Name SqlServerpříkaz . Pokud ho chcete nainstalovat, spusťte Install-Module -Name SqlServer ji v relaci správce PowerShellu.

Další informace naleznete u poskytovatele PowerShellu SQL Serveru .

Důležitý

Pokud otevíráte okno PowerShellu z aplikace SQL Server Management Studio (SSMS) pro připojení k instanci SQL Serveru, můžete část přihlašovacích údajů vynechat, protože vaše přihlašovací údaje v nástroji SSMS se automaticky používají k navázání připojení mezi PowerShellem a vaší instancí 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. Byla vytvořena uložená zásada přístupu s právy ke čtení, zápisu a seznamu. Přihlašovací údaje SQL Serveru byly https://<myStorageAccount>.blob.core.windows.net/<myContainer>vytvořeny pomocí sdíleného přístupového podpisu, který je přidružený k uloženým zásadám 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