Sdílet prostřednictvím


Vytvoření úplného zálohování 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 pomocí služby Azure Blob Storage a zálohování SQL Serveru na adresu URL.

Omezení a restrikce

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

Přehled a podrobný pohled na koncepty a úlohy zálohování najdete v tématu Přehled zálohování (SQL Server).

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 nahromadí, což vede k rozsáhlým protokolům chyb, 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 části trasovací příznaky (Transact-SQL).

Bezpečnost

Důvěryhodné je při zálohování databáze nastaveno na VYPNUTO. Informace o tom, jak nastavit TRUSTWORTHY na hodnotu ON, naleznete v tématu ALTER DATABASE SET Options (Transact-SQL).

Počínaje verzí SQL Server 2012 (11.x) už nejsou možnosti PASSWORD a MEDIAPASSWORD k dispozici pro tvorbu 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 kliknutím na tlačítko Skript a výběrem cíle skriptu.

  1. Po připojení k příslušné instanci databázového stroje Microsoft SQL Server rozbalte ve Průzkumník objektů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 Úkolya vyberte Zálohovat....

  4. V dialogovém okně Zálohovat databázi se databáze, kterou jste vybrali, zobrazí v rozevíracím seznamu (kterou můžete změnit na libovolnou jinou databázi na serveru).

  5. V rozevíracím 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).

    Prostřednictvím rozevíracího seznamu Zálohovat do můžete vybrat jiný zálohovací zařízení. Vyberte Přidat a přidejte zálohované objekty a cíle. Pro zvýšení rychlosti zálohování můžete rozčlenit sadu zálohy mezi více souborů.

    Chcete-li odebrat cíl zálohování, nejprve ho zvolte a poté vyberte Odebrat. Pokud chcete zobrazit obsah existujícího cíle zálohování, vyberte ho a vyberte Obsah.

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

    Další informace o různých možnostech zálohování naleznete na stránce Obecné, stránce Možnosti médiaa stránce 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í vyberte OK, aby se zavřelo dialogové okno aplikace SQL Server Management Studio.

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é) Můžete zaškrtnout políčko kopie-zálohy, chcete-li vytvořit jen kopírovací zálohu. zálohování pouze pro kopírování je záloha SQL Serveru, která je nezávislá na sekvenci konvenčních záloh SQL Serveru. Další informace naleznete v tématu Copy-Only zálohování (SQL Server). 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 se databáze SQLTestDB 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 Microsoft SQL Server rozbalte ve Průzkumník objektů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í vyberte OK a zavřete dialogové okno aplikace SQL Server Management Studio.

Vytvořte zálohu SQL

B. Úplné zálohování na disk do jiného než výchozího umístění

V tomto příkladu se databáze SQLTestDB zálohuje na disk v libovolném umístění.

  1. Po připojení k příslušné instanci databázového stroje Microsoft SQL Server rozbalte ve Průzkumník objektů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ílová vyberte Disk z rozevíracího seznamu Zálohování do:.

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

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

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

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

  8. Po úspěšném dokončení zálohování vyberte OK, a zavřete dialogové okno aplikace SQL Server Management Studio.

Změnit umístění databáze

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

V tomto příkladu se databáze SQLTestDB 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 Microsoft SQL Server rozbalte ve Průzkumník objektůstrom serveru.

  2. Rozbalte Databáze, rozbalte Systémové databáze, klikněte pravým tlačítkem na mastera vyberte Nový dotaz, abyste otevřeli okno dotazu s připojením k vaší SQLTestDB databázi.

  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 = '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';  
    
  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édia v části Přepsat média vyberte Zálohovat do nové sady médií a smažte všechny existující sady záloh.

  6. Na stránce Možnosti zálohování v části Šifrování zaškrtněte políčko Šifrovat zálohování.

  7. V rozbalovacím seznamu Algoritmus vyberte AES 256.

  8. V rozevíracím seznamu Certifikát nebo Asymetrický klíč vyberte MyCertificate.

  9. Vyberte OK.

