2008-09-03 9 views
5

Je suis en phase de développement sur une application Web intégrée dans VS2008. J'ai à la fois un PC de bureau (où la plupart du travail est fait) et un ordinateur portable (pour la portabilité occasionnelle) sur lequel j'utilise AnkhSVN pour garder le code du projet synchronisé. Quelle est la meilleure façon de synchroniser également ma base de données de développement (SQL Server Express)?Synchronisation des bases de développement dans plusieurs environnements

J'ai un projet de base de données VS dans SVN contenant des scripts de création que je recrée lorsque le schéma change. L'idée originale était de recréer la base de données chaque fois que quelque chose changeait, mais cela devenait rapidement une douleur. En outre, je perdrais toutes les lignes d'échantillons que j'ai saisies pour m'assurer que les données sont affichées correctement. J'envisage de placer les fichiers .MDF et .LDF sous le contrôle de la source, mais je doute que SQL Server Express le gère correctement si je fais une mise à jour SVN et que les fichiers sont retirés de dessous, remplacés par des copies plus récentes . Coller quelques gros fichiers binaires dans le contrôle de la source ne semble pas non plus une solution élégante, même s'il ne s'agit que d'une base de données de développement jetable. Aucune suggestion?

Répondre

3

En plus de votre script CREATE de base de données, pourquoi ne conservez-vous pas également un fichier de données ou un exemple de script de données par défaut?

C'est une approche que nous avons adoptée pour les versions incrémentielles d'une application que nous maintenons depuis plus de 2 ans maintenant, et cela fonctionne très bien. Avoir un script de données par défaut permet également à vos testeurs de QA d'être en mesure de recréer des bogues en utilisant les données que vous avez également?

Vous pouvez également jeter un oeil à une question que je posté il y a quelque temps:

Best tool for auto-generating SQL change scripts

3

Vous pouvez stocker la sauvegarde (fichier .bak) de votre base de données plutôt que les fichiers .MDF & .LDF.
Vous pouvez restaurer votre base de données facilement en utilisant un script suivant:

use master 
go 

if exists (select * from master.dbo.sysdatabases where name = 'your_db') 
begin 
    alter database your_db set SINGLE_USER with rollback IMMEDIATE 
    drop database your_db 
end 

restore database your_db 
from disk = 'path\to\your\bak\file' 
with move 'Name of dat file' to 'path\to\mdf\file', 
    move 'Name of log file' to 'path\to\ldf\file' 
go 

Vous pouvez mettre le script mentionné ci-dessus dans un fichier texte restore.sql et l'appeler à partir du fichier batch en utilisant la commande suivante:

osql -E -i restore.sql 

De cette façon vous pouvez créer un fichier de script pour automatiser processus:

  • Obtenir la dernière sauvegarde db à partir du dépôt SVN ou tout stora approprié ge
  • Restaurer db courant en utilisant le fichier bak
7

Il y a évidemment un certain nombre de façons d'aborder cela, donc je vais énumérer un certain nombre de liens qui devraient fournir une meilleure base pour construire. Ce sont les liens que j'ai référencés dans le passé quand j'essayais d'amener les autres dans le train en marche.

Cependant, avec tout cela dit, si vous ne pensez pas t chapeau que vous êtes engagé assez pour mettre en œuvre un certain type de contrôle de version (manuel ou semi-automatique), je vous recommande fortement consultez les liens suivants:

vache Saint ! Parlez de rendre la vie facile! Un projet m'avait échappé et j'avais plusieurs personnes qui faisaient des changements de schéma et devaient synchroniser plusieurs environnements.Il était trivial de pointer les produits Red Gate sur deux bases de données et de voir les différences, puis de les synchroniser.

1

Nous utilisons un combo de, prenant des sauvegardes des environnements plus élevés vers le bas.
En plus d'utiliser ApexSql pour gérer la configuration initiale du schéma.
Récemment, en utilisant des migrations Subsonic, comme un code codé, contrôlé par la source, exécuté par CI pour obtenir des scripts de changement, il y a aussi le projet "tarantino" développé par headspring hors du Texas.

La plupart de ces approches, en particulier la dernière, peuvent être utilisées en toute sécurité sur la plupart des données de test. J'aime particulièrement les 2 derniers automatisés parce que je peux faire un changement, et la prochaine fois que quelqu'un obtient le dernier, ils exécutent juste le "updater" et ils sont conduits au plus tard.

Questions connexes