J'essaie de mettre en place un bac à sable pour nos développeurs de rapports dans leur travail. Mon plan actuel est de "réinitialiser" la base de données tous les soirs, mais je ne sais pas comment procéder. Ce que je veux dire par réinitialisation, c'est que je veux essentiellement supprimer toutes les tables utilisateur, vues, procédures stockées, etc. de toutes les bases de données sauf une sur le serveur. Je suppose qu'une autre option serait de supprimer et de recréer la base de données également, mais je suis presque sûr que cela signifierait également un accès à tous les groupes / personnes AD appropriés.
Je ne sais vraiment pas quelle serait la meilleure façon de procéder, alors j'espère que certains d'entre vous seront en mesure de fournir de bonnes idées / suggestions. Merci.
Pour plus de clarté, nous voulons essentiellement le faire avec notre base de données: http://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57 . La seule différence est que nous ne voulons pas recréer nos utilisateurs tous les jours.
Version: SQL Server 2008
Edition: Developer & Enterprise
la source
Étant donné que vous disposez d'une instance avec le moteur Enterprise Edition, j'utiliserais des instantanés de base de données .
Cela vous permettra d'annuler rapidement et facilement toutes les modifications apportées au cours de la journée, sans avoir à restaurer l'intégralité de la base de données.
Notez que si les développeurs prévoient d'effectuer des chargements de données volumineuses (on dirait qu'ils ne le sont pas?), Cela peut ne pas être approprié.
la source
Permettez-moi d'ajouter mes quelques cents pour voir si cela vous aide:
Dans ma société, nous avons la même situation que chaque soir, les développeurs veulent actualiser les bases de données qu'ils ont utilisées tout au long de la journée. Cela signifie que nous avons un ensemble de bases de données de Dev ne touchent pas - disons , un et un autre ensemble de bases de données qui sont la copie exacte A , mais ils font leurs trucs , mais veulent se rafraîchir tous les soirs - disons B . Cela se produit sur une seule instance de serveur.
Ce que j'ai mis en œuvre est un processus de restauration nocturne pour y parvenir. Voici comment cela fonctionne:
Créez une table de pilotes avec une liste de bases de données qui doivent être restaurées tous les soirs (comme vous l'avez mentionné).
Tableau: nightly_restore (OriginalDB, RestoreDB, backuplocation, enabled_YN, Results, PASS_FAIL)
Ensuite, vous pouvez écrire du TSQL qui parcourra la liste des bases de données du tableau ci-dessus, puis effectuer les restaurations et consigner tout succès ou échec dans les résultats et un bit 1 = réussite ou 0 = échec. Enabled_YN déterminera si cette base de données doit être restaurée ou non.
S'il y a plus de bases de données qui seront ajoutées à l'avenir, il vous suffit d'insérer celles-ci dans le tableau et de définir le bit enabled_YN sur Y (activé).
De cette façon, le processus sera plus flexible et plus facile à gérer.
Si vous voulez le SQL que j'ai écrit (je suis sûr, vous pourrez l'écrire :-)), envoyez-moi un ping ou ajoutez un commentaire et je le partagerai.
HTH
la source