Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Instantanés de la base de données SQL Server -4

Salut

Je vais continuer à expliquer les instantanés de base de données dans SQL Server dans cet article.

Lisez les articles précédents avant ce post.

Instantanés de la base de données SQL Server -1

Instantanés de la base de données SQL Server -2

Instantanés de la base de données SQL Server -3

Cette erreur est très effrayante et constitue une perte financière pour la base de données de production.

Nous utiliserons la base de données Snapshot pour revenir de cette erreur. Nous utilisons la table AWBuildVersion de la base de données Snapshot pour créer la table AWBuildVersion dans la base de données AdventureWorks. Nous utiliserons la commande Select * into pour cela. La capture d'écran après l'exécution du script est la suivante. Comme indiqué par la ligne rouge, la table supprimée est renvoyée dans la base de données source avec ses données.

Faisons un autre exemple similaire en termes d'être plus compréhensible. Supprimons les données de n'importe quelle table et renvoyons-les à nouveau de la base de données Snapshot. Comme indiqué dans l'image 1.1 ci-dessous, la table BillOfMaterials au bas de la base de données ProductionWorks est supprimée de la base de données AdventureWorks. Lorsque nous sélectionnons le nombre de sélections en même temps, l'enregistrement 0 est interrogé, comme indiqué dans l'image ci-dessous.

Nous utilisons à nouveau la base de données Snapshot pour revenir de cette erreur. Comme dans 2.1 ci-dessus, nous procédons à l'insertion du même schéma et de la même table de la base de données Snapshot dans la table correspondante de la base de données source. De la même manière, le même nombre d'enregistrements de ligne est inséré comme indiqué dans l'image 2.2 lorsque nous avons interrogé Select Count.

Enfin, faisons une erreur d'administrateur à partir de la base de données Snapshot, et cette fois nous allons restaurer la base de données source à partir de la base de données Snaphot. Ainsi, l'instantané de la base de données AdventureWorks revient à l'état initial. Je supprime les données de la table BillOfMaterials de Production Schema et en même temps j'ai supprimé la table SalesOrderDetail sous le schéma Sales. La capture d'écran est la suivante. Comme les données de la table BillOfMaterials au bas du schéma de production ont été supprimées, la table SalesOrderDetail n'apparaît pas car elle est supprimée.

Nous avons fait beaucoup de changements dans la base de données source, nous avons dit que ces changements sont toujours écrits dans Sparse File. L'image suivante montre la version finale du fichier Sparse. Alors que la taille d'origine 1 n'a pas changé, le numéro de fichier 2 d'origine a augmenté. La raison en est, comme je l'ai dit, que toutes les modifications apportées à la base de données source sont écrites ici. Ainsi, lorsque l'utilisateur lit les données modifiées, il lit à partir du fichier fragmenté. Si l'utilisateur interroge des données inchangées, elles seront lues à partir de la base de données source.

Revenons maintenant à Snapshot.

SQL Server 2017 Database Snaphot Restore code

restore database  AdventureWorks from database_snapshot='AdventureWorksSnaphot'

Nous pouvons interroger toutes les tables supprimées et supprimées après la restauration de l'instantané, comme illustré ci-dessus.