web-dev-qa-db-fra.com

Déplacer le fichier journal sans mettre la base de données hors ligne

Je dois déplacer un fichier journal de base de données vers une nouvelle partition sans mettre la base de données hors ligne.

La manière normale de procéder consiste à détacher la base de données, à déplacer le fichier journal, puis à rattacher la base de données.

Est-il possible de le faire sans mettre la base de données elle-même hors ligne et si oui, comment?

14
NotMe

Il n'y a aucun moyen de le faire avec une base de données en ligne.

Lorsque vous déplacez un fichier de base de données (ALTER DATABASE ... MODIFY FILE), vous obtenez même le message suivant:

Le fichier "YourFile" a été modifié dans le catalogue système. Le nouveau chemin sera utilisé au prochain démarrage de la base de données .


La manière normale de procéder consiste à détacher la base de données, à déplacer le fichier journal, puis à rattacher la base de données.

Ce n'est pas la façon "normale" ou acceptée de le faire. Pour déplacer des fichiers de base de données, je fais ce qui suit:

  1. Exécutez une commande ALTER DATABASE pour modifier l'emplacement du ou des fichiers
  2. Mettre la base de données hors ligne
  3. Déplacer physiquement le (s) fichier (s) vers le nouvel emplacement spécifié à l'étape 1
  4. Mettre la base de données en ligne

Voir cette référence sur TechNet: Déplacer les bases de données utilisateur

16
Thomas Stringer

Selon la référence sur TechNet Déplacer les bases de données utilisateur de réponse de Thomas Stringer , si vous souhaitez déplacer les fichiers sans arrêter l'intégralité de l'instance SQL Server (en suivant la "Procédure de relocalisation planifiée" ), la commande doit être:

ALTER DATABASE database_name SET OFFLINE;
... move the file(s) to new location
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
ALTER DATABASE database_name SET ONLINE;

Notez d'abord le OFFLINE; déplacez ensuite les fichiers et informez SQL Server du ou des nouveaux emplacements.

Si vous devez supprimer l'intégralité de l'instance SQL Server (voir la procédure de "Relocalisation pour la maintenance planifiée du disque"), il est préférable de modifier d'abord les emplacements des fichiers afin que, lorsque l'instance est redémarrée, il n'y ait aucun problème à trouver les fichiers. dans les nouveaux emplacements.

3
DocOc

Je sais que c'est une vieille question, mais ne pouvez-vous pas simplement ajouter un deuxième fichier journal (qui est ensuite utilisé par la base de données au lieu de l'original) dans le nouvel emplacement, puis réduire/supprimer l'original?

1
ibmdba