šifrované zálohování

D. Zálohování do služby Azure Blob Storage

Příklad vytvoří úplnou zálohu databáze SQLTestDB do služby Azure Blob Storage. V příkladu se předpokládá, že už máte účet úložiště s blob kontejnerem. Příklad vytvoří sdílený přístupový podpis za vás; tento příklad selže, pokud má kontejner existující sdílený přístupový podpis.

Pokud v účtu úložiště nemáte kontejner Azure 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 Microsoft SQL Server rozbalte ve Průzkumník objektů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 adresu URL z rozevíracího seznamu Zálohovat do:.

  4. Vyberte Přidat a 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řipojení k Microsoft předplatnému se přihlaste ke svému účtu.

  7. V rozevíracím seznamu Vyberte účet úložiště vyberte svůj účet úložiště.

  8. V rozevíracím seznamu pro výběr kontejneru objektů blob vyberte svůj kontejner objektů blob.

  9. V rozevíracím seznamu 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ého Microsoftu.

  12. V textovém poli Záložní soubor upravte název záložního souboru (volitelné).

  13. Výběrem OK zavřete dialogové okno Vyberte 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í vyberte OK a zavřete dialogové okno aplikace SQL Server Management Studio.

Poznámka

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

Použití Transact-SQL

Vytvořte úplnou zálohu databáze spuštěním příkazu BACKUP DATABASE, který vytvoří úplnou zálohu databáze a zadá:

  • 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:

ZÁLOHOVAT DATABÁZI databáze DO backup_device [ ,...n ] [ S with_options [ ,...o ] ] ;

Možnost Popis
databáze Databáze, která má být zálohována.
backup_device [ ,...n ] Určuje seznam zálohovaných zařízení od 1 do 64, 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 určit fyzické zálohovací zařízení, použijte možnost DISK nebo PÁSKA:

{ 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 možnostech najdete v kroku 2.

Volitelně můžete zadat jednu nebo více možností WITH. Tady je popsáno několik základních možností WITH. Informace o všech možnostech S naleznete v tématu BACKUP (Transact-SQL).

Základní sada záloh s možnostmi:

  • { COMPRESSION | NO_COMPRESSION }: V systému SQL Server 2008 (10.0.x) Enterprise a novějším určuje, zda se komprese zálohování provádí s touto zálohou a přepisuje výchozí nastavení na úrovni serveru.
  • šifrování (ALGORITMUS, CERTIFIKÁT SERVERU | ASYMMETRIC KEY): V SQL Serveru 2014 nebo novějším zadejte šifrovací algoritmus, který se má použít, a certifikát nebo asymetrický klíč, který se má použít k zabezpečení šifrování.
  • POPIS= { 'text' | @text_variable }: Určuje volný text, který popisuje záložní 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 není zadaný název, 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 explicitně zadat, použijte možnost NOINIT. Informace o připojení k existujícím sadám záloh naleznete v tématu Sady médií, rodiny médií a sady záloh (SQL Server).

Pokud chcete formátovat záložní médium, použijte možnost FORMAT:

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

Klauzuli FORMAT použijte při prvním použití média nebo 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ý

Při použití klauzule FORMAT příkazu BACKUP používejte extrémní opatrnost, protože tím dojde ke zničení záloh, 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 kompletní databázi SQLTestDB na disk pomocí 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 a 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í databázi SQLTestDB 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 parametr -BackupAction 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 SqlServer. Instalaci provedete spuštěním Install-Module -Name SqlServer 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 pro připojení k instalaci SQL Serveru, můžete část přihlašovacích údajů vynechat, protože přihlašovací údaje v nástroji SSMS se automaticky použijí 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 instanci <myServer> do služby Azure 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 https://<myStorageAccount>.blob.core.windows.net/<myContainer>byly 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 PowerShellu používá parametr BackupFile 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