Il s'agit d'une question de suivi d' une question précédente sur la raison pour laquelle je n'ai pas pu réduire le fichier journal sur la base de données principale.
Pour faire court, j'ai configuré la mise en miroir de la base de données, mais j'ai oublié de m'assurer que le travail qui a sauvegardé le journal des transactions était à nouveau en cours d'exécution et que le journal des transactions était passé à près de 60 Go.
Depuis la mise en miroir, cette augmentation de taille a été dupliquée sur le serveur en miroir, et a finalement pris tout l'espace disque et rendu la base de données miroir inutilisable.
Par cette question sur la maintenance du journal des transactions sur une base de données miroir, vous ne pouvez pas sauvegarder le journal sur le miroir, mais lorsqu'on lui a demandé spécifiquement dans les commentaires sur la façon de réduire un fichier journal envahi par une base de données miroir, un commentaire a été laissé qui
Une façon de le faire serait de basculer vers la base de données en miroir et de procéder à la réduction. Testez-le soigneusement dans un environnement hors production pour vous assurer qu'il a le comportement que vous souhaitez / attendez.
Cela semble suggérer qu'il pourrait y avoir d'autres façons de réduire le fichier journal sur un miroir, et cette méthode n'est pas nécessairement sûre à faire sur un serveur de production.
Existe-t-il un moyen de réduire en toute sécurité le fichier journal des transactions sur un miroir de base de données?
Réponses:
La
DBCC SHRINKFILE
commande sera mise en miroir du principal vers la base de données en miroir. Voici une preuve.Créez un exemple de base de données sur le principal:
Créez la même base de données à partir d'une sauvegarde avec
NORECOVERY
:Configurez votre session de mise en miroir comme vous le souhaitez.
Sur la base de données principale, regardez les tailles de fichier de base de données:
Mon jeu de résultats ressemble à ceci:
Sur la base de données miroir , créez un instantané et regardez les mêmes informations:
Mon jeu de résultats ressemble à ceci:
Développez maintenant le fichier journal des transactions sur la base de données principale (je l'ai porté à 1 Go):
En regardant la taille du journal des transactions de la base de données principale , nous voyons maintenant la taille ajustée:
Mon jeu de résultats ressemble à ceci:
Créez un autre instantané sur la base de données en miroir et examinez la taille du fichier journal des transactions:
Mon jeu de résultats ressemble à ceci:
Maintenant, faites le
DBCC SHRINKFILE
sur le principal :Mon jeu de résultats est le suivant:
Créez un troisième et dernier instantané sur la base de données en miroir et regardez la taille:
Et j'obtiens l'ensemble de résultats suivant:
Donc, comme vous pouvez le voir ici, la
DBCC SHRINKFILE
commande est en fait reflétée dans la base de données miroir.la source
DBCC SHRINKFILE
. Quant à savoir si vous pouvez corriger votre session miroir sans supprimer la mise en miroir sur cette base de données, il y a un peu plus d'investigation qui devrait y avoir lieu. Il semble qu'il ait été suspendu en raison de la taille du fichier. Avez-vous essayé de reprendre le partenaire?