Ahoj
V tomto článku budu pokračovat ve vysvětlování databázových snímků na serveru SQL.
Před tímto příspěvkem si přečtěte předchozí články.
Snímky databáze SQL Server -1
Snímky databáze SQL Server -2
Snímky databáze SQL Server -3
Tato chyba je velmi děsivá a představuje finanční ztrátu pro produkční databázi.
K návratu z této chyby použijeme databázi Snapshot. K vytvoření tabulky AWBuildVersion v databázi AdventureWorks používáme tabulku AWBuildVersion databáze Snapshot. Použijeme k tomu příkaz Select * into. Snímek obrazovky po spuštění skriptu je následující. Jak ukazuje červená čára, zahozená tabulka se vrátí do zdrojové databáze se svými daty.
Udělejme další podobný příklad, aby byl srozumitelnější. Smažte data libovolné tabulky a vraťte ji znovu z databáze Snapshot. Jak je uvedeno na obrázku 1.1 níže, tabulka BillOfMaterials v dolní části databáze ProductionWorks se odstraňuje z databáze AdventureWorks. Když současně vybereme počet Select, bude dotazován záznam 0, jak je znázorněno na obrázku níže.
K návratu z této chyby znovu používáme databázi Snapshot. Stejně jako v 2.1 výše, provádíme vložení stejného schématu a tabulky databáze Snapshot do odpovídající tabulky ve zdrojové databázi. Stejným způsobem se vloží stejný počet řádkových záznamů jako na obrázku 2.2, když jsme se dotázali Select Count.
Nakonec uděláme chybu správce z databáze Snapshot a tentokrát obnovíme zdrojovou databázi z databáze Snapshot. Snímek databáze AdventureWorks se tedy vrací do původního stavu. Mažu data tabulky BillOfMaterials z Production Schema a zároveň jsem vypustil tabulku SalesOrderDetail pod schématem Sales. Snímek obrazovky je následující. Protože data tabulky BillOfMaterials v dolní části výrobního schématu byla odstraněna, tabulka SalesOrderDetail se nezobrazuje, protože byla odstraněna.
Provedli jsme mnoho změn ve zdrojové databázi, řekli jsme, že tyto změny se vždy zapisují do Sparse File. Následující obrázek ukazuje konečnou verzi souboru Sparse. Zatímco původní velikost 1 se nezměnila, původní řídký soubor číslo 2 se zvětšil. Důvodem toho, jak jsem řekl, je to, že všechny změny provedené ve zdrojové databázi jsou zapsány zde. Když tedy uživatel čte změněná data, čte se z řídkého souboru. Pokud uživatel zadá dotaz na nezměněná data, budou načtena ze zdrojové databáze.
Nyní se vraťme zpět ke snímku.
SQL Server 2017 Database Snaphot Restore coderestore
database
AdventureWorks
from
database_snapshot=
'AdventureWorksSnaphot'
Po obnovení Snapshotu, jak je znázorněno na obrázku výše, se můžeme dotazovat na všechny odstraněné a odstraněné tabulky.