Zálohování SQL Server databázi s naším kompletním průvodcem pro rok 2025. Podrobné pokyny a osvědčené postupy pro všechny úrovně dovedností.
1. Úvod do SQL Server Zálohování
1.1 Co je SQL Server Zálohování?
SQL Server Zálohování je proces vytváření kopií souborů databáze za účelem ochrany před ztrátou dat. Záloha zachycuje stav vaší databáze v určitém časovém okamžiku, což vám umožňuje obnovit data v případě selhání hardwaru, lidských chyb nebo katastrof.
SQL Server Ve výchozím nastavení ukládá zálohy do souborů .bak, které obsahují všechny databázové objekty včetně tabulek, uložených procedur, zobrazení, indexů a transakčních protokolů.
1.2 Proč SQL Server Zálohování je klíčové
Zálohy databází slouží jako vaše poslední linie obrany proti ztrátě dat. Bez řádných záloh vaše organizace riskuje:
- Trvalá ztráta dat z důvodu selhání nebo poškození hardwaru
- Prodloužená prostoje během pokusů o zotavení
- Narušení podnikání a ztráta příjmů
- Porušení souladu pokud data nelze obnovit
- Poškození reputace z přerušení služeb
Běžné SQL Server Zálohy zajišťují kontinuitu podnikání a splňují regulační požadavky na ochranu dat.
1.3 Běžné scénáře ztráty dat
Pochopení toho, kdy dochází ke ztrátě dat, vám pomůže vyvinout efektivní strategii zálohování:
- Selhání hardwaru: Pády disku, poruchy serveru nebo selhání úložného systému
- Lidské chyby: Náhodné smazání, nesprávné aktualizace nebo vyřazené tabulky
- Problémy se softwarem: Chyby aplikací, poškozené aktualizace nebo pády systému
- Narušení bezpečnosti: Útoky ransomwaru, škodlivé mazání nebo neoprávněný přístup
- Přírodní katastrofy: Požáry, záplavy nebo výpadky proudu postihující datová centra
2. Porozumění SQL Server Typy zálohování
SQL Server podporuje více typů záloh, z nichž každý splňuje jiné potřeby obnovy a požadavky na úložiště.
2.1 Úplná záloha
Úplná záloha vytvoří kompletní kopii celé databáze, včetně všech datových souborů a části transakčního protokolu potřebného pro obnovení.
2.1.1 Kdy použít úplnou zálohu
Úplné zálohy jsou ideální pro:
- Stanovení základní linie pro ostatní typy záloh
- Malé až střední databáze, kde je doba zálohování přijatelná
- Týdenní nebo měsíční plány zálohování
- Databáze s častými změnami
2.1.2 Výhody a omezení úplné zálohy
Výhody:
- Nejjednodušší proces obnovy – jeden soubor obsahuje vše
- Samostatné a nezávislé na jiných zálohách
- Nejrychlejší doba obnovy pro kompletní obnovu databáze
Omezení:
- Vyžaduje značný úložný prostor
- Delší doba zálohování pro velké databáze
- Vyšší spotřeba zdrojů během zálohovacích operací
2.2 Diferenciální záloha
Rozdílová záloha zachycuje pouze změny dat od poslední úplné zálohy, čímž se snižuje doba zálohování a požadavky na úložiště.
2.2.1 Jak funguje diferenciální zálohování
Rozdílové zálohy sledují úpravy pomocí změněných extentů. Při obnově... SQL Server nejprve použije poslední úplnou zálohu a poté použije most nedávná rozdílová záloha.
2.2.2 Plná vs. diferenciální záloha
| Vzhled | Plná záloha | Diferenciální zálohování |
|---|---|---|
| Velikost | Kompletní databáze | Pouze změny od poslední úplné zálohy |
| Čas zálohy | Nejdelší | Rychlejší než plný |
| Obnovte proces | Obnova jednoho souboru | Vyžaduje plný + diferenciál |
| Požadováno úložiště | Most prostor | Zpočátku méně místa, časem se rozrůstá |
2.3 Záloha protokolu transakcí
Zálohy transakčních protokolů zachycují všechny transakce od poslední zálohy protokolu, což umožňuje obnovení k určitému bodu v čase.
2.3.1 Principy transakčních protokolů
Transakční protokol zaznamenává každou změnu v databázi. Zálohy protokolů zkracují neaktivní část protokolu, čímž zabraňují jeho neomezenému růstu a zaplňování disku.
2.3.2 Obnova v daném časovém bodě
Zálohy transakčních protokolů vám umožňují obnovit databázi do libovolného konkrétního okamžiku v rámci zálohy protokolu. To je klíčové pro obnovu po náhodných úpravách nebo smazání dat.
Pro provedení obnovy v daném časovém bodě potřebujete:
- Poslední úplná záloha
- Most nedávná rozdílová záloha (volitelné)
- Všechny zálohy protokolu transakcí z plné/rozdílové zálohy do vaší tardostat čas
2.4 Záloha koncového protokolu
Zálohy koncových protokolů zachycují záznamy protokolů, které dosud nebyly zálohovány, čímž zabraňují ztrátě dat a udržují neporušený řetězec protokolů. Před obnovením SQL Server Pro obnovení databáze do posledního bodu v čase je nutné zálohovat konec jejího transakčního protokolu. Záloha koncového protokolu je poslední zálohou, která vás v plánu obnovy databáze zajímá.

