Question

Je suis au début du développement d'une application Web construite dans VS2008.J'ai à la fois un ordinateur de bureau (sur lequel la plupart du travail est effectué) et un ordinateur portable (pour une portabilité occasionnelle) sur lequel j'utilise AnkhSVN pour synchroniser le code du projet.Quelle est la meilleure façon de synchroniser également ma base de données de développement (SQL Server Express) ?

J'ai un projet de base de données VS dans SVN contenant des scripts de création que je génère à nouveau 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 devient rapidement pénible.De plus, je perdrais tous les exemples de lignes que j'ai saisies pour m'assurer que les données s'affichent correctement.

J'envisage de placer les fichiers .MDF et .LDF sous contrôle de source, mais je doute que SQL Server Express le gère correctement si j'effectue une mise à jour SVN et que les fichiers sont retirés de dessous, remplacés par des copies plus récentes.Insérer quelques gros fichiers binaires dans le contrôle de source ne semble pas non plus être une solution élégante, même s'il ne s'agit que d'une base de données de développement jetable.Aucune suggestion?

Était-ce utile?

La solution

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

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 elle fonctionne très bien.Avoir un script de données par défaut permet également à vos testeurs QA de pouvoir recréer des bugs en utilisant les données dont vous disposez également ?

Vous voudrez peut-être également jeter un œil à une question que j'ai postée il y a quelque temps :

Meilleur outil pour générer automatiquement des scripts de modification SQL

Autres conseils

Il existe évidemment plusieurs façons d'aborder cela, je vais donc énumérer un certain nombre de liens qui devraient fournir une meilleure base sur laquelle s'appuyer.Ce sont les liens auxquels j’ai fait référence dans le passé lorsque j’essayais de faire prendre le train aux autres.

Cependant, cela dit, si vous ne pensez pas être suffisamment engagé pour implémenter un certain type de contrôle de version (manuel ou semi-automatisé), alors je vous recommande FORTEMENT de consulter ce qui suit :

Sainte vache !Parlez de rendre la vie facile!J'avais un projet qui m'échappait et j'avais plusieurs personnes pour apporter des modifications au schéma et je devais garder plusieurs environnements synchronisés.Il était simple de pointer les produits Red Gate vers deux bases de données, de voir les différences, puis de les synchroniser.

Vous pouvez stocker une sauvegarde (fichier .bak) de votre base de données plutôt que des fichiers .MDF et .LDF.
Vous pouvez facilement restaurer votre base de données à l'aide du 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 placer le script mentionné ci-dessus dans le fichier texte restaurer.sql et l'appeler à partir du fichier batch à l'aide de la commande suivante :

osql -E -i restore.sql

De cette façon, vous pouvez créer un fichier de script pour automatiser l'ensemble du processus :

  • Obtenez la dernière sauvegarde DB du référentiel SVN ou tout stockage approprié
  • Restaurer la base de données actuelle à l'aide du fichier bak

Nous utilisons une combinaison de mesures permettant de supprimer les sauvegardes des environnements supérieurs.
En plus d'utiliser ApexSql pour gérer la configuration initiale du schéma.
J'ai récemment utilisé les migrations Subsonic, en tant que moyen codé, contrôlé par la source et exécuté via CI pour obtenir des scripts de modification, il existe également un projet "tarantino" développé par Headspring au Texas.

La plupart de ces approches, en particulier la dernière, peuvent être utilisées en toute sécurité en plus de la plupart des données de test.J'aime particulièrement les 2 derniers automatisés parce que je peux apporter une modification, et la prochaine fois que quelqu'un obtient la dernière version, il exécute simplement le "programme de mise à jour" et il est dirigé vers la dernière version.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top