Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1561 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mise à jour schéma base de données Sql server 2005

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mise à jour schéma base de données Sql server 2005

n°1510964
zebeber
Posté le 05-02-2007 à 15:53:15  profilanswer
 

Bonjour à tout le monde,
 
j'ai une base de données sqlserver 2005 express.
Je développe une application C# qui utilise cette base de données.  
Lorsque je fais des modifications dans mon application, je dois envoyer une mise à jour chez le client. Mais j'ai effectué des changements dans ma base de données aussi.
Alors voici ma question : comment mettre à jour le schéma de la base de données du client selon les modifications que j'ai fait sur ma base de données, SANS ECRASER OU PERDRE des données du client.
J'ai essayer d'utiliser le générateur de script de sql server 2005 pour qu'il me fasse des alter table là où il a lieu d'en avoir, mais ça ne change absolument rien.
 
 
Merci d'avance pour votre aide qui me sera plus que précieuse.

mood
Publicité
Posté le 05-02-2007 à 15:53:15  profilanswer
 

n°1511212
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-02-2007 à 02:16:28  profilanswer
 

Ca dépend surtout des modifications apportées.
 
Sinon, dans tous les cas, il vaut mieux écrire ton script de mise à jour à la main. En effet, le générateur de scripts est bien gentil, mais lorsque tu as des dépendances en cascade complexes, il a parfois du mal et le script plante au milieu. Ensuite c'est la galère pour retrouver les parties qui n'ont pas fonctionné...

n°1511227
zebeber
Posté le 06-02-2007 à 08:25:06  profilanswer
 

Ok, donc il me reste à bien tout analyser à chaque fois et faire mon script de mise à jour à la main.
Tu aurais éventuellement des conseils à me donner à ce propos? Je n'ai jamais touché aux mises à jour de schéma de DB.
 
Et merci déjà pour ton aide

n°1511290
MagicBuzz
Posté le 06-02-2007 à 11:32:11  profilanswer
 

Commencer par ne plus passer par la GUI pour faire les modifs dans la base : tu fais tout par script, et tu consignes chaque modification dans un fichier que tu pourras relivrer au client.

n°1511305
zebeber
Posté le 06-02-2007 à 11:40:26  profilanswer
 

Ok, je vais m'y mettre de ce pas.
Je n'ai jamais fais de script de modif de base de données. Ce n'est pas bien compliqué j'imagine.  
Mettre des if not exists là où il faut, et des alter table aussi? Il y a quelque chose de bien spécifique à savoir dans la création de ces scripts?

n°1511342
MagicBuzz
Posté le 06-02-2007 à 12:35:58  profilanswer
 

logiquement, les if exists t'en auras pas trop besoin, puisque "logiquement" le script ne doit tourner qu'une fois chez le client, et tu est censé savoir ce qu'il y a chez le client ;)
tu peux les mettre, mais ce n'est pas obligatoire.
 
sinon, ouais, tu vas t'amuser à coup de alter, de drop et de create.
 
sinon, là y'a rien qui me vient niveau "trucs spécifiques".
 
faut bien mettre des GO après chaque instruction qui modifie le schéma, à part ça non.
 
attention : une modif n'est pas rollbackable. donc travaille toujours dans une base de test avant de faire les modifs réellement. parceque si tu croûtes ton environnement de dev tu vas être vert après :D

n°1511346
zebeber
Posté le 06-02-2007 à 12:45:45  profilanswer
 

Encore une dernière chose.
Comme tu dis, je suis censé savoir ce qu'il y a chez le client, mais à moins de faire une copie de la db avant de faire des nouvelles modifs, y a-t-il un moyen de sauvegarder son schéma simplement pour pouvoir faire les bonnes modifs?
 
Merci d'avance pour ta réponse et déjà merci du temps que tu as bien voulu me consacrer.
Ca m'éclaircit très bien.

n°1511370
MagicBuzz
Posté le 06-02-2007 à 13:55:02  profilanswer
 

C'est bien simple : logiquement, il ne doit pas faire de modifs sur la base sans te prévenir, puisqu'à priori c'est toi qui gère l'application qui utilise la base.
Si au contraire, ton appli se greffe sur une autre appli qui gère la base, alors tu ne dois pas modifier la base du client : tu dois en créer une seconde, et travailler avec des DBLINK afin de la lier au modèle existant (en travaillant avec des vues et autres objets dynamiques, tu peux rendre la chose totalement transparante).
 
Je pars du principe donc que c'est toi et toi seul qui gère le modèle de la base. A ce moment, tu dois avoir chez toi au moins trois bases de données différentes :
- Une copie de la base actuellement en production chez le client. Tu appliqueras dessus tes différents patchs au moment de la livraison.
- Une version de développement de la base : la base dans laquelle tu travailles.
- Une version de test, qui te permet de valider tes patches avant l'envoi au client, ainsi que valider le fonctionnement de l'application avant la mise en production.
 
Pour récupérer une version de la base du client, rien de plus simple : SQL Server dispose d'une GUI simplissime pour faire un backup d'une base. Backup la base en ne prenant que le modèle et les infos, mais pas les profils utilisateurs ni les utilisateurs. Il ne te reste plus qu'à restaurer ce backup sur ton serveur de développement.

n°1511374
zebeber
Posté le 06-02-2007 à 14:02:12  profilanswer
 

Et bien voilà qui est très clair.
 
Je te remercie beaucoup pour ton aide précieuse.
 
A+

n°1513995
frere tuck
Posté le 13-02-2007 à 10:45:34  profilanswer
 

Bonjour,
une question supplémentaire : je suis dans le même cas, mais les modifications que je dois gérer impacte également les clés primaires qui sont actuellement définies comme des auto incréments.
Existe t il une solution efficace permettant de gérer les manipulations de clés primaires / étrangères ? Je pense notamment aux problèmes de correspondance...

mood
Publicité
Posté le 13-02-2007 à 10:45:34  profilanswer
 

n°1514254
MagicBuzz
Posté le 13-02-2007 à 20:04:05  profilanswer
 

Y'a pas de solution miracle.
 
Il faut faire avec le peu qu'il y a :
- Activer/Désactiver l'auto-incrément
- Activer/Désactiver les clés étrangères
- Récupérer le dernier ID créé : select scope_identity()
- Forcer/Interdire l'insertion de valeurs dans la colonne auto-incrément : set identity off / set identity on


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mise à jour schéma base de données Sql server 2005

 

Sujets relatifs
réinitialisation directories Visual C++ 2005 Express editionpb recherche de slash dans base sql
Optimisation C++/Sql[ASP.net] Fermer une connexion à la base de données
php Suppression de données d'une bd à partir d'un boutonBooleen sur Moteur de Recherche ... c'est du SQL ?
Oracle 10g R2 - Windows 2003 server - Active Directory[ PHP ] Insertion de données dans une base.
Plus de sujets relatifs à : Mise à jour schéma base de données Sql server 2005


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR