mi adatbázis Snapshot SQL Server

Adatbázis Snapshot létrehozása megváltoztathatatlan kép az adatbázis, akkor gondolom, hogy figyelembe aktuális fotó adatbázis.

ha egy példán keresztül magyarázom, világosabb lesz.

például az AdventureWorks2014 adatbázis pillanatképét készítjük. Ezt a pillanatképet olvassuk. Az AdventureWorks2014 adatbázisban még nem történt változás. A kiválasztás az eredeti adatbázisba megy, mert az eredeti adatbázisban nincs változás.

ha változások történnek az eredeti adatbázisban, akkor ezeket a módosításokat a lemez egy dedikált helyére írják Pillanatkép (úgynevezett ritka fájlok).

ha el akarjuk olvasni az adatokat, ha az adatok megváltoztak az eredeti adatbázisban, akkor az adatok változatlan változata a ritka fájlból olvasható ki. Ily módon a fénykép sértetlen lesz.

annak ellenére, hogy nem foglal lemezterületet, amint pillanatképet kapunk, a ritka fájlok mérete növekszik, ahogy az eredeti adatbázis változásai növekednek. Ha a ritka fájlok mérete növekszik, és nincs hely a lemezen, a pillanatkép gyanússá válik, és törölni kell a pillanatképet.

leginkább tükrözési technológiával használják.

azt javaslom, olvassa el a cikkemet “Adatbázis tükrözés az SQL Server – en”. A tükrözés során nem tudunk olvasni a másodlagos adatbázisból. Amikor a másodlagos adatbázisból akarunk olvasni, ezt a másodlagos adatbázis pillanatképével tehetjük meg.

ily módon NEM hozunk létre terhet a jelentés számára az elsődleges adatbázisban azáltal, hogy jelentés lekérdezéseket készítünk a másodlagos adatbázisból.

vagy lekérheti az adatbázis pillanatképét a kötegelt frissítési vagy törlési művelet végrehajtása előtt. A helytelen frissítési vagy törlési művelet pillanatkép segítségével megfordítható. Sokkal gyorsabb módszer lenne, mint a biztonsági mentésből való visszatérés.

a Pillanatképnek ugyanazon a példányon kell lennie az adatbázissal.

folytassuk két példával.

az első példában egy pillanatképet kapunk, amely képes olvasni a tükrözött adatbázis másodlagos adatbázisából.

a második példában pillanatképet kapunk a helytelen frissítési művelet megfordításához.

Example1:

először is, a tükrözött adatbázisnak szinkronnak kell lennie. Tehát a másodlagos adatbázis képének a következőnek kell lennie.

ezután elkészítjük a pillanatképet a következő szkript segítségével. Meg kell adnia az összes fájlt az adatbázisban.

példánkban két fájl volt. Pillanatképet készítettünk ehhez a két fájlhoz. Ha nem ismeri a Filegroupot és a fájlt, olvassa el a “Hogyan hozzunk létre adatbázist az SQL Server-en”című cikkemet.

1
2
3
4
5

adatbázis létrehozása AdventureWorks2014_Snapshot ON
( NAME = AdventureWorks2012_Data, FILENAME = ‘C:\DB\Data\AdventureWorks2012_Data.ss’ ),
( NAME = AdventureWorks2014_Deneme, fájlnév = ‘C:\DB\Data\AdventureWorks2014_Deneme.SS’)
mint pillanatkép AdventureWorks2014;
megy

a következő szkriptet kaptam az msdn-től.

a következő szkript segítségével megtalálhatja a lemezen lévő pillanatkép méretét és a maximális méretét.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

válassza a DB_NAME (sd.forrás_database_id) AS ,
sd.name AS,
mf.name AS,
size_on_disk_bytes/1024 AS ,
mf2.méret/128 mint
a sys-től.master_files mf
csatlakozzon a sys-hez.SD
adatbázisok az mf – en.database_id = sd.database_id
csatlakozzon a sys-hez.master_files mf2
sd-n.source_database_id = mf2.database_id
és mf.file_id = mf2.file_id
a SYS.dm_io_virtual_file_stats(sd.database_id, mf.file_id)
ahol mf. is_sparse = 1
és mf2. is_sparse = 0
sorrend 1;

a következő eredményhalmaz visszatért a szkript futtatásakor. A két adatfájl méretét 256 mb-ra állítottam.

ezért a pillanatkép legfeljebb 256 MB-ra nőhet.

létrehoztuk a pillanatképünket.

a pillanatképből úgy olvashat, mintha adatbázis lenne az adatbázisok-> Adatbázis Pillanatképek szakasz SSMS-en.

normális esetben nem lehet olvasni a másodlagos adatbázis tükrözés. De a másodlagos adatbázis pillanatképéből olvashat.

Example2:

futtassuk az alábbi szkriptet az elsődleges adatbázisban.

1
2
3
4
5

adatbázis létrehozása AdventureWorks2014_Snapshot ON
( NAME = AdventureWorks2012_Data, FILENAME = ‘C:\DB\Data\AdventureWorks2012_Data.ss’ ),
( NAME = AdventureWorks2014_Deneme, fájlnév = ‘C:\DB\Data\AdventureWorks2014_Deneme.SS’)
mint pillanatkép AdventureWorks2014;
megy

a pillanatkép készítése után törölje a rekordokat bármelyik táblából a következő parancsfájl segítségével. Rekordokat törölök a Snapshot_deneme nevű táblából, amelyet korábban az AdventureWorks2014 adatbázisban hoztam létre.

1
Törlés a Snapshot_deneme-ből

a törlési folyamat után visszaállíthatja a törölt rekordokat a következő szkript segítségével.

de ha a Pillanatfelvétel készítése után újabb műveletet hajtott végre, elveszíti ezeket a változásokat.

1
2
3

USE master
GO
adatbázis visszaállítása AdventureWorks2014 innen: DATABASE_SNAPSHOT = ‘AdventureWorks2014_Snapshot’

dbtut

Author: dbtut

több mint 10 éves adatbázis-kezelő és BI tapasztalattal rendelkező csapat vagyunk. Szakértőink: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.