Recent Posts

Archives

Categories

Meta

Snapshot adatbázis

Ezzel a technikával egy adott pillanatot tudunk befagyasztani  A Snapshot adatbázis csak olvasható, ezeken riportokat készíthetünk vagy csak egy későbbi visszaállítási lehetőséget mentünk, közben a fő adatbázisban zajlanak a szokásos műveletek. A Snapshot adatbázis táblái kezdetben üresek és csak a módosuláskor kerülnek át az originál lapok.

Lényeges, hogy mindkét adatbázis rendelkezésre áll, így a változásokat könnyen visszakövethetjük, pl. teszteléskor. Természetesen lassítja a source adatbázist, mert a tranzakció előtt csinálja meg a másolást.

Létrehozása:

USE master
GO
SELECT name AS logical_name, type_desc, physical_name from sys.master_files
WHERE database_id = db_id('TEST') -- Create the database snapshot
GO
CREATE DATABASE TEST_SS
On
(NAME=TEST_DAT,
FILENAME=‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_SS.ss’
)
AS SNAPSHOT OF TEST
GO
use TEST
GO
UPDATE foo SET foo_name='1' WHERE foo_id=0
select * from TEST.dbo.foo WHERE foo_id=0
select * from TEST_SS.dbo.foo WHERE foo_id=0

A példában egy TEST db-ből csináltunk egy TEST_SS db-t. Majd a TEST db-ben kiadott update után visszanézzük a sort.

Visszaállítás a snapshot db-ből:

USE master;
GO
RESTORE DATABASE TEST from DATABASE_SNAPSHOT = 'TEST_SS';

Természetesen a Snapshot adatbázistól egy DROP DATABASE paranccsal megszabadulhatunk, persze ne tévesszük el a nevet:)

Van még egy pici hátránya a technikának, Express-en nincs, egyébként egy új mappában találhatók az SSMS-ben a Snapshot Database alatt.

Leave a Reply