Réduire la taille de la sauvegarde SQL?

J'utilise SQL Express 2005 et je sauvegarde tous les DB tous les soirs. J'ai remarqué qu'une DB devenait de plus en plus grande. J'ai regardé la DB et ne vois pas pourquoi il devient si grand! Je me demandais si c'est quelque chose à voir avec le file journal?

Vous cherchez des conseils sur la façon de savoir pourquoi il devient si grand quand il n'y a pas autant de données – Comment optimiser / réduire la taille?

Plusieurs choses à vérifier:

  • votre database est-elle en mode de récupération "Simple"? Si c'est le cas, les inputs du journal des transactions seront beaucoup less nombreuses et la sauvegarde sera plus petite. Recommandé pour le développement – mais pas pour la production

  • s'il est en mode de récupération "FULL" – effectuez-vous régulièrement des sauvegardes du journal des transactions? Cela devrait limiter la croissance du journal des transactions et ainsi réduire la taille globale de la sauvegarde

  • avez-vous exécuté un DBCC SHRINKDATABASE(yourdatabasename) récemment? Cela peut aider

  • avez-vous des tables de log / logging dans votre database qui ne font que se remplir au fil du time? Pouvez-vous supprimer certaines de ces inputs?

Vous pouvez find le model de récupération de la database en allant dans l'Explorateur d'objects, cliquez droit sur votre database, select "properties", puis select l'onglet "Options" de la boîte de dialog:

text alt http://img.sqlde.com.com/sql/14dlkci.jpg

Marc

Si c'est la sauvegarde qui ne cesse de croître et de grandir, j'ai eu le même problème. Ce n'est pas un "problème" bien sûr, cela se produit par design – vous faites juste un "set" de sauvegarde qui s'étendra simplement jusqu'à ce que tout l'espace disponible soit pris.

Pour éviter cela, vous devez modifier les options d'écrasement. Dans le studio de gestion SQL, cliquez avec le button droit sur votre database, TÂCHES – SAUVEGARDE, puis dans la window de sauvegarde, vous verrez par défaut la page 'Général'. Changez cela en 'Options' et vous obtiendrez un set différent de choix.

L'option par défaut en haut est 'Ajouter au jeu de médias existant'. C'est ce qui fait que votre taille de sauvegarde augmente indéfiniment. Changez cette option pour "Remplacer tous les jeux de sauvegarde existants" et la sauvegarde sera toujours aussi importante qu'une sauvegarde complète, la dernière.

(Si vous avez un script SQL faisant ceci, tournez 'NOINIT' à 'INIT')

ATTENTION: Cela signifie que la sauvegarde ne sera que les derniers changements – si vous avez fait une erreur il y a trois jours mais que vous n'avez que la sauvegarde de la nuit dernière, vous êtes bourré. N'utilisez cette méthode que si vous avez un système de sauvegarde qui copy votre file .bak tous les jours vers un autre location, ce qui vous permet de revenir à l'un de ces files des jours précédents.

Il semble que vous utilisez le model de récupération FULL et que le journal des transactions ne cesse de croître en raison de l'absence de sauvegardes du journal des transactions.

Afin de rectifier cela, vous devez:

  • Effectuez une sauvegarde du journal des transactions. (Voir: BACKUP (TRANSACT-SQL) )
  • Réduisez le file journal des transactions à la taille appropriée à vos besoins. (Voir: Comment utiliser DBCC SHRINKFILE ……. )
  • Planifiez des sauvegardes régulières du journal des transactions en fonction des exigences de récupération de données.

Je suggère de lire la reference Microsoft suivante afin de vous assurer que vous gérez votre environnement de database de manière appropriée.

Modèles de récupération et gestion des journaux de transactions

Lecture supplémentaire: comment arrêter le journal des transactions d'une database SQL Server de croître de manière inattendue

Une astuce pour garder les bases de données petites serait au moment du design, utilisez le plus petit type de données que vous pouvez utiliser.

Par exemple vous pouvez avoir une table d'état, avez-vous vraiment besoin que l'index soit un int, quand un smallint ou tinyint le fera?

Nuit noire

Comme vous faites une sauvegarde complète quotidienne pour votre database, bien sûr, il deviendra si grand avec le time. donc vous devez mettre un plan pour vous-même. comme ce 1er jour: COMPLET / 2ème jour: DIFFERENTIEL / 3ème jour: DIFFERENTIEL / 4ème jour: DIFFERENTIEL / 5ème jour: DIFFERENTIEL

puis recommencez.

et quand vous restaurez votre database, si vous voulez restaurer le FULL, vous pouvez le faire facilement, mais lorsque vous avez besoin de restaurer la version DIFF, sauvegardez le premier FULL avant "NO-recovery" puis le DIFF dont vous avez besoin, et alors vous aurez vos données en toute security.

7zip votre file de sauvegarde pour l'archivage. J'ai récemment sauvegardé une database dans un file .bak de 178 Mo. Après l'avoir archivé dans un file .7z, il n'y avait que 16 Mo. http://www.7-zip.org/

Si vous avez besoin d'un outil d'archivage qui fonctionne avec des files de plus grande taille plus efficacement et plus rapidement que 7zip, je vous recommand de jeter un oeil à l'archivage LZ4. Je l'ai utilisé pour l'archivage des sauvegardes de files pour des années sans problèmes: http://lz4.github.io/lz4/