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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Unifier la collation des colonnes d'une bdd MS SQL Server par script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Unifier la collation des colonnes d'une bdd MS SQL Server par script

n°2193722
parpagnas
Posté le 11-06-2013 à 11:01:53  profilanswer
 

Bonjour,
 
Un de nos clients a changé la collation de sa base de FRENCH_CS_AS vers FRENCH_CI_AS puis a migré notre produit vers une nouvelle version. Il se retrouve donc avec des colonnes dans l'ancienne collation et des nouvelles colonnes dans la nouvelle collation et cela pose problème lorsqu'on compare les tables.  
 
La problématique c'est que pour que la mise à jour des colonnes vers la bonne collation implique que je:
- drop toutes les clés étrangères, primaires et uniques ainsi que les index
- exécute le script de mise à jour vers la nouvelle collation
- recrée toutes les clés et index précédemment supprimés
 
Je n'ai trouvé que deux méthodes:
- export de la bdd sous forme de script, puis réimport mais c'est très lourd et de plus cela plante au bout d'un moment, pour une raison que j'ignore
- les scripts suivant:  le premier script est corrigé dans les commentaires, les deux procédures sont créées, les script 5 utilisent les procédures créé en 4 mais ne renvoient que des lignes  du genre "-- Drop Referencing FKs" au lieu de renvoyer des alter table comme il devrait. Je pense que cela est dû au fait qu'on exécute ces actions au lieu de les print mais je suis totalement perdu avec ce script et toutes mes tentatives de modification ont été vaines jusqu'ici.
 
Seriez-vous, svp, en mesure de m'aider?
 
Merci d'avance
 
Cordialement,
 
Julien

mood
Publicité
Posté le 11-06-2013 à 11:01:53  profilanswer
 

n°2193747
Oliiii
Posté le 11-06-2013 à 11:51:37  profilanswer
 

Changer la collation d'une DB SQL quand on ne s'y connais pas bien est relativement difficile.
 
Comme tu le sais déjà il y a beaucoup de choses a faire, en général le plus facile est de 'simplement' recréer une DB et la structure avec la collation correcte et puis transférer les données.
 
Le transfert des données peut se faire facilement depuis le Management Studio, ça dépend de la taille des tables. Si tu as des tables très grosses il faudra peut être passer par un bcp.exe. Il y aura peut être quelques contraintes a désactiver si elle sont cyclique.
 
Pour recréer la structure avec la bonne collation, soit vous avez des scripts pour tout recréer ou alors tu peux utiliser le management studio pour scripter la structure (sans les collation) ou alors, le plus facile, tu télécharge la version d’évaluation de RedGate SQL Compare (http://www.red-gate.com/products/s [...] l-compare/) et tu utilises ça pour copier la structure.


Message édité par Oliiii le 11-06-2013 à 11:55:17
n°2193828
parpagnas
Posté le 11-06-2013 à 17:04:40  profilanswer
 

Merci Oliiii, j'ai modifié les scripts et ils font maintenant ce que je veux, à une exception près: le premier script ne drop pas les indexs: http://code23.keole.net/2013/06/ho [...] collation/
 
J'ai vérifié et il semble bien qu'on rentre dans

Code :
  1. 'ELSE ' +
  2.                         '''DROP INDEX '' + QUOTENAME(i.name) + @crlf + ' +
  3.                         '''ON '' + ' +
  4.                             'QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + ''.'' + ' +
  5.                             'QUOTENAME(OBJECT_NAME(object_id)) + '';'' + ' +
  6.                                 '@crlf


Le problème semble donc être plutôt un problème de sortie, mais je ne sais pas comment résoudre ca...
 
Merci d'avance

n°2193876
parpagnas
Posté le 11-06-2013 à 22:09:31  profilanswer
 

Je note aussi que les statistics ne sont pas drop par le script non plus
 
Faute de mieux j'ai drop les indexs et les statistics à la mano, en attendant une solution "propre" et pérenne, le script qui change la collation s'est bien exécuté mais cela n'a pas mis les vues à jour dans la nouvelles collation...  
 
Il faudra donc modifier le script pour qu'il gère ces deux cas...


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

  Unifier la collation des colonnes d'une bdd MS SQL Server par script

 

Sujets relatifs
Script pour cacluler la somme de likes sur plusieurs pages facebook[VBS] Erreur lancement script VBS
Script Telnet switcht Nortel/Avayacréer un script .bat
Script erroné en passant au php5.4Script d'activation de script
Script d'automatisation de tache[HTML/CSS/Javascript] Lien et script à partir de l'attribut alt
SQl : trouver l'élément suivant d'une colonnescript en langage batch
Plus de sujets relatifs à : Unifier la collation des colonnes d'une bdd MS SQL Server par script


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