L’instantané de base de données est la création d’une image immuable de la base de données, vous pouvez le considérer comme prenant une photo actuelle de la base de données.
Si je l’explique à travers un exemple, ce sera plus clair.
Par exemple, nous prenons l’instantané de la base de données AdventureWorks2014. Nous lisons cet instantané. Aucune modification n’a encore été apportée à la base de données AdventureWorks2014. Nos sélections vont à la base de données d’origine car il n’y a pas de changement dans la base de données d’origine.
Si des modifications se produisent dans la base de données d’origine, ces modifications sont écrites dans un espace dédié sur le disque pour l’instantané (appelé Fichiers clairsemés).
Lorsque nous voulons lire les données, si les données ont changé dans la base de données d’origine, la version inchangée des données est lue à partir du fichier clairsemé. De cette façon, la photo devient intacte.
Même s’il ne prend pas d’espace disque dès que nous obtenons un Instantané, la taille des fichiers Clairsemés augmentera à mesure que les modifications de la base de données d’origine augmenteront. Si la taille des fichiers épars augmente et qu’il ne reste plus d’espace sur le disque, l’instantané devient suspect et vous devez le supprimer.
Il est principalement utilisé avec la technologie de mise en miroir.
Je vous suggère de lire mon article « Mise en miroir de base de données Sur SQL Server ». En miroir, nous ne pouvons pas lire à partir de la base de données secondaire. Lorsque nous voulons lire à partir de la base de données secondaire, nous pouvons le faire par instantané de la base de données secondaire.
Et de cette façon, nous ne créons pas de charge pour le rapport dans la base de données principale en effectuant nos requêtes de rapport à partir de la base de données secondaire.
Ou vous pouvez obtenir l’instantané de la base de données avant d’effectuer une opération de mise à jour ou de suppression par lots. Une opération de mise à jour ou de suppression incorrecte peut être inversée à l’aide de snapshot. Ce serait une méthode beaucoup plus rapide que de revenir de sauvegarde.
L’instantané doit être sur la même instance que la base de données.
Continuons avec deux exemples.
Dans le premier exemple, nous obtiendrons un instantané pour pouvoir lire à partir de la base de données secondaire de la base de données en miroir.
Dans le deuxième exemple, nous obtiendrons snapshot pour inverser une opération de mise à jour incorrecte.
Example1 :
Tout d’abord, la base de données en miroir doit être synchrone. L’image de votre base de données secondaire devrait donc être la suivante.
Nous créons ensuite l’Instantané à l’aide du script suivant. Vous devez spécifier tous les fichiers de la base de données.
Dans notre exemple, il y avait deux fichiers. Nous avons créé un instantané pour ces deux fichiers. Si vous n’êtes pas familier avec les groupes de fichiers et les fichiers, vous pouvez lire mon article « Comment créer une base de données Sur SQL Server ».
1
2
3
4
5
|
CRÉER UNE BASE DE DONNÉES AdventureWorks2014_Snapshot SUR
(NAME=AdventureWorks2012_Data, FILENAME=’C:\DB\Data\AdventureWorks2012_Data .ss’ ),
( NOM = AdventureWorks2014_Deneme, NOM DE FICHIER =’C:\DB\Data\AdventureWorks2014_Deneme .ss’)
COMME INSTANTANÉ D’AdventureWorks2014;
GO
|
J’ai reçu le script suivant de msdn.
Avec le script suivant, vous pouvez trouver la taille de l’instantané sur le disque et la taille maximale qu’il peut augmenter.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SÉLECTIONNEZ DB_NAME (sd.code source) COMME,
sd.name COMME,
mf.name COMME,
size_on_disk_bytes/1024 COMME,
mf2.taille / 128 COMME
DE sys.les fichiers maîtres mf
JOIN sys.bases de données sd
SUR mf.database_id = sd.database_id
JOIN sys.fichiers maîtres mf2
SUR sd.source_database_id = mf2.id de base de données
ET mf.id_fichier = mf2.si vous AVEZ BESOIN d’UN fichier, vous POUVEZ LE FAIRE EN UTILISANT la méthode SUIVANTE :DANS CE CAS, IL EST POSSIBLE D’UTILISER LE FICHIER mf.is_sparse = 1
ET mf2.is_sparse= 0
TRIER PAR 1;
|
Le jeu de résultats suivant est revenu lorsque j’ai exécuté le script. J’ai défini la taille de ces deux fichiers de données sur 256 Mo.
C’est pourquoi l’instantané peut atteindre un maximum de 256 Mo.
Nous avons créé notre instantané.
Vous pouvez lire à partir de votre instantané comme s’il s’agissait d’une base de données à partir de la section Instantanés de base de données Databases – > sur SSMS.
Normalement, vous ne pouvez pas lire à partir de la base de données secondaire sur la mise en miroir. Mais vous pouvez lire à partir de l’instantané de la base de données secondaire.
Example2:
Exécutons le script ci-dessous dans la base de données principale.
1
2
3
4
5
|
CRÉER UNE BASE DE DONNÉES AdventureWorks2014_Snapshot SUR
(NAME=AdventureWorks2012_Data, FILENAME=’C:\DB\Data\AdventureWorks2012_Data .ss’ ),
( NOM = AdventureWorks2014_Deneme, NOM DE FICHIER =’C:\DB\Data\AdventureWorks2014_Deneme .ss’)
COMME INSTANTANÉ D’AdventureWorks2014;
ALLER
|
Après avoir pris un instantané, supprimez tous les enregistrements de n’importe quelle table à l’aide du script suivant. Je supprime les enregistrements de la table nommée Snapshot_deneme que j’ai créée plus tôt dans la base de données AdventureWorks2014.
1
|
Supprimer De Snapshot_deneme
|
Après le processus de suppression, vous pouvez restaurer vos enregistrements supprimés à l’aide du script suivant.
Mais si vous avez effectué une autre opération après avoir pris un instantané, vous perdrez ces modifications.
1
2
3
|
UTILISEZ master
GO
RESTAURER LA BASE DE DONNÉES AdventureWorks2014 À PARTIR DE DATABASE_SNAPSHOT =’AdventureWorks2014_Snapshot’
|
Auteur: dbtut
Nous sommes une équipe avec plus de 10 ans d’expérience dans la gestion de bases de données et la BI. Nos Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.