2010-09-24 3 views
3

Je suis venu avec 2 méthodes pour l'installation d'une base de données locale avec mon application WPF:outil ou meilleures pratiques pour l'installation d'une base de données avec une application cliente

  1. Créer une sauvegarde de la base de données, puis restaurer dans le programme d'installation via SMO
  2. Script la base de données installer et d'exécuter via ADO ou OSQL.EXE

Je suis tenu de fournir un chemin de mise à niveau, plutôt que de simplement laisser tomber les bases de données actuellement installées.

Existe-t-il d'autres méthodes plus flexibles? Y a-t-il de meilleurs/plus faciles à gérer les outils?

Répondre

1

Avez-vous regardé Sql Server Compact 3.5 SP1? L'installation est juste une question de copier les fichiers de base de données et de référencer les assemblages dans votre projet.

http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx

Que voulez-vous dire exactement avec un chemin de mise à niveau? Future versions plus récentes de la même application et base de données?

1

Les méthodes que j'ai vues qui prennent en charge les mises à niveau incrémentielles sont toutes quelque chose dans le sens de la maintenance d'un ensemble de «scripts de modification». Pour une installation initiale, vous pouvez restaurer une sauvegarde «propre» connue vers une nouvelle base de données ou vous pouvez utiliser un script SQL ou un outil ORM pour projeter un schéma dans DMBS. NHibernate a la capacité de générer un schéma en fonction d'une configuration de mappage, et vous pouvez définir ce comportement depuis l'intérieur d'un programme d'installation.

Une fois le DB installé, vous devez effectuer une mise à jour incrémentielle. Cela signifie généralement créer un script pour chaque modification de la base de données, et les inclure dans le package d'installation, avec un "runner" (un processus de traitement par lots simple) qui fera tourner les scripts et les exécutera sur la base de données. S'ils dépendent de l'ordre, assurez-vous que la structure de votre fichier en tient compte (mais il est généralement préférable de combiner deux scripts lorsque l'un doit être exécuté en premier). Assurez-vous également que le changement n'est pas "destructeur"; par exemple, l'ajout d'une colonne à une table ne peut pas impliquer de déposer et de recréer la table, même si ce serait moins de code. Le changement doit également être répétitif ou non-répétitif, car vous devrez probablement inclure le même script deux fois. Cela peut signifier garder une trace des noms des scripts que vous avez exécutés, et/ou en faisant en sorte que chaque script détecte qu'une modification qu'il a faite n'a pas déjà été faite avant de l'exécuter. Gardez à l'esprit que si vous utilisez des vues, des process stockés ou des fonctions SQL, vous pouvez les supprimer et les recréer à volonté sans affecter les données. Enfin, assurez-vous que toutes les connexions à une base de données en cours de mise à jour sont fermées ou supprimées avant d'exécuter des mises à jour pour éviter tout comportement imprévisible.

1

Pour l'installation initiale, effectuez une restauration du db. Toujours expédier la version actuelle de la base de données avec l'application.

Pour l'exigence de mise à jour, vous avez besoin d'une liste de scripts de modification, un pour chaque nouvelle version. J'aime l'approche RoR où le db inclut la version. Cela permet de vérifier simplement dans quelle version se trouve la base de données et d'appliquer tous les scripts de modification après celle-ci.

Questions connexes