J'ai une base de données avec près de 1 To de FILESTREAM
données que je n'ai pas besoin de sauvegarder (si les données étaient supprimées, elles seraient recréées automatiquement en quelques heures, donc ce n'est tout simplement pas important). La plupart des données sont modifiées tous les deux jours, donc les sauvegardes différentielles n'aideraient pas vraiment à réduire la taille.
J'ai eu les sauvegardes fonctionnant de la façon dont j'avais besoin en définissant le mode de récupération sur Full
, en créant un séparé FILEGROUP
pour le FILESTREAM
, puis en prenant des sauvegardes uniquement du "principal" FILEGROUP
. Le problème que cela a causé était que le fichier journal (qui est également sauvegardé) est maintenant inutilement volumineux car il inclut les FILESTREAM
données.
SIMPLE
Le mode de récupération m'enlève ma capacité à faire des sauvegardes de FILEGROUP
s spécifiques , donc je ne pense pas que ce sera une option non plus.
Mes pensées sont de simplement déplacer les FILESTREAM
données vers une base de données distincte, mais maintenant je perds l'intégrité référentielle et hérite sûrement d'une foule d'autres problèmes également.
Existe-t-il un moyen de créer des sauvegardes partielles en Simple
mode de récupération (sans définir la FILESTREAM
table en lecture seule)? Sinon, existe-t-il d'autres solutions sensées à mon problème?
la source
Une solution pour une base de données définie sur le mode de récupération SIMPLE consiste à avoir les données FILESTREAM dans un groupe de fichiers en lecture seule (ce qui n'est pas votre option idéale), puis à sauvegarder uniquement les groupes de fichiers en lecture / écriture avec DIFFÉRENTIEL comme ceci:
Il obtiendra toutes les données qui ont changé dans tous les groupes de fichiers en lecture / écriture. C'est le plus simple, prêt à l'emploi, que vous pouvez garder des sauvegardes partielles gérables sans obtenir les données FILESTREAM. Il faudrait toutefois que le processus de chargement des données susmentionnées doive modifier le groupe de fichiers à lire / écrire, charger toutes les données supplémentaires, puis définir à nouveau en lecture seule. Certainement pas idéal.
la source
Je me sens sale en fournissant cela en option, mais si vous choisissez de séparer les données FILESTREAM dans sa propre base de données, vous pouvez maintenir le RI entre les tables dans les dbs séparés au moyen de déclencheurs :
Attendez-vous à ce que les problèmes de performance et une partie de votre cuir chevelu deviennent glabres après avoir retiré les touffes de votre fourrure de tête de frustration, mais théoriquement, vous pourriez le faire. Je ne recommande pas cette approche à quelque niveau que ce soit, au lieu de cela, je vous suggère fortement d'augmenter la fréquence de vos sauvegardes tlog et / ou de basculer vers le modèle de récupération enregistré en masse et de voir combien d'espace vous économise, MAIS c'est une solution possible. Vraiment, il faudrait peser l'avantage de séparer ces données et de gérer une conception de base de données frankensteinienne, mais c'est une option.
... Je dois aller prendre une douche maintenant ...
la source
Je sais que cette question a déjà reçu une réponse, mais il existe une autre solution qui pourrait aider les autres. Récemment, j'ai appris du blog de Brent Ozar qu'il existe une option pour supprimer immédiatement vos sauvegardes de journaux:
Vous pouvez donc laisser votre base de données en
Full
mode de récupération et faire des sauvegardes de groupes de fichiers. Lorsque votre journal des transactions devient trop volumineux, lancez simplement la commande de sauvegarde du journal et vous avez terminé.la source