2010-12-07 41 views
2

Je sais comment créer des scripts, mais c'est savoir comment j'implémente ces scripts dans une application Windows ou une application web?Quelle est la meilleure façon de traiter les mises à niveau de base de données dans Windows et Web App?

Mettre l'accent sur une application web, j'ai tous mettre à niveau des scripts dans un dossier comme: \ install \ upgrade_1.4.99.sql, upgrade_1.4.101.sql etc

vérifie code C# version actuelle de la base de données de code avec la version C# et boucle à travers chaque script sql dans l'ordre et exécute le script.

Si l'utilisateur n'est pas un administrateur, affichez le message approprié indiquant qu'une mise à niveau est imminente ... quelque chose de similaire (déconnecte l'utilisateur). Les administrateurs (us) sont redirigés vers la page Web de mise à niveau et exécutent les scripts affichant l'échec ou le succès de chaque script. Un échec annule la transaction SQL.

Nous avons essentiellement plusieurs instances d'une application Web et nous sommes frustrés par les mises à niveau manuelles que nous gérons. Le problème le plus important que nous avons eu était des mises à niveau de données ... manquant toujours des transferts de données essentiels comme des données statiques (paramètres de configuration, etc.). Nous utilisons donc RedGate pour les scripts et la mise à niveau des données.

Est-ce que ma méthode ci-dessus pour mettre à jour des sites Web est la meilleure façon de procéder? Puis-je supposer le même processus pour les applications Windows?

Aussi je suis certain que ma méthode de lecture du fichier de script pourrait être améliorée. Nous lisons simplement chaque ligne de texte dans le fichier sql et attendons un "GO" et sauvegardons cette chaîne dans un tableau avant de les traiter tous. (Je n'ai pas écrit ce code). Le processus implique un grand Begin et Commit Trans ... juste pas sûr si ce droit ou non.

Désolé, pas sûr s'il y a trop de questions ici.

+0

Comment votre processus assure-t que les scripts de droite sont exécutées sur la base de données? Quelqu'un nomme-t-il votre base de données avec le numéro de version? –

Répondre

1

Vous pouvez réellement exécuter un script lot entier à la fois contre SQL Server:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/43e8bc3a-1132-453b-b950-09427e970f31

En ce qui concerne ce que la meilleure façon d'exécuter des mises à jour en toute sorte de manière automatisée? Je ne pense pas qu'il existe une excellente façon de le faire. C'est ce qui fonctionne le mieux pour votre système. Cela va sans dire, mais assurez-vous de tester les scripts dans un environnement séparé autant que possible.

HTH, Brian

+0

J'ai vu cette page web. Comme vous l'avez dit, c'est la meilleure façon d'exécuter les mises à jour que je suis incertain? Puis-je créer l'objet Serveur et exécuter tous les scripts via cette méthode? – Rob

+0

Personnellement, j'ai toujours été fan d'avoir un script par version. Si une mise à jour passe par plusieurs versions, alors j'exécuterais chaque script un par un, ou les assemblerais et les exécuterais immédiatement. Les exécuter individuellement serait probablement mieux, en cas d'erreur, vous sauriez quel script de version a erronné. –