IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Collation SQL Server : Comment l'ignorer?


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut Collation SQL Server : Comment l'ignorer?
    Bonjour,
    Tout est dans le titre.
    J'aimerais savoir comment indiquer à SQL Server d'ignorer la collation. Parce que j'ai une base créé avec SQL_Latin1_General_CP1_CI_AS et il y a certaines procédures, fonctions et vues qui font référence à d'autres collations. Ainsi, lors de la création de ces objets, il y a des erreurs de type "can not resolve ...."
    Je ne veux en aucun cas parcourir toutes les procédures (il y en a des centaines ) pour changer le code ou ajouter des instructions.
    Quelqu'un a t il une idée?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    la collation est un "mode de rangement" des données + un "mode de comparaison"
    je m'explique.
    ta collation => SQL_Latin1_General_CP1_CI_AS
    signifie
    SQL_Latin1_General_CP1 :stockage des données en "langue française" (avec accents) celle des anciennes versions françaises des SQL (SQL7)
    CI: Case Insensitive ( pas de différence entre majuscule et minuscule)=> 'A'='a'
    AS: Accent Sensitive (sensible aux accents) => 'e' <>'é'

    donc, si tu veux faire du transac sur des données stockées sur des collations différentes, c'est normal que tout ne fonctionne pas...
    exemple:
    une proc stockée sur une collation US qui va tester des données stockées en Latin ne reconnaitra pas les lettres avec accents.

    donc je ne connais pas d'autres solutions que mettre les mains dans le camboui.

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Points : 213
    Points
    213
    Par défaut
    j'avais fait qq recherche hier dans les tables system

    et tu peux retrouver la définition du text de ta procédure (si il faut je rechercherais la table et la méthode que j'utilisais)
    A partir de la tu n'auras qu'a faire un update sur ta table avec un
    replace d'un collate... par l'autre collate avec la fonction replace(....)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    oadin,

    tu peux effectivement forcer une collation spécifique par table mais une fois les données stockées c'est fini.

    exemple:

    tu stocke dans une table collation US la chaîne suivante
    'déménagement'
    si tu fais un select derrière tu auras 'demenagement' car au stockage le moteur aura converti le char 'é' (ascii 233) en char 'e' (ascii 101); il ne lui sera pas possible de revenir en arrière => comment faire la différence entre un 'é' stocké 'e' et un 'e' stocké 'e' ?

  5. #5
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par serge0934 Voir le message

    tu peux effectivement forcer une collation spécifique par table mais une fois les données stockées c'est fini.
    Justement c'est ce qu'il me faut. Parce que c'est pas moi qui est écrit les proc stock et je n'ai pas l'intention de les modifier. Je veux juste que la compilation s'effectue même si il y a des problèmes de collation.
    Juste que ça compile; c'est tout.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    C'est impossible. Une fois que la collation est définie les données sont stockées AVEC la collation. Pour faire ce que tu demande il faut entièrement vider les tables, les reconstruire avec la bonne collation, puis les remplir avec les données exportées.

    Autrement dit c'est le genre de choses qu'il aurait fallut penser AVANT !

    Il est peut être temps d'entrevoir de se former à SQL Server ? Non ???

    A +

  7. #7
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Il est peut être temps d'entrevoir de se former à SQL Server ? Non ???
    T'as raison. Inutile de baratiner les gens. Je pensais pouvoir m'auto-former

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    SQL parait de prime abord facile....

    mais c'est un langage subtil.
    La norme SQL fait aujourd'hui près de 20 000 pages de textes !
    en particulier 12 000 sont consacrées aux éléments de base dont l'essentiel est le simple SELECT !

    Il est donc assez difficile de se former sur le tas.
    Il convient de commencer par le commencement : ce qu'est un SGBDR, comment cela fonctionne, que fait le langage SQL et surtout pourquoi cela est fait comme ça !

    A +

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/12/2008, 10h04
  2. [C#/Sql Server] Comment transporter une application ?
    Par new dotnet(c#) dans le forum C#
    Réponses: 1
    Dernier message: 15/08/2006, 19h59
  3. Réponses: 1
    Dernier message: 21/06/2006, 12h49
  4. [Oracle/SQL-Server] Comment crypter une base de données ?
    Par [DreaMs] dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 28/11/2005, 18h02
  5. [SQL server] Comment Fusionner des données dans une requête
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2005, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo