Hva Er Database Snapshot PÅ SQL Server

Database Snapshot er etableringen av et uforanderlig bilde av databasen, kan du tenke på det som å ta dagens bilde av databasen.

hvis jeg forklarer det gjennom et eksempel, blir det tydeligere.

for eksempel tar vi øyeblikksbildet Av AdventureWorks2014-databasen. Vi leser gjennom dette bildet. Ingen endringer er gjort i AdventureWorks2014 databasen ennå. Våre velger gå til den opprinnelige databasen fordi det ikke er noen endring i den opprinnelige databasen.

hvis det skjer endringer i den opprinnelige databasen, skrives disse endringene til En dedikert Plass på Disken For Øyeblikksbilde (Kalt Sparsomme Filer).

når vi vil lese dataene, hvis dataene er endret i den opprinnelige databasen, leses den uendrede versjonen av dataene fra den sparsomme filen. På denne måten blir bildet intakt.

selv om det ikke tar opp diskplass så snart Vi får Øyeblikksbilde, vil størrelsen på De Sparsomme Filene øke etter hvert som endringene i den opprinnelige databasen øker. Hvis størrelsen på de sparsomme filene vokser og det ikke er plass igjen på disken, blir stillbildet mistenkelig, og du må slette stillbildet.

det brukes mest Med Speilingsteknologi.

jeg foreslår at du leser artikkelen Min «Database Mirroring On SQL Server». I Speiling kan vi ikke lese fra den sekundære databasen. Når vi vil lese fra sekundærdatabasen, kan vi gjøre dette ved øyeblikksbilde av sekundærdatabasen.

Og på denne måten skaper vi ikke en byrde for rapporten i den primære databasen ved å lage våre rapportspørringer fra den sekundære databasen.

Eller du kan få et øyeblikksbilde av databasen før du utfører en satsvis oppdatering eller sletting. Feil oppdatering eller sletting kan reverseres ved hjelp av øyeblikksbilde. Det ville være en mye raskere metode enn å returnere Fra Backup.

Snapshot bør være på samme forekomst med databasen.

la oss fortsette med to eksempler.

i det første eksemplet får vi et øyeblikksbilde for å kunne lese fra den sekundære databasen til den speilede databasen.

i det andre eksemplet får vi øyeblikksbilde for å reversere en feil oppdateringsoperasjon.

Eksempel1:

den speilede databasen må først være synkron. Så bildet av din sekundære database skal være som følger.

Vi lager Deretter Stillbildet ved hjelp av følgende skript. Du må angi alle filene i databasen.

i vårt eksempel var det to filer. Vi opprettet snapshot for disse to filene. Hvis Du ikke er kjent Med Filgruppe og Fil, kan du lese artikkelen Min «Hvordan Lage En Database PÅ SQL Server».

1
2
3
4
5

OPPRETT DATABASE AdventureWorks2014_Snapshot PÅ
(NAME = AdventureWorks2012_Data, FILENAME = ‘C:\DB\Data\AdventureWorks2012_Data.ss’ ),
( NAME = AdventureWorks2014_Deneme, FILENAME = ‘C:\DB\Data\AdventureWorks2014_Deneme.ss’)
SOM ØYEBLIKKSBILDE Av AdventureWorks2014;

jeg fikk følgende skript fra msdn.

med følgende skript kan du finne størrelsen på stillbildet på disken og den maksimale størrelsen den kan vokse.

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

VELG DB_NAME (sd.source_database_id) AS,
sd.name AS,
mf.name AS,
size_on_disk_bytes/1024 AS ,
mf2.storrelse / 128 SOM
fra sys.master_files mf
BLI med sys.databaser sd
PÅ mf.database_id = sd.database_id
BLI med sys.master_files mf2
på sd.source_database_id = mf2.database_id
OG mf.file_id = mf2.file_id
KRYSS GJELDER sys. dm_io_virtual_file_stats (sd. database_id, mf. file_id)
hvor mf. is_sparse = 1
OG MF2.is_sparse = 0
BESTILL VED 1;

følgende resultatsett returnerte da jeg kjørte skriptet. Jeg setter størrelsen på disse to datafilene til 256 mb.

derfor kan stillbildet vokse til maksimalt 256 MB.

vi opprettet vårt øyeblikksbilde.

du kan lese fra stillbildet ditt som om det var en database Fra Databasene-> Database Snapshots-delen PÅ SSMS.

Normalt kan du ikke lese fra sekundær database på speiling. Men du kan lese fra øyeblikksbildet til den sekundære databasen.

Example2:

La oss kjøre skriptet nedenfor i den primære databasen.

1
2
3
4
5

OPPRETT DATABASE AdventureWorks2014_Snapshot PÅ
(NAME = AdventureWorks2012_Data, FILENAME = ‘C:\DB\Data\AdventureWorks2012_Data.ss’ ),
( NAME = AdventureWorks2014_Deneme, FILENAME = ‘C:\DB\Data\AdventureWorks2014_Deneme.ss’ )
SOM ØYEBLIKKSBILDE Av AdventureWorks2014;

når Du har Tatt Øyeblikksbilde, sletter du alle poster i en tabell ved hjelp av følgende skript. Jeg sletter poster fra tabellen Kalt Snapshot_deneme som jeg opprettet tidligere i AdventureWorks2014-databasen.

1
Slett Fra Snapshot_deneme

Etter slettingsprosessen kan du gjenopprette slettede poster ved hjelp av følgende skript.

men hvis du har gjort en annen operasjon etter å ha tatt øyeblikksbilde, mister du disse endringene.

1
2
3

BRUK master
GJENOPPRETT DATABASE AdventureWorks2014 FRA DATABASE_SNAPSHOT = ‘AdventureWorks2014_Snapshot’

dbtut

Forfatter: dbtut

Vi er et team med over 10 års database management og BI erfaring. Våre Eksperter: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.