2009-06-02 4 views
0

J'ai besoin de déployer une application winform qui utilise plusieurs db. Je dois les déployer avec mon application lorsqu'ils interagissent localement. Puis-je utiliser ClickOnce ou devrais-je envisager une approche différente? J'ai trouvé quelques exemples pour ClickOnce mais ils ont tous supposé que la base de données était incluse dans la solution, ce qui n'est pas le cas ici. Cette application était une application web et les DB et les DAL en sont la traduction. J'utilise également la réplication de fusion avec ces db locales à la centrale.Comment déployer SQL et joindre une base de données: avec ClickOnce?

Est-ce que ma meilleure approche de script est la création de la base de données et d'une manière ou d'une autre exécutez-les lors de l'installation, puis déclenchez la réplication de fusion pour remplir les tables? Les DB contiennent aussi plus de 100 sprocs qui ne sont pas toujours bons avec Merge Repl donc je dois aussi pouvoir les inclure dans l'installation initiale.

Sinon, j'ai pensé que je pourrais comprendre comment attacher les DB lors de l'installation qui inclurait les sprocs dans eux mais je ne sais pas comment faire cela non plus.

Je suis ouvert à TOUTES les suggestions sur la façon de déployer cette application avec ses 4 DB SQL séparés.

Merci!

Répondre

2

Si vous utilisez SQL Express localement, vous pouvez attacher la base de données en tant que partie de la chaîne de connexion, mais je ne sais pas si cela fonctionnera pour vous avec la réplication. Vous pouvez envisager d'avoir la base de données attachée localement et mettre une table de révision qui contient le numéro de version de la base de données. Votre application pourrait ensuite être écrite pour vérifier la révision de la base de données et exécuter un script SQL pour mettre à niveau la base de données à la dernière révision. C'est ainsi que DotNetNuke effectue des mises à niveau progressives. Vous devez simplement conserver un fichier .SQL spécifique à la version pour chaque version et les inclure dans les fichiers de déploiement en un clic. De cette façon, vous pouvez faire défiler toutes les révisions manquées pour arriver à la révision finale de la base de données.


Dans le code psuedo ce serait quelque chose comme:

Check the database version in Revision Table 
    If less than current version 
     Load SQL file list from path 
      Foreach file with revision > current Revision 
       Execute TSQL Scripts 

Chaque script TSQL mettra à jour le numéro de révision dans la base de données qu'elle applique. Certes, cela prend beaucoup de temps à mettre en œuvre, mais quand il roule cela fonctionne très bien pour résoudre votre problème.

+0

Je ne suis pas sûr de comprendre complètement. J'avais l'impression que merge rep propagerait tout changement de db. Vous référez-vous à somenthing autre? –

+0

Si vous le configurez de cette façon, vous pouvez certainement le faire, mais vous mentionnez que vous vouliez faire l'installation puis déclencher la réplication pour remplir les tables, ne pas répliquer tous vos objets complètement, et vos problèmes avec les sprocs être résolu en utilisant un versionnement incrémental de la base de données et des fichiers sql pour déployer les modifications de la révision à la révision. Ce n'est pas nécessairement la bonne solution pour vous, mais une idée de la façon dont vous pourriez «résoudre» le problème. –

Questions connexes