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

Administration SQL Server Discussion :

2008R2: French_CI_AS et Latin1_General_CI_AS


Sujet :

Administration SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 150
    Points : 51
    Points
    51
    Par défaut 2008R2: French_CI_AS et Latin1_General_CI_AS
    bonjour,

    suite à l'exécution d'une requete , j'ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AS" et "French_CI_AS" dans l'opération equal to.
    et lorsque je verifie sur le serveur BDD j'ai l'instance dont le Classement est en French_CI_AS et la base en Latin1_general_CI_AS.
    que dois je faire pour remettre le classement de l'instance en Latin1_general_CI_AS ..? ou faut il recréer l'instance et de mettre la bonne valeur...?
    merci de votre réponse.
    Cdt.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il y a plusieurs solutions, mais connaitre la bonne dépend de votre contexte, et il faudrait déjà savoir pourquoi vous avez différentes collations sur des colonnes que vous semblez mettre en concordance (vous n'avez pas posté votre requête...)

    En fonction du besoin, vous pouvez par exemple régler le problème directement dans la requête en spécifiant la collation à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM UneTable A
    INNER JOIN UneAutreTable B
        ON ...
    WHERE A.libelle = B.libelle COLLATE Latin1_General_CI_AS

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    apparemment l'erreur s'est produite sur des tables temporaires.
    ma question est : une fois l'instance est créée avec la collation de Latin1_general_CI_AS , peut on encore la modifier en une autre collation..?
    d'apres le client il ya bcp de requêtes qui sont concernées et il ne peut pas modifier toutes donc il faut trouver une autre solution.
    aurais tu une autre à proposer stp..?
    Cdt.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    chaque colonne a sa propre collation.
    si elle n'est pas précisée, c'est la collation par défaut de la base de données qui est utilisée.

    De la même façon, lors de la création de la base de données, si la collation par défaut n'est pas précisée, c'est la collation par défaut du serveur qui sera utilisée.

    Changer a posteriori la collation par défaut de votre base ne changera pas la collation de vos colonnes déjà créées. Pour ce faire, il faudrait créer un script qui changera la collation de toutes les colonne de type [var]char

    Encore une fois, expliquez nous un peu plus le contexte, et la/les requêtes qui pose(nt) problème, et on pourra trouver une solution plus adaptée... plus rapidement.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Plusieurs choses :
    1) ce n'est pas parce que votre serveur n'a pas la même collation que votre base, que vous ne pouvez pas utiliser des tables temporaires

    2) une fois la collation du serveur choisie lors de l'installation il n'est pas possible de la défaire, car elle affecte toutes les données des tables systèmes. Changer la collation du serveur nécessite une réinstallation.

    3) pour compatibiliser les collations entre votre base et la serveur (en particulier pour la base tempdb) il existe différents moyens :
    3.1) spécifier la collation pour chaque colonne du CREATE TABLE pour les tables temporaires, au besoin avec le générique "database_default"
    3.2) utiliser la syntaxe SELECT ... INTO pour créer votre table temporaire (elle héritera des collations des colonnes de la requête)
    3.3) avec SQL Server 2012, en utilisant le principe des bases de données "autonomes" (CONTAINED = PARTIAL).
    3.4) en spécifiant la collation voulue dans une lause COLLATE pour les jointures sur littéraux dans les requêtes

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    merci beaucoup pour votre aide.
    j'ai pourtant trouvé ceci sur le site de microsoft qui montre comment changer la collation de l'instance avec un certain prérequis.
    http://msdn.microsoft.com/en-us/libr...ql.105%29.aspx
    est ce que quelqu'un a déjà expérimenté.?
    Cdt.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    ceci n'affectera que master et tempdb, pas msdb ni model.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre actif
    Homme Profil pro
    Administrateur de base de données MCITP Database Administrator 2008
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données MCITP Database Administrator 2008
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 201
    Points
    201
    Par défaut
    Bonjour,
    Citation Envoyé par scazikiss Voir le message
    d'apres le client il ya bcp de requêtes qui sont concernées et il ne peut pas modifier toutes donc il faut trouver une autre solution.
    Cdt.
    Supprimez toutes les bases de données utilisateur serait plus couteux que modifier les requêtes .

  9. #9
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Hello,

    Effectivement dans ton cas tu pourrais effectuer un rebuild de tes bases systèmes pour changer leur collation. Prends seulement garde à bien avoir une sauvegarde de ces dernières (master - config, msdb - jobs etc... et model si tu l'as customisé).

    Il faut cependant mesurer les impacts :

    - Est-ce que le changement de collation de niveau serveur n'aura pas d'impacts sur d'autres bases de données sur cette même instance ? Dans ce cas il faudra peut être envisagé d'avoir une autre instance avec la bonne collation ou migrer l'application sur une instance qui possède la bonne collation ... à voir ...
    - Est-ce que le coût du changement des requêtes n'est pas inférieure à celui du changement de collation de niveau serveur ? (temps, argent etc..)

    Visiblement ton client a répondu à la 2ème question

    ++

  10. #10
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    bonjour,

    merci bcp pour vos lumières.
    en fait ce que j'ai fait c'est:
    - backup les bases applicatives.
    - suppression de toutes ces bases .
    - changer la collation system en suivant la procédure de Microsoft.
    - restaurer les bases applicatives.

    an fait j'ai créé une nouvelle instance pour reproduire les mêmes erreurs puis appliquer le changement sur celle ci.
    apparemment tout s'est bien passé mais comme je n'ai pas assez de recul sur cette modification alors .....
    si vous avez des conseils à donner n’hésitez pas .
    merci encore.
    Cdt.

  11. #11
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Je ne connais pas en détail ton contexte mais il faudra d'abord faire valider que l'ensemble du code d'application qui te posait problème fonctionne correctement sur le nouvel environnement et que le reste n'a pas bougé non plus (régression possible ...)

    De côté valide que tout fonctionne :

    - au niveau des authentifications
    - au niveau des jobs SQL si tu en as
    - serveurs liés, credentials, proxies et autres si ces objets de niveau serveurs existent
    - SSIS
    ...

    Puisque tu fais une reconstruction des bases systèmes il faut s'assurer que tous les objets serveurs fonctionnent correctement après restauration suite au changement de collation.

    ++

  12. #12
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2011
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    merci mikedavem
    effectivement nous avons quelques job de sauvegarde .
    penses tu qu'une fois la collation system modifiée, on doit recréer un nouveau job de sauvegarde.?
    pour le moment je n'ai pas encore appliqué la procédure à l'instance en question car attente d'un créneau d'horaire.
    Cdt.

  13. #13
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Pour les changements de collation de niveau serveur, tu ne pourras pas restaurer tes bases systèmes en tant que tel puisque tu viendrais écraser la nouvelle collation en place.

    Le mieux est de scripter en amont touts tes objets serveurs (logins, jobs, credentials, proxies etc...) et de réappliquer tes scripts une fois la collation changée.

    ++

Discussions similaires

  1. Collation Latin1_General_CI_AS & French_CI_AS synonyme ?
    Par ylarvor dans le forum Administration
    Réponses: 2
    Dernier message: 15/05/2013, 16h59
  2. xampp sur windows serveur 2008r2
    Par danou07200 dans le forum Autres hébergeurs
    Réponses: 0
    Dernier message: 04/01/2010, 13h46
  3. Conversion charset French_CI_AS > UTF-8
    Par Myrza dans le forum Développement
    Réponses: 1
    Dernier message: 13/11/2009, 11h24
  4. [WS 2008] sbs 2008 ou 2008r2
    Par neuneu1 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 30/10/2009, 17h03
  5. FRENCH_CI_AS, FRENCH_CI_AI problem
    Par funboard dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/02/2008, 11h54

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