Il est parfois nécessaire de déplacer certains fichiers journaux d’une base de données. Les causes peuvent être multiples : changement dans l’architecture du sous-système disque, espace disque insuffisant . Cette opération est, dans un cas classique, relativement simple mais lorsqu’il s’agit d’une topologie log-shipping cela peut compliquer un peu les choses. Nous verrons dans ce billet comment déplacer les fichiers journaux d’une base de données selon si l’on se trouve sur le primaire ou le secondaire.
Tout d’abord il est important de préciser qu’il n’est absolument pas nécessaire de reconstruire une configuration log-shipping lorsqu’il s’agit de déplacer des fichiers de bases de données en général. En effet, le log-shipping est indépendant de la topologie des fichiers de bases de données. Dans ce billet nous prendrons simplement l’exemple des fichiers journaux d’une base mais la manipulation reste la même pour n’importe quel type de fichier.
1- Dans le cas d’une base sur le primaire les étapes à suivre sont les suivantes :
- Arrêter le job de sauvegarde du journal de la base de données concernée
- Détacher la base de données avec la procédure stockée système sp_detach
- Déplacer le(s) fichier(s) journaux concerné(s)
- Rattacher la base de données concernée avec la procédure stockée système sp_attach
- Réactiver le job de sauvegarde du journal de la base de données concernée
2- Dans le cas d’une base de données sur le secondaire, la manipulation est un peu différente car la base de données est dans un mode de fonctionnement différent (NORECOVEY ou STANDBY). Par conséquent, on ne peut pas utiliser les procédures stockées systèmes permettant de détacher et de rattacher une base de données. Les étapes à suivre dans ce cas sont les suivantes :
- Si la base de données est en mode de fonctionnement STANDBY, il faut la passer en mode NORECOVERY.
- Arrêter les jobs de copie et de restauration des fichiers journaux pour la base de données concernée
- Utiliser la commande ALTER DATABASE MODIFY FILE (NAME = logicalName, FILENAME = ‘filePath’)
- Arrêter le secondaire (instance)
- Déplacer les fichiers journaux concernés dans le chemin défini avec la commande ALTER DATABASE
- Redémarrer le secondaire (instance)
- Vérifier les nouveaux emplacements de fichier à l’aide de la DMV sys.master_files
- Si la base de données était en mode de fonctionnement STANDBY, il faudra exécuter la commande RESTORE DATABASE avec l’option STANDBY
- Réactiver les jobs de copie et de restauration des journaux de la base de données concernée
Bon déplacement de fichiers !!
David BARBARIN (Mikedavem)
Elève ingénieur CNAM LYON
MVP SQL Server