Snímky databáze (SQL Server)
platí pro:SQL Server
Snímek databáze je statické zobrazení databáze na SQL Serveru, které je pouze pro čtení (zdrojová databáze). Konakčně je konzistentní se zdrojovou databází při vytváření snímku a vždy se nachází ve stejné instanci serveru jako její zdrojová databáze. Snímky databáze sice poskytují zobrazení dat jen pro čtení ve stejném stavu jako při vytvoření snímku, ale velikost souboru snímku roste, protože se ve zdrojové databázi provádějí změny.
I když snímky databáze můžou být užitečné během hlavních upgradů schémat a umožňují návrat k předchozímu stavu, je důležité pochopit, že snímky nenahrazovat potřebu pravidelných záloh. Nemůžete zálohovat ani obnovovat snímky databáze, což znamená, že by se měly používat s robustní strategií zálohování, která zajistí ochranu a obnovení dat, pokud dojde ke ztrátě nebo poškození dat.
Snímky databáze se vytvářejí pomocí syntaxe CREATE DATABASE T-SQL a syntaxe AS SNAPSHOT OF
.
V dané zdrojové databázi může existovat více snímků. Každý snímek databáze zůstane trvalý, dokud ho vlastník databáze explicitně neupustí.
Poznámka
Snímky databáze nesouvisejí se zálohováním snímků, Transact-SQL zálohováním snímků, izolací snímků transakcí nebo replikací snímků.
Přehled funkcí
Snímky databáze fungují na úrovni datové stránky. Před první úpravou stránky zdrojové databáze se původní stránka zkopíruje ze zdrojové databáze do snímku. Snímek uloží původní stránku a zachová datové záznamy tak, jak existovaly při vytvoření snímku. Stejný postup se opakuje pro každou stránku, která se upravuje poprvé. Uživateli se snímek databáze nikdy nezmění, protože operace čtení na snímku databáze vždy přistupují k původním datovým stránkám bez ohledu na to, kde se nacházejí.
Snímek ukládá zkopírované původní stránky pomocí jednoho nebo více zhuštěných souborů. Zpočátku je řídký soubor prázdný soubor, který neobsahuje žádná uživatelská data a ještě nebyl přidělen místo na disku pro uživatelská data. Velikost souboru roste s tím, jak se ve zdrojové databázi aktualizuje více stránek. Následující obrázek znázorňuje účinky dvou kontrastních vzorů aktualizací na velikost snímku. Vzor aktualizace A odráží prostředí, ve kterém se během životnosti snímku aktualizuje jenom 30 procent původních stránek. Vzor aktualizace B odráží prostředí, ve kterém se během životnosti snímku aktualizuje 80 procent původních stránek.
Výhody
Snímky lze použít pro účely reportování.
- Klienti se můžou dotazovat na snímek databáze, který pomáhá zapisovat sestavy založené na datech při vytváření snímku.
Udržování historických dat pro sestavování zpráv
- Snímek může rozšířit uživatelský přístup k datům z určitého bodu v čase. Můžete například vytvořit snímek databáze pro pozdější vytváření sestav na konci daného období (například finanční čtvrtletí). Pak můžete na snímku spouštět závěrečné sestavy období. Pokud je místo na disku povolené, můžete také udržovat snímky na konci období neomezeně dlouho, což umožňuje dotazům na výsledky z těchto období, například prozkoumat výkon organizace.
Využití zrcadlové databáze, kterou udržujete pro účely dostupnosti, k odlehčení zpracování reportů.
- Použití snímků databáze v kombinaci se zrcadlením databáze umožňuje zpřístupnit data na zrcadlovém serveru pro výkaznictví. Spouštění dotazů na zrcadlené databázi navíc může uvolnit prostředky pro hlavní databázi. Další informace naleznete v tématu Zrcadlení databází a snímky databází (SQL Server).
Ochrana dat před chybou správy
Pokud dojde k chybě uživatele ve zdrojové databázi, můžete ji při vytvoření snímku databáze vrátit do stavu. Ztráta dat se omezuje na aktualizace databáze od vytvoření snímku.
Například před provedením velkých aktualizací, jako je hromadná aktualizace nebo změna schématu, vytvořte v databázi snímek databáze pro ochranu dat. Pokud uděláte chybu, můžete snímek použít k obnovení vrácením databáze na snímek. Vrácení zpět je rychlejší než obnovení ze zálohy; nemůžete se ale vrátit dopředu.
Důležitý
Vrácení zpět nefunguje v offline nebo poškozené databázi. Proto jsou pravidelné zálohy a testování plánu obnovení nezbytné k ochraně databáze.
Poznámka
Snímky databáze jsou závislé na zdrojové databázi. Proto použití snímků k vrácení databáze není náhradou za strategii zálohování a obnovení. Provádění všech naplánovaných záloh zůstává nezbytné. Pokud musíte zdrojovou databázi obnovit do bodu, kde jste vytvořili snímek databáze, implementujte zásady zálohování, které vám to umožní.
Ochrana dat před chybou uživatele
Pravidelným vytvářením snímků databáze můžete zmírnit dopad hlavní chyby uživatele, například vyřazené tabulky. Pro vysokou úroveň ochrany můžete vytvořit řadu snímků databáze, které můžou dostatek času rozpoznat a reagovat na většinu uživatelských chyb. Podle kapacity vašeho disku můžete například udržovat 6 až 12 průběžných snímků rozložených do 24hodinového intervalu. Při každém vytvoření nového snímku pak můžete nejstarší snímek odstranit.
Pokud se chcete zotavit z chyby uživatele, můžete vrátit databázi k snímku bezprostředně před chybou. Vrácení zpět je potenciálně mnohem rychlejší než obnovení ze zálohy; nemůžete se ale vrátit dopředu.
Případně můžete ručně rekonstruovat vyřazenou tabulku nebo jiná ztracená data z informací na snímku. Můžete například hromadně zkopírovat data ze snímku do databáze a ručně sloučit data zpět do databáze.
Poznámka
Důvody použití snímků databáze určují, kolik souběžných snímků v databázi potřebujete, jak často se má vytvořit nový snímek a jak dlouho ho chcete zachovat.
Správa testovací databáze
- V testovacím prostředí může být užitečné, aby databáze obsahovala identická data na začátku každého kola testování při opakovaném spuštění testovacího protokolu. Před spuštěním prvního kola může vývojář nebo tester aplikace vytvořit snímek testovací databáze. Po každém testovacím spuštění je možné databázi rychle vrátit do předchozího stavu vrácením snímku databáze.
Pojmy a definice
Snímky databází v SQL Serveru zahrnují několik klíčových termínů a definic. Snímek databáze je statické zobrazení databáze jen pro čtení (označované jako zdrojová databáze) v určitém časovém okamžiku. Zdrojová databáze je původní databáze, na které je snímek založen, a musí zůstat online a přístupný, aby byl snímek použitelný. Sparse files ukládají původní stránky zdrojové databáze, které byly změněny od vytvoření snímku. Tyto soubory jsou zpočátku prázdné a rostou při změnách ve zdrojové databázi. Pochopení těchto termínů je nezbytné pro efektivní správu a využití snímků databáze na SQL Serveru.
Snímek databáze
Transakčně konzistentní, pouze pro čtení, statické zobrazení databáze (zdrojové databáze).
Zdrojová databáze
Pro snímek databáze je databáze, na které byl snímek vytvořen. Snímky databáze jsou závislé na zdrojové databázi. Snímky databáze musí být ve stejné instanci serveru jako databáze. Pokud se tato databáze z nějakého důvodu stane nedostupnou, její snímky se navíc stanou nedostupnými.
Zhuštěný soubor
Systém souborů NTFS poskytuje soubor, který vyžaduje mnohem méně místa na disku, než by jinak bylo potřeba. Řídký soubor slouží k ukládání stránek zkopírovaných do snímku databáze. Při prvním vytvoření zabere málo místa na disku řídký soubor. Při zápisu dat do snímku databáze systém souborů NTFS přiděluje místo na disku postupně odpovídajícímu řídkému souboru.
Požadavky
Zdrojová databáze, která může používat libovolný model obnovení, musí splňovat následující požadavky:
Instance serveru musí běžet v edici SQL Serveru, která podporuje snímky databáze.
- Další informace najdete v tématu Funkce podporované edicemi SQL Serveru 2016.
Zdrojová databáze musí být online, pokud se nejedná o zrcadlovou databázi v rámci relace zrcadlení databáze.
Snímek databáze můžete vytvořit ve skupině dostupnosti v jakékoli primární nebo sekundární databázi. Role repliky musí být primární nebo sekundární, nikoli ve stavu ŘEŠENÍ.
Doporučujeme, aby stav synchronizace databáze byl SYNCHRONIZUJÍCÍ nebo SYNCHRONIZOVANÝ, když vytváříte snímek databáze. Snímky databáze se ale dají vytvořit, když se stav NESYNCHRONIZUJE.
- Další informace najdete v tématu Snímky databáze se skupinami dostupnosti AlwaysOn (SQL Server).
Chcete-li vytvořit snímek databáze na zrcadlové databázi, musí být databáze ve stavu synchronizovaného zrcadlení.
Zdrojovou databázi nejde nakonfigurovat jako škálovatelnou sdílenou databázi.
Před SQL Serverem 2019 nemohla zdrojová databáze obsahovat skupinu souborů MEMORY_OPTIMIZED_DATA. V SQL Serveru 2019 byla přidána podpora snímků databáze v paměti.
Všechny modely obnovení podporují snímky databáze.
Omezení zdrojové databáze
Pokud existuje snímek databáze, existují pro zdrojovou databázi snímku následující omezení:
Databázi nejde vyřadit, odpojit ani obnovit.
Zálohování zdrojové databáze obvykle funguje, ale na snímky databáze to nemá vliv.
Výkon se snižuje kvůli zvýšenému počtu vstupně-výstupních operací ve zdrojové databázi, která je výsledkem operace kopírování při zápisu do snímku při každé aktualizaci stránky.
Soubory nelze odstranit ze zdrojové databáze ani ze snímků.
Omezení snímků databáze
Snímky databáze závisí na zdrojové databázi a nechrání se před chybami nebo poškozením disku. Proto, zatímco mohou být užitečné pro účely vytváření sestav nebo během změn schématu, měly by doplňovat, nikoli nahrazovat, pravidelné postupy zálohování. Pokud potřebujete obnovit zdrojovou databázi do bodu, kde jste vytvořili snímek databáze, implementujte zásady zálohování, které vám to umožní.
Pro snímky databáze platí následující omezení:
Snímek databáze se musí vytvořit a zůstat ve stejné instanci serveru jako zdrojová databáze.
Snímky databáze vždy působí na celou databázi.
Snímky databáze závisejí na zdrojové databázi a nefungují jako redundantní úložiště. Nechrání před chybami disku nebo jinými typy poškození. Proto použití snímků k vrácení databáze není náhradou za strategii zálohování a obnovení. Provádění všech naplánovaných záloh zůstává nezbytné. Pokud musíte zdrojovou databázi obnovit do bodu, kde jste vytvořili snímek databáze, implementujte zásady zálohování, které vám to umožní.
Když se stránka při aktualizaci ve zdrojové databázi přesune do snímku, pokud snímek vyčerpá místo na disku nebo dojde k nějaké jiné chybě, stane se podezřelým a musí být odstraněn.
Snímky jsou jen pro čtení. Vzhledem k tomu, že jsou jen pro čtení, není možné je upgradovat. Proto se po upgradu neočekává, že by snímky databáze byly přijatelné.
Snímky
model
,master
atempdb
databází jsou zakázány.Nemůžete změnit žádné specifikace souborů snímků databáze.
Soubory ze snímku databáze nejde vypustit.
Nemůžete zálohovat ani obnovovat snímky databáze.
Snímky databáze nemůžete připojit ani odpojit.
Snímky databáze nemůžete vytvářet v systému souborů FAT32 ani v oddílech RAW. Systém souborů NTFS poskytuje řídké soubory používané pro snímky databáze.
U snímků databáze se nepodporuje fulltextové indexování. Fulltextové katalogy nejsou šířené ze zdrojové databáze.
Snímek databáze dědí omezení zabezpečení zdrojové databáze v době vytvoření snímku. Vzhledem k tomu, že snímky jsou jen pro čtení, zděděná oprávnění se nedají změnit a změny oprávnění provedené ve zdroji se neprojeví v existujících snímcích.
Snímek vždy odráží stav skupin souborů v době vytvoření snímku: online skupiny souborů zůstanou online a offline skupiny souborů zůstanou offline. Další informace najdete v části Snímky databáze s offline skupinami souborů dále v tomto článku.
Pokud se zdrojová databáze stane RECOVERY_PENDING, může být její snímky nepřístupné. Po vyřešení problému se zdrojovou databází by ale měly být snímky opět dostupné.
Vrácení změn není podporováno pro žádné soubory NTFS, které jsou pouze pro čtení nebo komprimované, v databázi. Pokusy o vrácení databáze obsahující některý z těchto typů skupin souborů selžou.
V konfiguraci log shipping lze vytvořit snímky databáze pouze v primární databázi, nikoli v sekundární. Předpokládejme, že přepnete role mezi primárními a sekundárními instancemi serveru. V takovém případě musíte před nastavením primární databáze jako sekundární databáze odstranit všechny snímky databáze.
Snímek databáze nejde nakonfigurovat jako škálovatelnou sdílenou databázi.
Snímky databáze nepodporují skupiny souborů FILESTREAM. Pokud ve zdrojové databázi existují skupiny souborů FILESTREAM, jsou ve svých snímcích databáze označené jako offline a snímky se nedají použít k vrácení databáze.
Poznámka
Příkaz SELECT, který se spouští na snímku databáze, nesmí určovat sloupec FILESTREAM; jinak se vrátí následující chybová zpráva: Could not continue scan with NOLOCK due to data movement.
- Pokud u snímku jen pro čtení chybí statistiky nebo jsou zastaralé, databázový stroj vytvoří a udržuje dočasné statistiky v
tempdb
. Další informace najdete v tématu Statistika.
Místo na disku
Snímky databáze spotřebovávají místo na disku. Pokud snímek databáze vyčerpá místo na disku, označí se jako podezřelý a musí se vyhodit. (Zdrojová databáze však není ovlivněna; akce na ní obvykle pokračují.)
Snímky jsou ale ve srovnání s úplnou kopií databáze vysoce prostorově efektivní. Snímek vyžaduje pouze dostatek úložiště pro stránky, které se během své životnosti mění. Obecně platí, že snímky se uchovávají po omezenou dobu, takže jejich velikost není zásadním problémem.
Čím déle ale snímek zachováte, tím pravděpodobnější bude využití dostupného místa. Maximální velikost, na kterou se může řídký soubor zvětšit, je odpovídající velikost zdrojového souboru databáze v době vytvoření snímku. Snímek databáze se musí odstranit (vynechat), pokud je nedostatek místa na disku.
Poznámka
S výjimkou místa v souboru využívá snímek databáze zhruba tolik prostředků jako databáze.
Offline skupiny souborů
Offline skupiny souborů ve zdrojové databázi ovlivňují snímky databáze, když se pokusíte provést některou z těchto věcí:
Vytvořte snímek.
- Pokud má zdrojová databáze jednu nebo více offline skupin souborů, vytvoření snímku proběhne offline se skupinami souborů. Pro offline souborové skupiny se nevytvoří řídké soubory.
Převést skupinu souborů do offline režimu
- Soubor můžete ve zdrojové databázi převést do offline režimu. Skupina souborů ale zůstane online ve snímcích databáze, pokud byla při vytvoření snímku online. Pokud se dotazovaná data od vytvoření snímku změnila, bude původní datová stránka přístupná na snímku. Dotazy, které používají snímek pro přístup k nemodifikovaným datům ve skupině souborů, ale pravděpodobně selžou s chybami vstupu a výstupu (vstupně-výstupních operací).
Přenesení skupiny souborů do online režimu
- Skupinu souborů nemůžete přenést do online režimu v databázi, která obsahuje žádné snímky databáze. Pokud je skupina souborů offline v době vytvoření snímku nebo je vypnuta, zatímco existuje snímek databáze, zůstane offline. Důvodem je to, že přenesení souboru do režimu online zahrnuje jeho obnovení, což není možné, pokud v databázi existuje snímek databáze.
Vrácení zdrojové databáze k snímku
- Vrácení zdrojové databáze na snímek databáze vyžaduje, aby všechny skupiny souborů byly online s výjimkou těch, které byly při vytvoření snímku offline.
Související obsah
- Zrcadlení databáze a snímky databáze (SQL Server)
- CREATE DATABASE – snímky databáze
- vytvoření snímku databáze (Transact-SQL)
- Zobrazení snímku databáze (SQL Server)
- zobrazit velikost zhuštěného souboru snímku databáze (Transact-SQL)
- Vrátit databázi do snímku databáze
- Odstranění snímku databáze (Transact-SQL)