2010-05-24 4 views
6

J'ai un site de démonstration où tout le monde peut se connecter et tester une interface de gestion.Meilleure façon de restaurer automatiquement une base de données toutes les heures

Chaque heure, je voudrais vider toutes les données dans la base de données SQL 2008 et le restaurer à partir de l'original. Red Gate Software a quelques outils impressionnants pour cela, mais ils sont au-delà de mon budget en ce moment. Puis-je simplement faire une copie de sauvegarde du fichier de données de la base de données, puis avoir une application de console C# qui supprime et copie sur l'original. Ensuite, je peux avoir une tâche de programmation Windows pour exécuter le fichier .exe toutes les heures.

C'est simple et gratuit ... cela fonctionnerait-il?

J'utilise SQL Server 2008 Web Edition R2

Je comprends que le logiciel Red Gate est techniquement mieux parce que je peux le mettre à analyser la db et seulement mettre à jour les enregistrements qui ont été modifiés, et l'approche que j'ai ci-dessus est comme un "marteau".

+0

Vous ne savez pas si votre version prend en charge cette fonctionnalité, mais vous pouvez également consulter les instantanés. Vous pouvez créer un instantané de votre base de données et le restaurer régulièrement. La base de données doit être en mode mono-utilisateur lorsque vous le restaurez. – flup

Répondre

9

C'est simple et gratuit ... cela fonctionnerait-il?

Oui, vous pouvez le faire comme ça, rappelez-vous juste de mettre le DB en mode utilisateur unique avant de le restaurer, sinon votre restauration échouera

exemple de script

USE master 
GO 

ALTER DATABASE YourDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 



RESTORE DATABASE YourDB FROM DISK=N'D:\Backup\Pristine.BAK' WITH FILE = 1, 
NOUNLOAD, REPLACE, STATS = 10 
GO 

ALTER DATABASE YourDB SET MULTI_USER 
GO 
+0

Génial, je vais juste définir un travail planifié comme un travail en SQL pour l'exécuter toutes les heures. Merci! – aron

1

Ceci peut être scripté en utilisant SQL et planifié comme un travail sur le serveur à exécuter une fois par heure. Puisque vous avez une copie de sauvegarde, je suppose, c'est vierge, alors tout ce que vous devez faire est de mettre la base de données hors ligne, restaurer à partir de la sauvegarde, remettre la base de données en ligne. Tout cela peut être scripté. Avez-vous besoin des scripts?

+0

Salut websch01ar, oui, s'il vous plaît écrivez-les moi. Merci aron {at} uswebpro (période) com – aron

0

Vous pourriez Détachez également la base de données, écrasez les données et les fichiers journaux de votre modèle (précédemment détachés), puis réattachez-les.

+0

droite, mais ce n'est pas automatisé – aron

+0

@aron Il peut être automatisé de la même manière qu'une restauration. Vous pouvez utiliser un package SSIS planifié, un script utilisant xp_cmdshell ou un script de commande Windows externe avec sqlcmd pour les opérations SQL. –