Poznámka: Ne všechny scénáře obnovy vyžadují zálohu koncového protokolu. Záloha koncového protokolu není potřeba, pokud je bod obnovy obsažen v dřívější záloze protokolu. Záloha koncového protokolu je také zbytečná, pokud přesouváte nebo nahrazujete (přepisujete) databázi a nepotřebujete ji obnovit do určitého bodu po jejím nahrání.ost nedávná záloha.
2.4.1 Kdy jsou zálohy koncových protokolů nezbytné
Následující scénáře popisují, kdy byste měli zálohovat koncový protokol:
Obnova online databáze: Pokud je databáze online a plánujete provést operaci obnovení databáze, začněte zálohováním konce protokolu. Abyste se vyhnuli chybě u online databáze, musíte při zálohování použít možnost WITH NORECOVERY v příkazu BACKUP jazyka Transact-SQL. SQL Server databáze.
Obnova databáze offline: Pokud je databáze offline a nepodaří se ji spustittara potřebujete obnovit databázi, nejprve zálohujte konec protokolu. Protože v tuto chvíli nemohou probíhat žádné transakce, je použití možnosti WITH NORECOVERY volitelné. NORECOVERY je v tomto scénáři v podstatě totéž co záloha protokolu transakcí pouze s kopií.
Poškozená záloha databáze: Pokud je databáze poškozena, zkuste vytvořit zálohu koncové části protokolu pomocí volby WITH CONTINUE_AFTER_ERROR v příkazu BACKUP. V poškozené databázi může být záloha koncové části protokolu úspěšná pouze v případě, že soubory protokolu nejsou poškozené, databáze je ve stavu, který podporuje zálohy koncových protokolů, a databáze neobsahuje žádné hromadně zaznamenané změny. Pokud nelze vytvořit zálohu koncových protokolů, budou všechny transakce provedené po posledním MS... SQL Server záložní databáze jsou lost.
2.4.2 Klíčové možnosti pro zálohy koncových protokolů
S NORECOVERY: Pokud zálohujete část protokolu online databáze, kterou plánujete následně obnovit, použijte WITH NORECOVERY. NORECOVERY přepne databázi do offline režimu. Můžete také zálohovat SQL Server protokol koncové části offline databáze. Pokud chcete databázi ponechat offline, použijte volbu WITH NORECOVERY. Upozorňujeme, že protokol bude zkrácen, pokud nezadáte možnost COPY_ONLY nebo NO_TRUNCATE.
S POKRAČOVÁNÍM PO CHYBĚ: Volbu CONTINUE_AFTER_ERROR použijte pouze v případě, že zálohujete konec poškozené databáze. Při zálohování konce protokolu v poškozené databázi nemusí být některá metadata obvykle zachycená v zálohách protokolů k dispozici.
2.5 Záloha pouze pro kopírování
Zálohy pouze pro kopírování vytvářejí nezávislou zálohu bez ovlivnění normální sekvence záloh. Nenarušují řetězce diferenciálních záloh ani kontinuitu transakčního protokolu.
Používejte zálohy pouze pro kopírování pro:
- Vytváření testovacích nebo vývojových kopií databáze
- Ad-hoc zálohy bez ovlivnění plánovaných záloh
- Záloha před většími změnami nebo testováním
2.6 Zálohování souborů a skupin souborů
Zálohy souborů a skupin souborů tarzískat konkrétní soubory databáze nebo skupiny souborů, nikoli celou databázi. Tento přístup funguje dobře pro velmi rozsáhlé databáze, kde zálohování všeho trvá příliš dlouho.
Mezi výhody patří:
- Rychlejší zálohování velkých databází
- Paralelní zálohování více skupin souborů
- Možnosti granulární obnovy
- Optimalizované plány zálohování pro skupiny souborů pouze pro čtení
2.7 Částečná záloha
Částečné zálohy zahrnují všechna data v primární skupině souborů a ve všech skupinách souborů s povolením pro čtení i zápis, s výjimkou skupin souborů pouze pro čtení. To snižuje velikost a čas zálohování databází se statickými historickými daty uloženými ve skupinách souborů pouze pro čtení.
3. SQL Server Modely obnovy
SQL Server Modely obnovy určují, které typy záloh jsou k dispozici a jak jsou spravovány transakční protokoly.
3.1 Jednoduchý model obnovy
3.1.1 Charakteristiky a případy použití
Jednoduchá obnova automaticky zkrátí transakční protokol po každém kontrolním bodu a uvolní tak místo bez nutnosti zálohování protokolů.
Nejlepší pro:
- Vývojové a testovací databáze
- Databáze, u kterých je ztráta dat mezi zálohami přijatelná
- Datové sklady s ETL procesy, které lze znovu spustit
- Databáze pouze pro čtení nebo pro vytváření sestav
3.1.2 Dostupné možnosti zálohování
Jednoduchá obnova podporuje:
- Plné zálohy
- Diferenciální zálohy
- Zálohy souborů a skupin souborů
- Zálohy pouze pro kopírování
Zálohy transakčních protokolů jsou není k dispozici v jednoduchém modelu obnovy.
3.2 Model úplné obnovy
3.2.1 Vlastnosti a výhody
Úplná obnova zaznamenává všechny transakce a uchovává záznamy protokolu, dokud je nezálohujete. To umožňuje úplnou obnovu dat do libovolného časového bodu v rámci zálohy protokolu transakcí.
Hlavní výhody:
- Minimální potenciál ztráty dat
- Možnost obnovení v daném časovém bodě
- Podporuje odesílání protokolů a zrcadlení databáze
- Maximální flexibilita zotavení
3.2.2 Správa transakčních protokolů
V rámci úplné obnovy je nutné provádět pravidelné zálohy transakčních protokolů, aby bylo možné:
- Zabraňte zaplňování místa na disku protokolem transakcí
- Udržujte nepřetržitý zálohovací řetězec
- Povolit obnovení v určitém okamžiku
- Řízení růstu souborů protokolu
Typický plán zálohování: úplné zálohy týdně, rozdílové zálohy denně, zálohy protokolů každých 15–30 minut.
3.3 Model hromadné obnovy protokolovaných dat
3.3.1 Kdy použít hromadné protokolování
Hromadně protokolovaná obnova minimálně protokoluje hromadné operace, jako je BULK INSERT, SELECT INTO a opětovné sestavení indexu, a zároveň zachovává plné protokolování pro běžné transakce.
Hromadné obnovení protokolováno použijte v následujících případech:
- Provádění velkých hromadných importních operací
- Obnovení indexů na velkých tabulkách
- Provádění operací, které využívají minimální protokolování
- Potřeba zmenšit velikost transakčního protokolu během specifických operací
3.3.2 Omezení a úvahy
Důležitá omezení:
- Obnovení k určitému bodu v čase není během hromadných operací k dispozici.
- Zálohy protokolů jsou větší při hromadných operacích.
- V případě potřeby je nutné přepínat mezi plným a hromadným protokolováním.
3.4 Výběr správného modelu obnovy
Vyberte si model obnovy na základě obchodních požadavků:
| Model obnovy | Riziko ztráty dat | Point-in-Time Recovery | nejlepší |
|---|---|---|---|
| prostý | Změny od poslední zálohy | Ne | Vývoj/test, přijatelná ztráta dat |
| Plný | Minimální (obvykle minuty) | Ano | Produkční databáze, kritická data |
| Hromadně protokolováno | Změny od poslední zálohy protokolu | Omezeno během hromadných operací | Temporarpoužití během hromadných operací |
4. Zálohování SQL Server Databáze používající SSMS
4.1 Předpoklady a příprava
Před zálohováním vašeho SQL Server databázi, zajistěte:
- Máte příslušná oprávnění (oprávnění db_owner nebo BACKUP DATABASE).
- Dostatečné místo na disku pro záložní soubor
- SQL Server Nainstalováno Management Studio (SSMS)
- Síťové cesty dostupné při zálohování do síťových umístění
4.2 Podrobný postup: Úplná záloha pomocí SSMS
Postupujte podle těchto kroků a vytvořte úplnou zálohu svého SQL Server databáze pomocí SSMS.
4.2.1 Otevření SQL Server Management studio
- zahájit SQL Server Management studio
- Zadejte název svého serveru do Název serveru pole
- Vyberte metodu ověřování
- klikněte mítinky Connect
4.2.2 Výběr možností databáze a zálohování
- In Průzkumník objektů, rozbalte Databáze uzel
- Klikněte pravým tlačítkem myši na databázi, kterou chcete zálohovat
- vybrat Úkoly -> zálohovat
- v Zálohovat databázi okno, ověřte název databáze
- vybrat Plný jako Typ zálohy
4.2.3 Konfigurace cíle zálohy
- Pod Destinace, Klepněte na tlačítko Odstranit vymazat výchozí cestu (pokud je to potřeba)
- klikněte přidat určení nového umístění zálohy
- Zadejte cestu k souboru a jeho název pomocí BAK rozšíření
- klikněte OK pro potvrzení cíle
4.2.4 Advanced Backup Nastavení
- klikněte Možnosti médií v levém panelu
- Vyberte možnosti zálohování:
- Přepsat všechny existující zálohy – Nahrazuje stávající zálohy
- Přidat k existující zálohovací sadě – Přidává do existujícího záložního souboru
- klikněte Možnosti zálohování v levém panelu
- Konfigurace volitelných nastavení:
- Komprimovat zálohu – Snižuje velikost zálohovaného souboru
- Šifrování zálohy – Chrání citlivá data
- Po dokončení ověřte zálohu – Kontroluje integritu záloh
4.2.5 Spuštění zálohy
- Zkontrolujte všechna nastavení v Zálohovat databázi okno
- klikněte OK na starproces zálohování
- Počkejte na dokončení zálohování
- Po dokončení zálohy se zobrazí zpráva o úspěchu.
- klikněte OK zavřete potvrzovací dialog
4.3 Vytváření rozdílové zálohy pomocí SSMS
Chcete-li vytvořit rozdílovou zálohu, postupujte stejně jako u úplné zálohy, ale vyberte Rozdíl jako typ zálohy v kroku 4.2.2. Nezapomeňte, že rozdílové zálohy vyžadují jako výchozí bod předchozí úplnou zálohu.
4.4 Vytvoření zálohy transakčního protokolu pomocí SSMS
Zálohy transakčních protokolů jsou k dispozici pouze pro databáze používající modely úplné nebo hromadné obnovy.
- Klikněte pravým tlačítkem myši na databázi v Průzkumník objektů
- vybrat Úkoly -> zálohovat
- Vybrat Protokol transakcí jako typ zálohy
- Nakonfigurujte cíl a možnosti dle potřeby
- klikněte OK vytvořit zálohu protokolu
4.5 Vytváření zálohy pouze pro kopírování pomocí SSMS
Zálohy pouze pro kopírování nenarušují běžnou sekvenci záloh.
- Postupujte podle kroků pro vytvoření úplné zálohy
- v Možnosti zálohování strana
- Zkontrolovat Záloha pouze pro kopírování volba
- Dokončete proces zálohování normálně
5. Zálohování SQL Server Databáze s využitím T-SQL
5.1 Základní syntaxe zálohování databáze
Příkaz T-SQL BACKUP DATABASE poskytuje programové ovládání nad SQL Server zálohy.
BACKUP DATABASE database_name
TO DISK = 'backup_file_path'
WITH options;
5.2 Úplné zálohování příkazů T-SQL
5.2.1 Jednoduchý skript pro úplnou zálohu
Vytvořte základní úplnou zálohu s minimálními možnostmi:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
GO
5.2.2 Úplná záloha s možnostmi
Přidejte popisné informace a možnosti formátování:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH FORMAT,
INIT,
NAME = 'AdventureWorks-Full Database Backup',
DESCRIPTION = 'Full backup of AdventureWorks database',
STATS = 10
GO
Vysvětlení možností:
- FORMAT – Vytvoří novou zálohovací sadu
- INIT – Přepíše existující záložní soubor
- JMÉNO – Přiřadí název zálohovací sady
- POPIS – Přidává popisný text
- STATS – Zobrazuje pokrok každých 10 %
5.3 Příkazy T-SQL pro diferenciální zálohování
Rozdílové zálohy používají možnost ROZDÍLOVÝ:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH DIFFERENTIAL,
INIT,
NAME = 'AdventureWorks-Differential Backup',
STATS = 10
GO
5.4 Zálohování transakčních protokolů pomocí příkazů T-SQL
Pro zálohy transakčních protokolů použijte ZÁLOŽNÍ PROTOKOL:
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH INIT,
NAME = 'AdventureWorks-Transaction Log Backup',
STATS = 10
GO
5.5 Pokročilé možnosti zálohování T-SQL
5.5.1 Zálohování do více souborů
Rozdělte zálohu mezi více souborů pro rychlejší výkon:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_1.bak',
DISK = 'D:\Backups\AdventureWorks_2.bak',
DISK = 'E:\Backups\AdventureWorks_3.bak'
WITH FORMAT, INIT
GO
5.5.2 Zálohování s kompresí
Snižte velikost zálohy a šířku pásma sítě:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Compressed.bak'
WITH COMPRESSION,
INIT,
STATS = 10
GO
5.5.3 Zálohování se šifrováním
Chraňte citlivá data šifrováním:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
ENCRYPTION (
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupCertificate
),
STATS = 10
GO
5.5.4 Zálohování s ochranou heslem
Přidat ochranu heslem (zastaralé, použijte místo toho šifrování):
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH PASSWORD = 'StrongPassword123!',
INIT
GO
5.5.5 Zrcadlené zálohy
Vytvořte simultánní kopie do různých umístění:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
MIRROR TO DISK = 'D:\Backups\AdventureWorks_Mirror.bak'
WITH FORMAT, INIT
GO
5.6 Příklady a skripty zálohování T-SQL
Kompletní zálohovací skript s ošetřením chyb:
DECLARE @BackupPath NVARCHAR(500);
DECLARE @DatabaseName NVARCHAR(128) = 'AdventureWorks';
DECLARE @BackupDate NVARCHAR(20);
SET @BackupDate = CONVERT(NVARCHAR(20), GETDATE(), 112);
SET @BackupPath = 'C:\Backups\' + @DatabaseName + '_' + @BackupDate + '.bak';
BEGIN TRY
BACKUP DATABASE @DatabaseName
TO DISK = @BackupPath
WITH COMPRESSION,
INIT,
NAME = @DatabaseName + '-Full Backup',
STATS = 10;
PRINT 'Backup completed successfully: ' + @BackupPath;
END TRY
BEGIN CATCH
PRINT 'Backup failed: ' + ERROR_MESSAGE();
END CATCH
GO
6. Zálohování SQL Server Databáze pomocí PowerShellu
6.1 Rutiny zálohování PowerShellu
SQL Server Modul PowerShellu poskytuje cmdlety pro automatizaci zálohování:
- Zálohování SQLDatabase – Vytváří zálohy databáze
- Obnovit SQLDatabase – Obnovuje zálohy databáze
- Get-SqlDatabase – Načítá informace z databáze
Importujte SQL Server modul:
Import-Module SqlServer
6.2 Vytváření zálohovacích skriptů pomocí PowerShellu
Základní příkaz pro zálohování PowerShellu:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks.bak" `
-BackupAction Database `
-CompressionOption On
Příklad diferenciální zálohy:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks_Diff.bak" `
-BackupAction Database `
-Incremental
Záloha transakčního protokolu:
Backup-SqlDatabase -ServerInstance "localhost" `
-Database "AdventureWorks" `
-BackupFile "C:\Backups\AdventureWorks_Log.trn" `
-BackupAction Log
6.3 Automatizace záloh pomocí PowerShellu
Vytvořte automatický zálohovací skript pro více databází:
# Configuration
$ServerInstance = "localhost"
$BackupPath = "C:\Backups"
$Databases = @("AdventureWorks", "TestDB", "ProductionDB")
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
# Create backup directory if not exists
if (-not (Test-Path $BackupPath)) {
New-Item -ItemType Directory -Path $BackupPath
}
# Backup each database
foreach ($Database in $Databases) {
$BackupFile = Join-Path $BackupPath "$Database`_$Timestamp.bak"
try {
Backup-SqlDatabase -ServerInstance $ServerInstance `
-Database $Database `
-BackupFile $BackupFile `
-BackupAction Database `
-CompressionOption On
Write-Host "Successfully backed up $Database to $BackupFile" -ForegroundColor Green
}
catch {
Write-Host "Failed to backup $Database : $_" -ForegroundColor Red
}
}
7. Zálohování SQL Server Databáze pomocí příkazového řádku
SQL Server poskytuje nástroje příkazového řádku, které umožňují zálohování SQL Server databázi bez použití SSMS nebo grafických rozhraní. Tyto nástroje jsou nezbytné pro automatizaci, skriptování a scénáře vzdálené správy.
7.1 Použití záložní databáze SQLCMD
SQLCMD je moderní nástroj příkazového řádku pro SQL Server který nahradil OSQL. Poskytuje vylepšené funkce a je doporučeným nástrojem pro spouštění příkazů T-SQL z příkazového řádku.
7.1.1 Základní syntaxe SQLCMD
sqlcmd -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
- -S: Určuje SQL Server název instance
- -d: Určuje název databáze
- -Otázka: Provede dotaz a ukončí práci.
- -A: Používá ověřování systému Windows
- -U: Specifikuje SQL Server přihlašovací uživatelské jméno
- -P: Určuje heslo pro SQL Server přihlásit se
7.1.2 Vytvoření zálohy pomocí SQLCMD
Zálohovat SQL Server Pomocí SQLCMD postupujte takto:
- Otevřená Příkazový řádek or PowerShell
- Přejděte na SQL Server adresář nástrojů (obvykle se přidává do PATH během instalace)
- Spusťte příkaz SQLCMD pro zálohování databáze s příslušnými parametry.
- Ověřte, zda byl záložní soubor úspěšně vytvořen
Příklad příkazu pro úplnou zálohu s použitím ověřování systému Windows:
sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"
Příklad použití SQL Server Ověření:
sqlcmd -S localhost -U sa -P YourPassword -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"
Vytvoření rozdílové zálohy pomocí SQLCMD
sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, COMPRESSION, INIT"
Vytvoření zálohy transakčního protokolu pomocí SQLCMD
sqlcmd -S localhost -E -Q "BACKUP LOG AdventureWorks TO DISK='C:\Backups\AdventureWorks_Log.trn' WITH COMPRESSION, INIT"
7.1.3 Zálohování databáze vydavatele v SQL Server replikace
Při zálohování databází vydavatele v SQL Server Replikace, použijte možnost WITH REPLICATION k zachování metadat replikace a zajištění transakční konzistence.
-- Backup publisher database with replication support
BACKUP DATABASE PublisherDB
TO DISK = 'C:\Backup\PublisherDB_Full.bak'
WITH REPLICATION,
COMPRESSION,
CHECKSUM,
INIT,
STATS = 10;
GO
Pro více informací o SQL Server replikace, viz naše komplexní průvodce.
7.2 Použití záložní databáze OSQL
OSQL je starší nástroj příkazového řádku pro SQL ServerAčkoli Microsoft doporučuje používat SQLCMD, OSQL zůstává k dispozici pro zpětnou kompatibilitu se staršími skripty a systémy.
7.2.1 Základní syntaxe OSQL
Syntaxe OSQL je podobná SQLCMD:
osql -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
- -S: SQL Server název instance
- -d: Jméno databáze
- -Otázka: Provede dotaz a ukončí se
- -A: Používá důvěryhodné připojení (ověřování systému Windows)
- -U: Přihlašovací uživatelské jméno
- -P: Přihlašovací heslo
7.2.2 Vytvoření zálohy pomocí OSQL
Provedení operací zálohování databáze OSQL:
- Otevřená Příkazový řádek
- Ověřte, zda je OSQL ve vašem SQL Server instalace
- Spusťte příkaz zálohování OSQL
Příklad úplné zálohy:
osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH INIT"
Příklad rozdílové zálohy:
osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, INIT"
8. Třetí strana SQL Server Zálohovací nástroje
Zatímco SQL Server zahrnuje nativní funkce zálohování, nástroje třetích stran nabízejí vylepšené funkce, automatizaci a správu na podnikové úrovni pro organizace se složitými požadavky. Tato řešení poskytují pokročilou kompresi, centralizovanou správu a zefektivněné pracovní postupy pro zálohování. SQL Server databáze v různých prostředích.
8.1 Zálohování Veeam pro SQL Server
Veeam nabízí komplexní řešení ochrany dat navržená speciálně pro zálohování SQL Server databáze s minimálním dopadem na produkční systémy.
Klíčové vlastnosti:
- Zpracování s ohledem na aplikace pro SQL Server konzistence záloh
- Zálohování a správa transakčních protokolů
- Obnova v daném okamžiku s možnostmi podrobné obnovy
- Integrace s Veeam Backup & Replication pro jednotnou ochranu dat
- Automatické ověřování a validace záloh
- Podpora skupin dostupnosti Always On
- Úroveň virtuálního počítače a úroveň aplikace SQL Server možnosti zálohování
8.2 Záloha Barracuda pro SQL Server
Barracuda poskytuje cloudová zálohovací řešení se zjednodušenou správou pro Microsoft Windows. SQL Server operace se zálohováním databáze.
Klíčové vlastnosti:
- Automatizovaný SQL Server plánování zálohování
- Vestavěná cloudová replikace do úložiště Barracuda Cloud Storage
- Globální deduplikace a komprese
- Možnosti okamžité lokální obnovy
- Webová konzole pro správu
- Podpora úplných, rozdílových a transakčních záloh
- Ochrana před ransomwarem s neměnnými zálohami
8.3 Veritas NetBackup pro SQL Server
Veritas NetBackup je zálohovací platforma podnikové úrovně, která poskytuje komplexní ochranu pro SQL Server databáze napříč komplexními IT prostředími.
Klíčové vlastnosti:
- Správa záloh v podnikovém měřítku pro tisíce SQL Server instance
- Pokročilé algoritmy pro deduplikaci a kompresi
- Flexibilní zásady a plánování zálohování
- Podpora pro všechny SQL Server modely obnovy
- Integrace s páskovou knihovnourara cloudové úložiště
- Granulární obnova databází, tabulek a objektů
- Podpora více platforem (Windows, Linux) SQL Server)
- Automatizovaná správa životního cyklu záloh
8.4 Kompletní zálohování a obnova Commvault pro SQL Server
Commvault nabízí inteligentní správu dat s komplexním zálohováním SQL Server možnosti a pokročilé funkce automatizace.
Klíčové vlastnosti:
- Optimalizace zálohování a detekce anomálií řízená umělou inteligencí
- Jednotná platforma pro zálohování, obnovu a archivaci
- pokročilý SQL Server komprese záloh (až o 90 %)
- Automatizovaná orchestrace obnovy po havárii
- Live Sync pro téměř nulovou ochranu RPO
- Podpora SQL Server lokální, cloudová a hybridní nasazení
- IntelliSnap pro zálohy založené na snapshotech
- Komplexní funkce pro dodržování předpisů a elektronické zjišťování informací
8.5 Soudržnost DataProtect pro SQL Server
Cohesity poskytuje správu dat nové generace s hyperkonvergovanou infrastrukturou pro moderní SQL Server zálohovací operace.
Klíčové vlastnosti:
- Webová architektura pro zjednodušenou správu
- Možnosti okamžité hromadné obnovy pro SQL Server databáze
- Snímky konzistentní s aplikací
- Globální deduplikace napříč všemi zálohami
- Nativní integrace cloudu (AWS, Azure, Google Cloud)
- Vestavěné analytické a monitorovací dashboardy
- Možnosti klonování a testování databáze
- Ochrana před ransomwarem s neměnnými snapshoty
8.6 Red Gate SQL Backup Pro
Red Gate SQL Backup Pro je specializovaný nástroj zaměřený výhradně na optimalizaci SQL Server zálohovací a obnovovací operace s vynikající kompresí a výkonem.
Klíčové vlastnosti:
- Špičkové kompresní poměry v oboru (až 95 %)
- Odolnost sítě pro zálohování SQL Server přes nespolehlivá spojení
- Šifrování záloh s 256bitovým AES
- Ověření záložní kopie a kontrola integrity
- Podrobná historie záloh a reporting
- Integrace s SQL Server Management studio
- Podpora zálohování do síťových umístění a cloudového úložiště
- Paralelní zálohování a obnova pro rychlejší operace
9. Jak obnovit SQL Server Databáze
9.1 Pochopení procesu obnovy
Obnovení a SQL Server Databáze znovu vytvoří databázi ze záložních souborů. Proces obnovy přečte záložní soubor a rekonstruuje databázi do zálohovaného stavu.
Důležité úvahy:
- Obnovení přepíše existující databázi
- Uživatelé jsou během obnovy odpojeni
- Obnova musí dodržovat sekvenci záloh (úplná, poté rozdílová a nakonec protokoly)
- Databáze není během operace obnovení k dispozici.
9.2 Obnovení úplné zálohy pomocí SSMS
Chcete-li obnovit úplnou zálohu databáze, postupujte podle těchto kroků.
9.2.1 Postup obnovy krok za krokem
- Otevřená SQL Server Management studio a připojte se k vašemu serveru
- In Průzkumník objektů, klikněte pravým tlačítkem myši Databáze
- vybrat Obnovit databázi
- v Zdroj vyberte část Přístroj
- Klepněte na tlačítko ... tlačítko pro procházení záložních souborů
- klikněte přidat a přejděte do souboru .bak
- Vyberte záložní soubor a klikněte na OK
- v Destinace zadejte název databáze
- Zkontrolujte zálohy, které chcete obnovit
- klikněte OK na start obnovení
9.2.2 Možnosti a nastavení obnovení
klikněte možnosti v levém panelu pro konfiguraci:
- Přepsat existující databázi (s náhradou) – Umožňuje obnovu přes existující databázi
- Zachovat stavy replikace (WITH KEEP_REPLICATION) – Udržujte SQL Server replikace stát
- Omezit přístup k obnovené databázi (WITH RESTRICTED_USER) – Limity post-obnovení přístupu
- Stav zotavení – Vyberte si mezi možností OBNOVENÍ S REKONSTRUKCÍ nebo BEZ REKONSTRUKCE
9.3 Obnovení rozdílové zálohy
Rozdílová obnova vyžaduje úplné i rozdílové zálohy:
- Nejprve obnovte úplnou zálohu pomocí NORECOVERY volba
- Pak obnovte rozdílovou zálohu pomocí OBNOVA volba
Příklad T-SQL:
-- Restore full backup (NORECOVERY to allow differential)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
-- Restore differential backup (RECOVERY to complete)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH RECOVERY;
GO
9.4 Obnovení pomocí záloh protokolu transakcí
Pro obnovení v určitém časovém bodě provádějte obnovu v tomto pořadí:
- Obnovte plnou zálohu pomocí NORECOVERY
- Obnovení rozdílové zálohy pomocí NORECOVERY (pokud je k dispozici)
- Obnovení záloh protokolu transakcí v pořadí pomocí NORECOVERY
- Obnovení finální zálohy protokolu pomocí funkce RECOVERY
-- Restore full backup
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
-- Restore first log backup
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;
-- Restore second log backup with recovery
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log2.trn'
WITH RECOVERY;
GO
9.5 Obnova k určitému bodu v čase
Obnovte databázi do určitého časového bodu pomocí volby STOPAT:
-- Restore to specific time: January 15, 2025 at 2:30 PM
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH RECOVERY, STOPAT = '2025-01-15 14:30:00';
GO
9.6 Obnovení tabulky
SQL Server nepodporuje přímou obnovu na úrovni tabulky ze zálohovaných souborů. Přesto existují určitá řešení.
9.6.1 Metoda 1: Snímky databáze (nejlepší pro prevenci)
Snímky databáze poskytují nejrychlejší způsob obnovení dat tabulky, pokud byly vytvořeny před vznikem problému. Snímek je statický pohled na databázi v určitém časovém okamžiku, který je pouze pro čtení.
Vytvoření snímku databáze:
-- Create snapshot before making changes
CREATE DATABASE ProductionDB_Snapshot_20250107
ON
( NAME = ProductionDB_Data,
FILENAME = 'C:\Snapshots\ProductionDB_Snapshot.ss' )
AS SNAPSHOT OF ProductionDB;
GO
Obnovení dat tabulky ze snímku:
USE ProductionDB;
GO
-- Replace entire table content
BEGIN TRANSACTION;
-- Disable constraints temporarily
ALTER TABLE dbo.Orders NOCHECK CONSTRAINT ALL;
-- Clear current data
TRUNCATE TABLE dbo.Orders;
-- Restore from snapshot
INSERT INTO dbo.Orders
SELECT * FROM ProductionDB_Snapshot_20250107.dbo.Orders;
-- Re-enable constraints
ALTER TABLE dbo.Orders CHECK CONSTRAINT ALL;
COMMIT TRANSACTION;
GO
Požadavky na verzi: Snímky databáze jsou k dispozici v SQL Server Enterprise Edition (všechny verze) a Standard Editiontarting s SQL Server 2016 SP1.
9.6.2 Metoda 2: Obnovení tempararDatabáze y (Most Společný)
Tato metoda funguje, když potřebujete obnovit data tabulky po výskytu problému a neexistuje žádný snímek:
- Obnovit zálohu do temparardatabáze y
- Zkopírujte data tabulky z temparardatabáze y do aktuální databáze
9.7 Obnovení stránky
Obnova stránek obnovuje jednotlivé poškozené stránky bez nutnosti obnovy celé databáze, čímž minimalizuje prostoje. tarzískávání pouze poškozených stránek. Tato funkce je k dispozici pouze v modelech úplné nebo hromadné obnovy a vyžaduje nepřerušený řetězec záloh protokolu transakcí od zálohy stránky až po aktuální soubor protokolu.
Chcete-li provést obnovu stránky, nejprve identifikujte poškozené stránky, vytvořte zálohu protokolu transakcí, obnovte konkrétní stránky a poté použijte všechny protokoly transakcí:
-- Identify damaged pages
SELECT * FROM msdb.dbo.suspect_pages
WHERE database_id = DB_ID('AdventureWorks');
-- Take tail-log backup
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH NORECOVERY;
-- Restore damaged pages
RESTORE DATABASE AdventureWorks
PAGE = '1:123, 1:456'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;
-- Apply transaction logs
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH RECOVERY;
GO
Poznámka: Obnovení stránek není k dispozici v rámci modelu jednoduché obnovy. Stránky nelze obnovit ze systémových tabulek ani z metadat primárních skupin souborů.
9.8 Postupná obnova
Částečná obnova obnovuje databázi po etapách na úrovni souborové skupiny, tj.tarování s primární skupinou souborů. Tím se kritická data okamžitě přepnou do online režimu, zatímco méně kritická data se obnovují na pozadí. V modelu jednoduché obnovy musí být všechny skupiny souborů s povolením ke čtení i zápisu obnoveny společně s primární skupinou souborů; samostatně lze obnovit pouze skupiny souborů s povolením ke čtení. V modelech úplné nebo hromadné obnovy lze každou skupinu souborů přepnout do online režimu nezávisle po použití transakčních protokolů.
| Model obnovy | Chování postupného obnovení |
|---|---|
| prostý | Primární a všechny skupiny souborů pro čtení i zápis byly obnoveny společně. Skupiny souborů pouze pro čtení byly obnoveny samostatně. |
| Úplné/hromadné protokolování | Každá skupina souborů byla obnovena nezávisle na úrovni skupiny souborů. |
Příklad modelu úplné obnovy – nejprve obnovte primární skupinu souborů, aby se databáze přepnula do režimu online, a poté obnovte sekundární skupiny souborů, přičemž databáze zůstává funkční:
-- Stage 1: Restore primary filegroup (database comes online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO
-- Stage 2: Restore secondary filegroup (database stays online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'HistoricalData'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO
Příklad jednoduchého modelu obnovy:
-- Restore primary with all read-write filegroups
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, RECOVERY;
-- Restore read-only filegroup separately
RESTORE DATABASE AdventureWorks
FILEGROUP = 'ReadOnlyArchive'
FROM DISK = 'C:\Backups\AdventureWorks_ReadOnly.bak'
WITH RECOVERY;
GO
9.9 Obnovení pomocí příkazů T-SQL
Kompletní skript pro obnovení s přemístěním souboru:
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'D:\Data\AdventureWorks.mdf',
MOVE 'AdventureWorks_Log' TO 'E:\Logs\AdventureWorks.ldf',
REPLACE,
STATS = 10;
GO
9.10 Ověření integrity zálohy před obnovením
Zkontrolujte platnost zálohy bez obnovení:
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak';
GO
Tento příkaz ověří, zda je zálohovaná sada úplná a čitelná, aniž by bylo nutné databázi skutečně obnovit.
10. SQL Server Nejlepší postupy zálohování
10.1 Vypracování strategie zálohování
10.1.1 Posouzení obchodních požadavků
Před implementací záloh vyhodnoťte:
- Kritičnost dat: Jak důležité jsou tyto údaje pro provoz?
- Změna frekvence: Jak často se data mění?
- Velikost databáze: Jak velká je databáze?
- Dostupné zdroje: Jaké úložiště a šířka pásma jsou k dispozici?
- Požadavky na dodržování předpisů: Jaké předpisy musíte dodržovat?
10.1.2 Definování RTO a RPO
Cílový čas zotavení (RTO): Maximální přijatelná doba prostoje. Určuje, jak rychle je potřeba obnovit provoz.
Cíl bodu obnovy (RPO): Maximální přijatelná ztráta dat. Určuje frekvenci zálohování.
| Požadavek RTO/RPO | Doporučená strategie zálohování |
|---|---|
| RPO: Hodiny, RTO: Hodiny | Denní plný + transakční protokol každé 1-2 hodiny |
| RPO: Minuty, RTO: Hodiny | Denní plné zálohy + zálohy protokolů každých 15–30 minut |
| RPO: Téměř nula, RTO: Minuty | Vždy dostupné skupiny dostupnosti + časté zálohy protokolů |
| RPO: Dny, RTO: Dny | Týdenní plný + denní rozdíl |
10.2 Vytvoření plánu zálohování
10.2.1 Doporučení ohledně frekvence
Typický plán zálohování produkčních databází:
- Úplné zálohy: Týdně (v neděli večer během nízké aktivity)
- Diferenciální zálohy: Denně (každou noc)
- Zálohy transakčních protokolů: Každých 15–30 minut během pracovní doby
- Zálohy pouze pro kopírování: Dle potřeby pro testování nebo vývoj
10.2.2 Vyvážení výkonu a ochrany
Při plánování zvažte tyto faktory:
- Mimo špičku: Spouštět úplné zálohy během období s nízkou aktivitou
- Dopad na zdroje: Komprese snižuje I/O, ale zvyšuje využití CPU
- Šířka pásma sítě: Naplánujte zálohování sítě při nízkém provozu
- Zálohovací okna: Zajistěte dokončení záloh před začátkem pracovní doby
10.3 Nejlepší postupy pro ukládání záloh
10.3.1 Skladování na místě vs. skladování mimo místo
Zálohy na místě:
- Rychlejší zálohování a obnovení
- Dolní cost pro vysokofrekvenční přístup
- Zranitelné vůči lokálním katastrofám
- Nejlepší pro scénáře rychlé obnovy
Zálohy mimo pracoviště:
- Ochrana před katastrofami specifickými pro dané místo
- Dodržování požadavků na geografickou redundanci
- Pomalejší doby obnovy
- Nezbytné pro zotavení z havárie
10.3.2 Možnosti zálohování do cloudu
Výhody cloudového úložiště:
- Azure Blob Storage: Domácí SQL Server integrace, cost-účinné pro nepravidelný přístup
- Amazon S3: Vysoce odolné a flexibilní úložné patra
- Google Cloud Storage: Konkurenceschopné ceny, globální dostupnost
10.3.3 Zásady uchovávání záloh
Zásady uchovávání vzorků:
- Uchovávejte denní zálohy po dobu 7 dnů
- Uchovávejte týdenní zálohy po dobu 4 týdnů
- Uchovávejte měsíční zálohy po dobu 12 měsíců
- Uchovávejte roční zálohy po dobu 7 let (dodržování předpisů)
10.4 Komprese a šifrování záloh
Výhody komprese:
- Snižuje velikost zálohovaného souboru o 50–70 %
- Zkracuje dobu zálohování
- Snižuje úložný prostor costs
- Snižuje šířku pásma sítě pro vzdálené zálohování
Nejlepší postupy šifrování:
- Vždy šifrujte zálohy obsahující citlivá data
- Používejte 256bitové šifrování AES
- Bezpečná správa certifikátů nebo klíčů
- Zdokumentujte šifrovací klíče a uložte je odděleně
10.5 Testování a ověřování záloh
10.5.1 Pravidelné testování obnovy
Postupy testování obnovy čtvrtletně nebo měsíčně:
- Obnovení záloh do testovacího prostředí
- Ověřte integritu a úplnost dat
- Zkontrolujte funkčnost aplikace
- Čas obnovení dokumentu (ověření RTO)
- Identifikujte a vyřešte jakékoli problémy
10.5.2 Použití funkce RESTORE VERIFYONLY
Automatizujte ověřování záloh:
-- Verify backup integrity
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO
Spusťte ověření ihned po dokončení zálohování nebo jako součást plánované údržby.
10.6 Automatizace a monitorování zálohování
10.6.1 SQL Server Práce agentů
Vytvořte automatizované úlohy zálohování:
- Rozšířit SQL Server Činidlo
v SSMS
- Klepněte pravým tlačítkem myši Zaměstnání a zvolte Nová práce
- Pojmenujte úlohu (např. „Denní úplná záloha“)
- Přidat Krok s příkazy pro zálohování T-SQL
- Vytvořit Naplánovat pro dobu provedení
- Konfigurace Oznámení pro úspěch/neúspěch
10.6.2 Plány údržby
SQL Server Plány údržby poskytují vizuální rozhraní pro automatizaci zálohování:
- přejděte na management -> Plány údržby
- Klepněte pravým tlačítkem myši a vyberte Průvodce plánem údržby
- Vyberte úlohy zálohování, které chcete automatizovat
- Konfigurace plánu a možností zálohování
- Nastavení reportingu a protokolování
10.6.3 Upozornění a oznámení o zálohování
Konfigurace e-mailových oznámení:
- Nastavení databázové pošty v SQL Server
- Vytvořit upozornění na selhání zálohování
- Sledování historie úloh zálohování
- Odesílání souhrnných zpráv administrátorům
10.7 Dokumentace a plánování obnovy po havárii
Uchovávejte komplexní dokumentaci:
- Plán zálohování: Kdy a co se zálohuje
- Zásady uchovávání: Jak dlouho se zálohy uchovávají
- Místa skladování: Kde se ukládají zálohy
- Postupy obnovy: Podrobné pokyny k obnově
- Kontaktní informace: Klíčoví pracovníci a dodavatelé
- Výsledky testu zotavení: Zdokumentované výsledky testů
11. Moderní SQL Server Záložní scénáře
11.1 Zálohování velmi rozsáhlých databází (VLDB)
11.1.1 Strategie pro soubory a skupiny souborů
Pro databáze přesahující několik stovek gigabajtů:
- Oddělte data pouze pro čtení a data pro čtení a zápis do různých skupin souborů
- Nepravidelně zálohujte skupiny souborů určené jen pro čtení
- Zaměřte se na časté zálohování aktivních skupin souborů
- Používejte zálohy na úrovni souborů pro detailní kontrolu
Příklad zálohy souboru:
-- Back up specific file
BACKUP DATABASE LargeDB
FILE = 'LargeDB_Data1'
TO DISK = 'C:\Backups\LargeDB_File1.bak'
WITH COMPRESSION;
GO
11.1.2 Optimalizace výkonu zálohování
Zlepšení výkonu zálohování VLDB:
- Pruhované zálohy: Zápis do více souborů současně
- Komprese: Snižte požadavky na I/O a úložiště
- Více záložních zařízení: Paralelizace zálohovacích operací
- Rychlé uložení: Použití SSD disků pro zálohování
- Počet vyrovnávacích pamětí: Možnost Zvýšit BUFFERCOUNT
- Maximální velikost převodu: Optimalizujte nastavení MAXTRANSFERSIZE
-- Optimized VLDB backup
BACKUP DATABASE LargeDB
TO DISK = 'C:\Backups\LargeDB_1.bak',
DISK = 'D:\Backups\LargeDB_2.bak',
DISK = 'E:\Backups\LargeDB_3.bak'
WITH COMPRESSION,
BUFFERCOUNT = 100,
MAXTRANSFERSIZE = 4194304;
GO
11.2 Zálohování ve skupinách dostupnosti Always On
Skupiny dostupnosti Always On distribuují zátěž záloh mezi repliky:
- Konfigurace předvoleb zálohování (primární, sekundární nebo libovolná replika)
- Přesunutí záloh do sekundárních replik pro snížení primární zátěže
- Používejte zálohy typu COPY_ONLY na sekundárních replikách
- Nastavení priority zálohování monitoru
-- Check backup preferences
SELECT
ag.name AS AvailabilityGroup,
ar.replica_server_name,
ar.backup_priority
FROM sys.availability_replicas ar
INNER JOIN sys.availability_groups ag ON ar.group_id = ag.group_id;
GO
11.3 Zálohování pro zrcadlení databáze
V scénářích zrcadlení databáze:
- Pravidelně zálohujte hlavní databázi
- Zálohy transakčních protokolů jsou nezbytné pro zrcadlení
- Zrcadlová databáze je ve stavu OBNOVENÍ (nelze ji zálohovat přímo)
- Zvažte zálohování zrcadla po failoveru
11.4 Zálohování do úložiště Azure Blob Storage
SQL Server lze zálohovat přímo do úložiště Azure Blob Storage:
- Vytvořit účet úložiště Azure
- Vytvořit SQL Server přihlašovací údaje pro ověřování Azure
- Použijte syntaxi URL pro cíl zálohy
-- Create credential for Azure
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your_SAS_token';
GO
-- Backup to Azure
BACKUP DATABASE AdventureWorks
TO URL = 'https://mystorageaccount.blob.core.windows.net/backups/AdventureWorks.bak'
WITH COMPRESSION,
STATS = 10;
GO
11.5 Zálohování na URL
Výhody zálohování na URL:
- Neomezená kapacita cloudového úložiště
- Geografická redundance je automaticky řešena
- Cenový model s průběžnými platbami
- Není potřeba žádné místo na místním disku
- Podporuje až 64 URL adres na zálohu (striping)
11.6 Prokládané zálohy pro zvýšení výkonu
Prokládané zálohy rozdělují data do více souborů pro rychlejší I/O:
-- Striped backup to 4 files
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW_Stripe1.bak',
DISK = 'D:\Backups\AW_Stripe2.bak',
DISK = 'E:\Backups\AW_Stripe3.bak',
DISK = 'F:\Backups\AW_Stripe4.bak'
WITH COMPRESSION, FORMAT;
GO
Poznámka: Pro obnovení jsou vyžadovány všechny soubory Stripe. Chybějící jakýkoli soubor znemožní zálohu.
12. Řešení problémů SQL Server Problémy se zálohováním
12.1 Běžné chyby zálohování a jejich řešení
Chyba: „Chyba operačního systému 5: Přístup odepřen“
- Způsobit: SQL Server servisní účet postrádá oprávnění
- Řešení: Udělit oprávnění k zápisu uživateli SQL Server servisní účet ve složce záloh
Chyba: „Nelze otevřít zálohovací zařízení… Chyba zařízení nebo zařízení je offline“
- Způsobit: Neplatná cesta nebo nedostupná síťová sdílená položka
- Řešení: Ověřte existenci cesty, zkontrolujte síťové připojení a zajistěte dostatek místa na disku.
Chyba: „Na disku není dostatek místa“
- Způsobit: Nedostatek místa na disku pro zálohování
- Řešení: Uvolněte místo na disku, použijte kompresi, zálohujte na jiné místo
Chyba: „Databáze se používá. Databázi používají jiní uživatelé.“
- Způsobit: Aktivní připojení během obnovy
- Řešení: Použijte možnost WITH REPLACE nebo nejprve odpojte uživatele
12.2 Problémy s výkonem zálohování
Diagnostika pomalých záloh:
- Zkontrolujte výkon diskového I/O pomocí Performance Monitor
- Sledování průběhu zálohování pomocí možnosti STATS
- přezkoumání SQL Server protokol chyb pro úzká hrdla
- Zvažte kompresi pro snížení I/O
- Používejte prokládané zálohy na více discích
Dotaz pro sledování průběhu zálohování:
SELECT
session_id,
command,
percent_complete,
CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
+ CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
+ CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
+ CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
+ CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time
FROM sys.dm_exec_requests
WHERE command LIKE 'BACKUP%';
GO
12.3 Problémy s prostorem a úložištěm
Předcházejte problémům s úložištěm:
- Implementujte zásady uchovávání informací: Automaticky smazat staré zálohy
- Použijte kompresi: Snižte velikost zálohy o 50–70 %
- Archivovat do levnějšího úložiště: Přesunutí starých záloh do archivního úložiště
- Monitorování místa na disku: Nastavení upozornění na nedostatek místa na disku
- Odhadovaná velikost zálohy: Vypočítejte očekávanou velikost před zálohováním
Odhadovaná velikost zálohy:
-- Estimate full backup size
EXEC sp_spaceused;
GO
12.4 Problémy s oprávněními a přístupem
Požadovaná oprávnění pro zálohy:
- ZÁLOŽNÍ DATABÁZE povolení
- db_backupoperator členství v roli
- sysadmin role serveru (pro všechny zálohovací operace)
Udělit oprávnění k zálohování:
-- Grant backup permission to user
GRANT BACKUP DATABASE TO [BackupUser];
GRANT BACKUP LOG TO [BackupUser];
GO
-- Add user to backup operator role
ALTER ROLE db_backupoperator ADD MEMBER [BackupUser];
GO
12.5 Poškozené záložní soubory
Detekce a zpracování poškozených záloh:
Ověřte integritu zálohy:
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO
Povolit kontrolní součet pro budoucí zálohy:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM, INIT;
GO
Preventivní strategie:
- Při zálohování vždy používat možnost CHECKSUM
- Ověřte zálohy ihned po jejich vytvoření
- Pravidelně testuje obnovení
- Ukládejte zálohy na spolehlivé úložiště
- Udržujte více záložních kopií
12.6 Obnova dat z poškozených záloh
Pokud jsou vaše záložní soubory poškozené a přesto z nich chcete obnovit data, můžete použít nástroje třetích stran, jako například DataNumen SQL Recovery, jak je uvedeno níže:
- Start DataNumen SQL Recovery.
- Vyberte poškozený záložní soubor jako zdrojový soubor změnou filtru na „Všechny soubory (*.*)“:
- V případě potřeby nastavte výstupní soubor .MDF.
- Klikněte na „Star„Obnova“ a postupujte podle pokynů k obnovení databáze.
- Po dokončení procesu obnovy se v SQL Server který obsahuje všechna obnovená data.
13. SQL Server Zabezpečení záloh
13.1 Zabezpečení záložních souborů
Chraňte záložní soubory před neoprávněným přístupem:
- Oprávnění souborového systému: Omezit přístup pouze na oprávněné administrátory
- Zabezpečení sítě: Používejte zabezpečené protokoly pro síťové zálohy
- Fyzická bezpečnost: Uchovávejte záložní média na bezpečných místech
- Protokolování přístupu: Audit přístupu k záložním souborům
13.2 Možnosti šifrování
SQL Server podporuje transparentní šifrování záloh:
Vytvořte certifikát pro šifrování:
-- Create master key
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd!';
GO
-- Create certificate
CREATE CERTIFICATE BackupCertificate
WITH SUBJECT = 'Database Backup Certificate',
EXPIRY_DATE = '2026-12-31';
GO
Šifrovaná záloha:
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
ENCRYPTION (
ALGORITHM = AES_256,
SERVER CERTIFICATE = BackupCertificate
);
GO
Důležité: Zálohujte certifikát a soukromý klíč odděleně. Bez nich nelze šifrované zálohy obnovit.
-- Backup certificate
BACKUP CERTIFICATE BackupCertificate
TO FILE = 'C:\Certificates\BackupCertificate.cer'
WITH PRIVATE KEY (
FILE = 'C:\Certificates\BackupCertificate.key',
ENCRYPTION BY PASSWORD = 'C3rt!f!c@t3P@ss'
);
GO
13.3 Řízení přístupu a oprávnění
Implementujte princip nejnižších privilegií:
- Udělte oprávnění k zálohování pouze nezbytným účtům
- Používejte oddělené účty pro zálohování a obnovení
- Nepoužívejte účet SA pro zálohování
- Pravidelně auditujte oprávnění k zálohování
- Odeberte oprávnění, když již nejsou potřeba
13.4 Úvahy o shodě
Řešení regulačních požadavků:
- GDPR: Šifrování záloh obsahujících osobní údaje, implementace zásad uchovávání dat
- HIPAA: Šifrování chráněných zdravotních informací v zálohách, kontrola přístupu, uchovávání auditních záznamů
- PCI DSS: Šifrování záloh dat držitelů karet, bezpečné úložiště záloh
- SOX: Zachování integrity záloh, zásady uchovávání dokumentů
14. Monitorování a údržba zálohovacích operací
14.1 Sledování historie záloh
SQL Server ukládá historii záloh do databáze msdb:
-- View recent backup history
SELECT
bks.database_name,
bks.backup_start_date,
bks.backup_finish_date,
CASE bks.type
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Log'
ELSE 'Other'
END AS backup_type,
bks.backup_size / 1024 / 1024 AS backup_size_mb,
bkmf.physical_device_name
FROM msdb.dbo.backupset bks
INNER JOIN msdb.dbo.backupmediafamily bkmf ON bks.media_set_id = bkmf.media_set_id
WHERE bks.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY bks.backup_start_date DESC;
GO
Najít databáze bez nedávných záloh:
SELECT
d.name AS database_name,
MAX(bs.backup_finish_date) AS last_backup_date,
DATEDIFF(DAY, MAX(bs.backup_finish_date), GETDATE()) AS days_since_last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs ON d.name = bs.database_name
WHERE d.database_id > 4 -- Exclude system databases
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE())
OR MAX(bs.backup_finish_date) IS NULL
ORDER BY last_backup_date;
GO
14.2 Používání SQL Server zprávy
SQL Server Management Studio obsahuje vestavěné záložní sestavy:
- Klikněte pravým tlačítkem myši na databázi v Průzkumníku objektů
- vybrat zprávy -> Standardní zprávy
- Vyberte si z dostupných reportů:
- Události zálohování a obnovy
- Všechny zálohy
- Stav odeslání protokolu transakcí
14.3 Monitorovací nástroje třetích stran
Řešení pro komerční monitorování:
- SQL Sentry: Komplexní monitorování a upozorňování
- Monitor SQL v Redgate: Monitorování a diagnostika v reálném časeostics
- Analyzátor výkonu databáze SolarWinds: Monitorování výkonu a zálohování
- Diagnostika SQL v IdeřeostSprávce IC: Ověřování záloh a upozorňování
14.4 Kontroly stavu záloh
Vytvořte postup kontroly stavu:
-- Backup health check procedure
CREATE PROCEDURE sp_BackupHealthCheck
AS
BEGIN
-- Check for databases without recent full backup
SELECT
'Missing Recent Full Backup' AS issue,
d.name AS database_name,
ISNULL(CAST(MAX(bs.backup_finish_date) AS VARCHAR), 'Never') AS last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs
ON d.name = bs.database_name AND bs.type = 'D'
WHERE d.database_id > 4
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE()) OR MAX(bs.backup_finish_date) IS NULL; -- Check for failed backup jobs SELECT 'Failed Backup Job' AS issue, j.name AS job_name, jh.run_date, jh.run_time, jh.message FROM msdb.dbo.sysjobs j INNER JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id WHERE jh.run_status = 0 -- Failed AND jh.step_id = 0 AND jh.run_date >= CONVERT(INT, CONVERT(VARCHAR, GETDATE()-7, 112))
AND j.name LIKE '%backup%';
END
GO
15. SQL Server Nejčastější dotazy k zálohování
15.1 Jak často bych měl zálohovat SQL Server?
Frekvence zálohování závisí na vašem cíli bodu obnovy (RPO):
- Kritické produkční databáze: Plný týdenní záznam, rozdílový denní záznam, záznam každých 15–30 minut
- Standardní produkční databáze: Plný týdenní záznam, rozdílový denní záznam, protokolování každé 1–2 hodiny
- Vývojové databáze: Plná denní nebo týdenní
- Databáze pouze pro čtení: Úplné po každé změně dat
15.2 Jaký je rozdíl mezi plnou a rozdílovou zálohou?
Úplná záloha zkopíruje celou databázi, zatímco rozdílová záloha zachycuje pouze změny od poslední úplné zálohy. Rozdílové zálohy jsou menší a rychlejší, ale pro obnovení vyžadují základní úplnou zálohu.
15.3 Mohu zálohovat SQL Server Zatímco to běží?
Ano, SQL Server podporuje online zálohování. Uživatelé mohou během zálohování pokračovat v práci. SQL Server používá svůj transakční protokol k udržení konzistence a zajišťuje platnost záloh i při souběžných úpravách.
15.4 Jak dlouho trvá SQL Server Záložní záběr?
Doba trvání zálohování se liší v závislosti na:
- Velikost databáze: Větší databáze trvají déle
- Typ zálohy: Úplné zálohy trvají nejdéle
- Komprese: Může zvýšit čas CPU, ale zkrátit celkovou dobu trvání
- Rychlost ukládání: SSD disky výrazně rychlejší než HDD disky
- Zatížení serveru: Vyšší aktivita zpomaluje zálohování
Typické rozsahy: Úplná záloha databáze o velikosti 10 GB s kompresí na moderním hardwaru může trvat 5–15 minut.
15.5 Kde mám skladovat SQL Server zálohy?
Nejlepší postup: Dodržujte pravidlo 3-2-1:
- 3 kopie vašich údajů
- 2 různé typy úložišť (např. disk a páska/cloud)
- 1 kopírovat mimo web
Doporučená místa:
- Lokální disk pro rychlé obnovení
- Síťové úložiště pro centralizovanou správu
- Cloudové úložiště (Azure, AWS) pro zotavení po havárii
15.6 Co je přípona souboru .bak?
Přípona .bak je výchozí přípona souboru pro SQL Server záložní soubory. Je to konvence, nikoli požadavek – SQL Server Zálohy fungují s jakoukoli příponou souboru. Použití přípony .bak však usnadňuje identifikaci záložních souborů a je standardní praxí v oboru.
15.7 Jak zálohovat SQL Server na síťový disk?
Zálohování na síťový disk:
- Zajistit SQL Server servisní účet má oprávnění k zápisu do sdílené síťové složky.
- Použijte cestu UNC v příkazu pro zálohování:
\\ServerName\ShareName\BackupFile.bak - Před naplánováním automatických záloh otestujte připojení
BACKUP DATABASE AdventureWorks
TO DISK = '\\BackupServer\SQLBackups\AdventureWorks.bak'
WITH COMPRESSION, INIT;
GO
15.8 Mohu komprimovat SQL Server zálohy?
Ano, SQL Server podporuje nativní kompresi záloh (Enterprise Edition nebo Standard Edition)tarting SQL Server 2016 SP1). Komprese obvykle snižuje velikost zálohy o 50–70 % a často zkracuje dobu zálohování snížením I/O operací, i když zvyšuje využití CPU.
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH COMPRESSION;
GO
16. závěr
16.1 klíčové poznatky
Efektivní SQL Server Strategie zálohování chrání vaše data a zajišťují kontinuitu podnikání. Nezapomeňte na tyto základní body:
- Pochopte typy záloh: Vyberte vhodné typy záloh (úplné, rozdílové, transakční protokol) na základě vašich požadavků na obnovu
- Vyberte vhodný model obnovy: Úplná obnova kritických dat, jednoduchá pro vývojové databáze
- Implementace plánu zálohování: Pravidelné úplné zálohy v kombinaci s rozdílovými zálohami a zálohami protokolů minimalizují ztrátu dat.
- Postupy obnovy testů: Zálohy jsou cenné pouze tehdy, pokud je lze úspěšně obnovit.
- Automatizujte a monitorujte: Použijte SQL Server Agent, plány údržby a monitorovací nástroje
- Bezpečné zálohy: Šifrujte citlivá data a ovládejte přístup k záložním souborům
- Ukládání kopií mimo pracoviště: Chraňte se před katastrofami na úrovni celého webu pomocí cloudového nebo vzdáleného úložiště
- Vše zdokumentujte: Udržujte jasnou dokumentaci postupů zálohování a obnovy
16.2 Další kroky a zdroje
Chcete-li zlepšit své SQL Server implementace zálohování:
- Porovnejte svou aktuální strategii zálohování s osvědčenými postupy
- Vypočítejte si požadavky na RTO a RPO
- Testování postupů obnovy na neprodukčních systémech
- Pravidelně kontrolujte a aktualizujte plány zálohování
- Implementujte automatizované monitorování a upozorňování
- Školení členů týmu v postupech obnovy
Dodatečné zdroje:
- Microsoft SQL Server Dokumentace: Oficiální pokyny pro zálohování a obnovu
- SQL Server Fóra komunity zálohování: Sdílejte zkušenosti a řešení
- Profesní certifikace: Certifikace společnosti Microsoft: Azure Database Administrator Associate
16.3 Doporučené nástroje a řešení
Na základě různých scénářů:
Malý obchod:
- Domácí SQL Server zálohování s plánovaným SQL Server Pracovní místa agentů
- SQLBackupAndFTP pro cloudovou integraci
- Azure Backup pro SQL Server
Střední podniky:
- SQL Server Plány údržby
- Nástroje třetích stran, jako je Redgate SQL Backup Pro
- Zálohování Veeam pro SQL Server
Velké podniky:
- Quest LiteSpeed pro maximální kompresi
- Commvault nebo Veritas NetBackup pro správu záloh v podniku
- Skupiny dostupnosti Always On pro vysoká dostupnost
SQL Server Zálohování je základem správy databází. Správným plánováním, implementací a testováním můžete zajistit, aby vaše data zůstala chráněna a obnovitelná v případě potřeby.tarimplementace těchto osvědčených postupů dnes k zajištění vaší SQL Server databází.
O autorovi
Yuan Sheng je seniorní správce databází (DBA) s více než 10 lety zkušeností v SQL Server prostředí a správu podnikových databází. Úspěšně vyřešil stovky scénářů obnovy databází ve finančních službách, zdravotnictví a výrobních organizacích.
Yuan se specializuje na SQL Server obnova databází, řešení pro vysokou dostupnost a optimalizace výkonu. Jeho rozsáhlé praktické zkušenosti zahrnují správu databází o velikosti více terabajtů, implementaci skupin dostupnosti Always On a vývoj automatizovaných strategií zálohování a obnovy pro kritické podnikové systémy.
Díky svým technickým znalostem a praktickému přístupu se Yuan zaměřuje na vytváření komplexních průvodců, které pomáhají správcům databází a IT profesionálům řešit složité SQL Server efektivně zvládá výzvy. Udržuje si přehled o nejnovějších SQL Server vydání a vyvíjející se databázové technologie společnosti Microsoft a pravidelně testuje scénáře obnovy, aby zajistil, že jeho doporučení odrážejí osvědčené postupy z reálného světa.
Máte otázky ohledně SQL Server potřebujete další pokyny k odstraňování problémů s databází? Yuan vítá zpětnou vazbu a návrhy pro vylepšení těchto technických zdrojů.











