La gestion de vos fichiers peut être une opération entièrement en ligne. Vous disposez de deux chemins, selon votre besoin de conserver vos informations de journal à des fins de récupération:
Récupération ponctuelle non nécessaire
- Convertissez la base de données en
SIMPLE
récupération. Exécutez un point de contrôle pour écrire des transactions sur le disque.
- Aplatissez la bûche.
- Redimensionnez le journal à la taille appropriée.
Je recommande également de définir un montant de croissance fixe et une croissance illimitée (afin de mieux gérer votre journal). Remarque, le montant de la croissance fixe dépend beaucoup du montant, je recommanderais d'utiliser initialement 1 à 2 Go en fonction de la croissance que le journal pourrait s'attendre à voir. Idéalement, votre journal ne grandira pas beaucoup, donc cela ne devrait pas avoir beaucoup d'impact. Si votre journal augmente régulièrement, vous devrez peut-être revoir votre taille.
Accompli en utilisant:
ALTER DATABASE [foo]
SET RECOVERY SIMPLE;
CHECKPOINT;
DBCC SHRINKFILE (foo_log,0);
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
--Optional if you want the database in full recovery mode
--for point in time recovery going forward
ALTER DATABASE [foo]
SET RECOVERY FULL;
Récupération ponctuelle nécessaire
Le plus gros blocage sera que vous ne pouvez pas réduire votre fichier journal au-delà de votre segment VLF actuellement actif. Pour voir cela, vous pouvez utiliser DBCC LOGINFO
dans le contexte de la base de données. Tout segment avec un statut = 2 est actif. Pour effacer les segments actifs, vous devrez exécuter une sauvegarde du journal des transactions lorsqu'aucune transaction n'est actuellement active dans ce segment. Vos étapes sont:
- Exécutez une sauvegarde du journal des transactions.
- Réduisez votre fichier. (Idéalement aplatir, mais si votre base de données est active, cela sera difficile à faire).
- Répétez les étapes 1 et 2 jusqu'à ce que votre journal soit d'une taille appropriée, idéalement aussi petite que possible.
- Redimensionnez le journal à la taille appropriée.
Accompli en utilisant:
BACKUP LOG [foo] TO DISK='<Location of t-log backup>';
DBCC SHRINKFILE (foo_log,0);
--Repeat the above until your log file is small "enough"
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
Quelques ressources supplémentaires pour comprendre ce qui se passe ici: