SQL Server Snapshot Database

SQL Server Snapshot Database

Nel server SQL, un'istantanea del database è una vista statica di sola lettura di un determinato database (database di origine). Un'istantanea cattura lo stato attuale del database al momento dell'acquisizione dell'istantanea. Ciò significa che un'istantanea del database è transazionalmente coerente.

L'istantanea del database si trova nella stessa istanza del database di origine. Sebbene le istantanee forniscano una vista di sola lettura nei dati del database di destinazione, sono dipendenti dalla fonte. Ciò significa che le dimensioni possono crescere man mano che le modifiche vengono applicate al database di origine. Allo stesso modo, l'istantanea diventa anche corrotta se il database di origine è corrotto.

È quindi importante tenere presente che le snapshot del database non servono come backup contro errori come il fallimento del disco o la corruzione del database.

Assicurarsi di prendere backup completi o parziali per il tuo database per proteggerlo da tali guasti.

Discutiamo di come possiamo prendere un'istantanea del database nel server SQL.

Database di esempio e tabella

Prima di discutere come prendere un'istantanea di un database, impostiamo un database di esempio per scopi di illustrazione.

Le domande sono come previste da segue:

Drop database se esiste l'inventario;
Creare inventario del database;
Utilizzare l'inventario;
Drop tabella se esistono prodotti;
Crea prodotti da tavolo
(
Id Int Identity Key Primary non null,
Product_Name Varchar (100),
Produttore Varchar (50),
quantità int non null,
Prezzo int predefinito 0,
in_stock bit
);
Insert in Products (Product_Name, produttore, quantità, prezzo, in_stock)
Valori ('Apple iPad Air - 2022', 'Apple', 100, 569.99, 1),
("Samsung Galaxy Z Flip 4 - 2022", "Samsung", 302, 1569.00, 1),
("Sony PlayStation 5 - 2020", "Sony", 500, 499.99, 1),
('Samsung Galaxy Watch -5 Pro - 2022', 'Samsung', 600, 209 / .99, 1),
("Apple Watch Series 6 - 2022", "Apple", 459, 379.90, 1),
("Apple AirPods Pro - 2022", "Apple", 200, 199.99, 1),
('55 "Classe S95B OLED 4K Smart TV - 2021 ',' Samsung ', 900, 1999.90, 1),
("Schermata di gioco curvo Mini -LED di Odyssey Ark - 2021", "Samsung", 50, 2999.90, 1);

SQL Server prendi l'istantanea del database

Per prendere un'istantanea di un determinato database, utilizziamo la query di database Crea seguita dalla clausola AS Snapshot.

La sintassi è la seguente:

Crea database database_snapshot_name
SU
(Name = logical_file_name, fileName = 'os_file_name') [, ... n]
Come istantanea di source_database_name;

Ad esempio, per prendere un'istantanea del database "Inventario" che abbiamo creato in precedenza, possiamo eseguire la query come mostrato nel seguente:

Crea database Inventory_Snap su
(Name = Inventory,
filename = 'C: \ Programmi \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQL \ Backup \ Inventory.ss ')
come istantanea dell'inventario;

Una volta creato, è possibile visualizzare l'istantanea utilizzando SSMS navigando nel database - istantanea del database.

Lì, hai preso con successo un'istantanea del tuo database. È possibile utilizzare le istantanee per ripristinare il database in un punto specifico in cui è stata presa l'istantanea.

Per ripristinare il database utilizzando l'istantanea, è possibile eseguire la seguente query:

Usa il master;
Ripristina Database Database_Name
Da database_snapshot = snapshot_name;

NOTA: Ripristino di un'istantanea del database richiede di utilizzare il database principale prima di eseguire l'operazione.

Esempio:

Usa il master;
Ripristina l'inventario del database
da
Database_snapshot = 'inventor_snap';

Questo dovrebbe ripristinare il database dall'istantanea.

Conclusione

Questo post ha coperto il processo di assunzione e ripristino di un'istantanea del database utilizzando i comandi Transact -SQL.

Grazie per aver letto!