Je travaille sur la configuration d'une copie de développement d'une base de données de production sur SQL Server 2008 R2 SP1. La base de données en direct est actuellement légèrement utilisée par deux développeurs pour les requêtes en lecture seule, mais la nouvelle base de données aura également des mises à jour.
Étant donné que la base de données est de 2,1 To et a pris au total 3 jours pour restaurer et mettre à jour la dernière version dont nous avons besoin pour les tests, mon plan initial était de créer un nouvel ensemble de fichiers de sauvegarde, puis de restaurer à partir de ces fichiers. Cela me permettrait de créer la copie de développement de la base de données sur la même instance SQL et la même machine, sans avoir à mettre la base de données actuelle hors ligne.
Cependant, afin d'économiser quelques jours, je pensais que ce pourrait être une bonne idée de simplement copier les fichiers de la base de données physique et de joindre la nouvelle copie de la base de données. Malheureusement, lorsque j'essaie de copier, j'obtiens une erreur faisant référence au verrou que SQL Server place sur ces fichiers.
Étant donné que je ne peux pas mettre la base de données hors ligne pour autre chose que le transfert des fichiers journaux (je peux terminer cela avant que les gens n'entrent le matin), existe-t-il un moyen de copier les fichiers de base de données en direct sans mettre la base de données dans un état hors ligne? Ou devrais-je attendre que les gens rentrent chez eux pour le faire?
la source
Non, vous devrez le mettre hors ligne pour copier les fichiers. Si votre base de données est divisée en fichiers / groupes de fichiers plus petits, cela pourrait aider à accélérer la restauration de la sauvegarde après l'avoir effectuée une fois (selon les données qui changent et les données nécessaires pour la copie de développement).
la source
J'ai vu les autres réponses et elles sont parfaitement logiques. Cependant, juste pour répondre à votre question, vous pouvez certainement copier des fichiers de base de données sans mettre la base de données hors ligne. Vous devrez utiliser la programmation SMO à cet effet. Vérifiez ceci: http://technet.microsoft.com/en-us/library/ms162175(v=sql.100).aspx
Veuillez noter que le lien fourni concerne les objets de programmation SMO généraux et non une réponse spécifique à cette question. Je ne l'ai pas encore fait, mais je vais bientôt essayer cela et je ferai savoir à tout le monde (si je me souviens bien) ce que je découvre.
la source
Oui.
Tout ce que vous avez à faire est de mettre la base de données en lecture seule:
Courir:
Copiez les fichiers de base de données - MDF, LDF, etc. vers leur nouvelle destination
Une fois la copie effectuée, vous pouvez détacher et rattacher le nouvel emplacement. Assurez-vous simplement de réinitialiser l'option en lecture seule et que vous utilisez le même compte d'utilisateur lors de la manipulation de ces fichiers. En outre, vous souhaiterez peut-être supprimer les anciens fichiers après le déplacement.
Une autre méthode
Une fois les fichiers copiés avec succès (étape 2 ci-dessus):
Vous pouvez définir la base de données sur:
Single_User
mode puis:Courir:
D:\
être le nouvel emplacementAssurez-vous que les fichiers de données dans le nouvel emplacement (
D:\
) ont un accès complet au compte de service qui exécute SQL Server.Redémarrez les services SQL
Courir:
Terminé!
la source