Quelle est la manière la plus efficace de dupliquer une instance sur SQL 2008?

14

Nous avons une simple instance de base de données avec juste assez de données dans les bases de données pour la garder utile, et nous pouvons l'utiliser à des fins de démonstration, et je veux en mettre une copie sur mon ordinateur portable afin de pouvoir l'utiliser pour le travail de développement lorsque Je ne suis pas au bureau. (Les instances de base de données de développement standard sont d'environ 150 Go, cette instance est de 3 Go)

Quelle est la méthode la plus reproductible / scriptable pour recréer l'instance sur mon ordinateur portable? Je suis sûr que je vais devoir réexécuter le programme d'installation pour SqlServer2008 et configurer une instance, mais après cela ... je pense que je veux pouvoir supprimer mes anciennes bases de données tous les mois environ et copiez toutes les nouvelles choses sur mon ordinateur portable, car mon instance ne changera ni sur le système de démonstration ni sur l'ordinateur portable. Mais les bases de données elles-mêmes seront mises à jour, avec des rafraîchissements sur les sprocs et similaires.

J'ai envisagé de créer des scripts pour tous les "fichiers de base de données de dépôt; ajouter des fichiers de base de données {chemin}" et de les conserver dans un fichier de commandes exécutable d'une certaine sorte, puis je peux "supprimer, supprimer, copier, ajouter", mais je me suis demandé s'il y avait était un meilleur moyen que juste xcopy et batch?

J'essaie de le faire à bas prix (n'essayons-nous pas toujours de faire les choses à bas prix), donc je ne suis pas particulièrement intéressé par les produits RedGate ou similaires. Je veux quelque chose que je peux maintenir facilement dans un éditeur de texte.

jcolebrand
la source
s'agit-il d'une seule base de données ou d'une instance de serveur sql avec plus d'une base de données? Je suppose que vous avez un serveur SQL installé sur votre ordinateur portable et votre machine de développement et que vous avez une base de données, dans ce cas, vous pouvez utiliser la sauvegarde et la restauration. Sauvegardez la machine de développement db, copiez-la sur un ordinateur portable et restaurez, vice versa ... est-ce que cela a du sens?
CoderHawk
est-ce SQL Server Express Edition? ou standard? SSIS est une bonne option pour des scénarios comme celui-ci, malheureusement il n'est pas disponible dans les éditions Express et Web.
CoderHawk
Désolé @Sandy ~ C'est SQL Dev 2008. J'ai accès à presque tout ce que vous pouvez deviner à cause de MSDN.
jcolebrand
Le titre de la question est peu confus "Quelle est la façon la plus efficace de dupliquer une | instance | sur SQL 2008?" - instance ou base de données?
CoderHawk
@Sandy ~ "Instance" ... en effet, je veux le tout.
jcolebrand

Réponses:

4

Vous avez mis le doigt sur la tête: copiez les fichiers. Je l'ai utilisé à bon escient.

Je dirais que vous devez définir «bon marché» pour inclure un investissement de temps pour préparer une solution qui n'implique pas xcopy

gbn
la source
3

Umm, je ne sais pas si cela aide, mais nous utilisons un ensemble de scripts pour "nettoyer" une base de données de production et la préparer à un abus de développement. Nous prenons toutes les grandes tables qui ont une colonne datetime et nous reconstruisons la table avec seulement la dernière année de données. D'une base de données complète d'environ 200 Go, nous arrivons à environ 40 Go de base de données pour le développement. Nous générons principalement des scripts dynamiques pour créer des fichiers bcp pour chaque table, recréer la table (y compris toutes les contraintes associées), puis insérer en masse uniquement les données de l'année dernière.

Peut-être qu'il existe des outils pour le faire, mais notre boutique est bon marché :-).

Marian
la source
Oui, nous empruntons la voie BCP pour beaucoup de choses, donc je comprends ce que vous dites, et tronquer certains serait bien, mais j'ai déjà environ 3 Go de données dont j'ai besoin, donc je ne suis pas vraiment cherche à en ajouter plus. Je veux juste copier l'instance entière et comprendre qu'il existe un moyen de continuer à le faire à plusieurs reprises. Mais sinon, je pense que je suis sur le même sujet que ce dont vous parlez, juste un petit sacle.
jcolebrand
Répétez donc toutes les étapes par lots :). SQL a des paramètres de batch et vous pouvez combiner des fichiers batch avec des fichiers sql et obtenir un joli package. J'ai créé un package personnalisé d'expédition de journaux (dumb) qui fonctionne sur différents domaines et toute la préparation de la base de données se fait dans des fichiers cmd / sql. Vous pouvez créer une instance nommée uniquement pour votre usage et démarrer / arrêter le service, restaurer la base de données, la nettoyer, la préparer, la sauvegarder et l'envoyer dans un dossier spécifique. Peut-être que certains travaux pourraient être effectués plus rapidement dans PowerShell .. mais je ne le connais pas.
Marian
oui c'est l'idée;)
jcolebrand
@jcolebrand - Peut-être qu'un outil comme Norton Ghost ou Clonezilla pourrait aider? Vous en auriez besoin pour copier les dossiers de sauvegarde de prod quelque part sur votre terrain de jeu, puis là-bas, faites tout le plaisir (restore..trim ... etc). Vous n'auriez pas besoin de scripter les actions de copie et vous ne gérerez que la partie sql :).
Marian
oooooh ça pourrait être utile. De nouvelles pistes de réflexion.
jcolebrand
0

La façon la plus simple de mettre à niveau votre schéma pour qu'il corresponde à ces systèmes consiste à utiliser un outil comme Red Gate SQL Compare ou Embarcadero DB Change Manager.

Il existe un tas d'autres outils disponibles qui peuvent probablement faire la même comparaison de schéma et même vous fournir le DDL pour mettre à niveau votre schéma de base de données.

Les options

  1. Utilisez un outil tiers
  2. Sauvegarde et restauration de la base de données - vous devrez peut-être restaurer sur une instance intermédiaire pour supprimer les données (en raison des restrictions d'espace sur l'ordinateur portable)
  3. Écrivez votre propre scripteur de base de données à l'aide de SMO et créez simplement un travail qui écrit les objets, puis recréez votre schéma chaque mois / chaque fois que vous en avez besoin, puis utilisez SSIS pour charger des données dans les nouveaux objets.
johndacostaa
la source
Comment fonctionne la «sauvegarde et restauration de la base de données» pour l'instance? Je souhaite conserver les données dans ces tableaux car il s'agit d'un ensemble de données complet, juste plus petit que la production.
jcolebrand
SSIS me laisserait probablement faire ce dont j'ai besoin, mais je n'en sais pas assez à ce sujet. Je devrais enquêter plus avant.
jcolebrand
@jcolebrand - J'ai suggéré une restauration de sauvegarde, simplement en tenant compte de la façon de déplacer les données de votre système en direct vers votre système de démonstration lorsque vous faites des choses telles que l'ajout de colonnes. Cela présente cependant l'inconvénient de nécessiter une restauration puis une purge des données avant une autre sauvegarde et restauration / déconnexion et attachement.
johndacostaa