J'exécute une base de données simple sur SQL Server 2012 Express.
Aujourd'hui encore, lorsque je sauvegarde la base de données, la taille du fichier .bak
Double à ce qu'elle était de la sauvegarde précédente quelques minutes auparavant. J'ai effectué plusieurs sauvegardes aujourd'hui (via SQL Server Management Studio -> type de sauvegarde: complète), et avec chacune, le fichier .bak
Continue de doubler.
Dans SQL Server Mgmt Studio, lorsque je clique avec le bouton droit sur ma base de données -> 'Rapports' -> 'Événements de sauvegarde et de restauration' -> développez 'Opérations de sauvegarde réussies':
Le rapport ici montre que la dernière taille de sauvegarde a été enregistrée en tant que 55 Mo, mais lorsque je vais dans le fichier .bak
Réel, il s'agit de 260 Mo. Chaque autre sauvegarde aujourd'hui a également été enregistrée en tant que taille de 55 Mo, tandis que leurs fichiers .bak
Correspondants sont plusieurs fois plus volumineux (et augmentent à chaque opération de sauvegarde).
Qu'est-ce qui pourrait mal tourner? Je n'ai apporté aucune modification à la base de données depuis que cela a commencé.
Je suppose que vous sauvegardez à chaque fois le même fichier. Il existe une option pour INIT
ou NOINIT
lorsque vous exécutez une sauvegarde. NOINIT
(qui est la valeur par défaut) lui indique d'ajouter simplement une sauvegarde supplémentaire au fichier.
Par BOL:
{NOINIT | INIT}
Contrôle si l'opération de sauvegarde ajoute ou remplace les jeux de sauvegarde existants sur le support de sauvegarde. La valeur par défaut consiste à ajouter le jeu de sauvegarde le plus récent sur le support (NOINIT).
Ainsi, chaque fois que vous exécutez votre sauvegarde de 55 Mo, le fichier augmente d'environ 55 Mo.
Si vous incluez la clause INIT
dans votre commande de sauvegarde, elle remplacera la sauvegarde existante à chaque fois.
L'autre option est bien sûr d'exécuter vos sauvegardes dans de nouveaux fichiers à chaque fois et de nettoyer les anciens fichiers. C'est souvent une bonne idée dans le cas où l'une des sauvegardes actuelles est défectueuse, ou si vous devez récupérer dans l'historique.
Si vous le faites directement dans SQL, n'utilisez pas l'assistant SQL Server Management Studio. Vous devez spécifier "NOINT" ou "INIT" lors de la sauvegarde pour dire ajouter au fichier ou l'écraser respectivement.
Voici le SQL pour ça
BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT