Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Snapshot del database di SQL Server -4

Ciao

Continuerò a spiegare gli snapshot di database in SQL Server in questo articolo.

Leggi gli articoli precedenti prima di questo post.

Snapshot del database di SQL Server -1

Snapshot del database di SQL Server -2

Snapshot del database di SQL Server -3

Questo errore è molto spaventoso e rappresenta una perdita finanziaria per il database di produzione.

Utilizzeremo il database Snapshot per tornare da questo errore. Utilizziamo la tabella AWBuildVersion del database Snapshot per creare la tabella AWBuildVersion nel database AdventureWorks. Useremo Seleziona * nel comando per questo. Lo screenshot dopo aver eseguito lo script è il seguente. Come indicato dalla linea rossa, Dropped Table viene restituito al database di origine con i suoi dati.

Facciamo un altro esempio simile in termini di maggiore comprensione. Eliminiamo i dati di qualsiasi tabella e li restituiamo nuovamente dal database Snapshot. Come illustrato nell'immagine 1.1 di seguito, la tabella BillOfMaterials nella parte inferiore del database ProductionWorks viene eliminata dal database AdventureWorks. Quando selezioniamo contemporaneamente il conteggio Seleziona, viene interrogato il record 0 come mostrato nell'immagine sottostante.

Usiamo di nuovo il database Snapshot per tornare da questo errore. Come in 2.1 sopra, stiamo eseguendo l'inserimento dello stesso schema e tabella del database Snapshot nella tabella corrispondente nel database di origine. Allo stesso modo, viene inserito lo stesso numero di record di riga come mostrato nell'immagine 2.2 quando abbiamo interrogato Select Count.

Infine, commettiamo un errore di amministratore dal database Snaphot e questa volta ripristineremo il database di origine dal database Snaphot. Pertanto, lo snapshot del database AdventureWorks sta tornando allo stato iniziale. Sto eliminando i dati della tabella BillOfMaterials dallo schema di produzione e allo stesso tempo ho eliminato la tabella SalesOrderDetail nello schema Sales. Lo screenshot è il seguente. Poiché i dati della tabella BillOfMaterials in fondo allo schema di produzione sono stati eliminati, la tabella SalesOrderDetail non viene visualizzata perché viene eliminata.

Abbiamo apportato molte modifiche al database di origine, abbiamo detto che queste modifiche vengono sempre scritte su Sparse File. L'immagine seguente mostra la versione finale del file Sparse. Sebbene la dimensione originale 1 non sia cambiata, il numero 2 del file Sparse originale è aumentato. La ragione di ciò, come ho detto, è che tutte le modifiche apportate al database Source sono scritte qui. Quindi, quando l'utente legge i dati modificati, legge dal file sparsi. Se l'utente esegue una query sui dati invariati, verranno letti dal database di origine.

Ora torniamo a Snapshot.

SQL Server 2017 Database Snaphot Restore code

restore database  AdventureWorks from database_snapshot='AdventureWorksSnaphot'

Possiamo interrogare tutte le tabelle eliminate ed eliminate dopo aver ripristinato l'istantanea come mostrato nell'immagine sopra.