Base de datos de instantáneas de SQL Server

Base de datos de instantáneas de SQL Server

En el servidor SQL, una instantánea de la base de datos es una vista de solo lectura y estática de una base de datos dada (base de datos de origen). Una instantánea captura el estado actual de la base de datos en el momento de la captura de instantáneas. Esto significa que una instantánea de la base de datos es transaccionalmente consistente.

La instantánea de la base de datos se encuentra en la misma instancia que la base de datos de origen. Aunque las instantáneas proporcionan una vista de solo lectura en los datos de la base de datos de destino, son dependientes de la fuente. Esto significa que el tamaño puede crecer a medida que los cambios se aplican a la base de datos de origen. Del mismo modo, la instantánea también se corrompe si la base de datos de origen está dañada.

Por lo tanto, es importante tener en cuenta que las instantáneas de la base de datos no sirven como copias de seguridad contra errores como falla en el disco o corrupción de la base de datos.

Asegúrese de tomar copias de seguridad completas o parciales para su base de datos para protegerla contra tales fallas.

Discutamos cómo podemos tomar una instantánea de la base de datos en el servidor SQL.

Muestra de base de datos y tabla

Antes de discutir cómo tomar una instantánea de una base de datos, configuremos una base de datos de muestra para fines de ilustración.

Las consultas son las que se proporcionan en lo siguiente:

Drop Base de datos si existe el inventario;
Crear inventario de base de datos;
Usar inventario;
Tabla de caída si existe productos;
Crear productos de mesa
(
ID int identidad clave primaria no nula,
Product_Name Varchar (100),
Fabricante Varchar (50),
cantidad int no nulo,
precio int predeterminado 0,
en_stock bit
);
Insertar en productos (Product_Name, fabricante, cantidad, precio, in_stock)
Valores ('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 "Clase S95B OLED 4K Smart TV - 2021 ',' Samsung ', 900, 1999.90, 1),
('Pantalla de juegos curvos de Mini -Led Led de Odyssey Ark Quantum - 2021', 'Samsung', 50, 2999.90, 1);

SQL Server Toma la instantánea de la base de datos

Para tomar una instantánea de una base de datos dada, utilizamos la consulta de la base de datos Crear seguida de la cláusula de instantánea como.

La sintaxis es la siguiente:

Crear base de datos Database_snapshot_name
EN
(Name = logical_file_name, filename = 'OS_FILE_NAME') [, ... N]
Como instantánea de fuente_database_name;

Por ejemplo, para tomar una instantánea de la base de datos "Inventario" que creamos anteriormente, podemos ejecutar la consulta como se muestra a continuación:

Crear Inventory_Snap de la base de datos
(nombre = inventario,
FileName = 'C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQL \ Backup \ Inventory.SS ')
como instantánea del inventario;

Una vez creado, puede ver la instantánea utilizando SSMS navegando a la base de datos - Instantánea de la base de datos.

Allí, tomó con éxito una instantánea de su base de datos. Puede usar las instantáneas para restaurar la base de datos a un punto específico que se tomó la instantánea.

Para restaurar la base de datos utilizando la instantánea, puede ejecutar la siguiente consulta:

Usar maestro;
Restaurar la base de datos Base_name
Desde database_snapshot = snapshot_name;

NOTA: Restaurar una instantánea de la base de datos requiere que use la base de datos maestra antes de realizar la operación.

Ejemplo:

usar maestro;
Restaurar inventario de la base de datos
de
Database_snapshot = 'Inventory_snap';

Esto debería restaurar la base de datos desde la instantánea.

Conclusión

Esta publicación cubrió el proceso de tomar y restaurar una instantánea de la base de datos utilizando los comandos Transact -SQL.

Gracias por leer!