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 :

Modification du charset d'une BD SQL-Server vers ISO-8859-1


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Modification du charset d'une BD SQL-Server vers ISO-8859-1
    Bonjour,

    Dans le cadre d'un changement de système d'accès à nos bases de donnée pour notre application (BDE -> UNIDAC), nous devons modifier le charset de notre base de donnée qui est en latin1 vers de l'ISO-8859-1.

    Existe t'il des outils, des applications qui permette de faire cela ?

    Pour information, à l'heure actuelle notre programme est développé en Delphi 6, donc il est également possible de me proposer des solutions via ce language.

    Merci d'avance de vos réponses.

    Bonne fin de journée

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    SQL Server ne travaille pas sur les jeux de caractères (cela n'a pas de sens dans une base de données),mais sur des collations.

    Il suffit au moment de la création de la base de stipuler dans quelle collation vous voulez stocker les données pour que toutes les colonnes littérales des tables puissent bénéficier de cette collation par défaut de la base.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE DATABASE MaBase COLLATE Frenc_Ci_AI;
    Mieux, vous pouvez installer votre instance SQL dans la collation de votre choix. Ce paramètre ne peut pas être rectifié une fois l'instance SQL installée.
    Pour savoir quelle est la collation de votre instance de SQL Server faites la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SERVERPROPERTY('Collation')
    Enfin, vous pouvez crez vos colonnes de table avec n'importe quelle collation en la stipulant dans la définition du type de a colonne.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE T_USER
    (USR_LOGIN      VARCHAR(32) COLLATE French_CI_AI,
     USR_PASS       VARCHAr(16) COLLATE French_BIN);
    Pour connaître la liste des collations disponible sur votre instance, faites la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.fn_helpcollations();
    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/ * * * * *

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Merci pour votre réponse rapide !

    Je me suis peut-être mal exprimés. Mais mon problème est que ma base de donnée est déjà remplie d'informations et notament de chaine de texte. Et du coup j'aurais besoin de convertir ces chaines de texte vers ma nouvelle collation.

    Est-ce que je me fait comprendre ?

    Merci d'avance !

  4. #4
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut
    normalement En fonction du besoin, vous pouvez par exemple régler le problème directement dans la requête en spécifiant la collation à utiliser à chaque comparaison de chaîne
    de caractère (jointure, where, …)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM UneTable A
    INNER JOIN UneAutreTable B
        ON ...
    WHERE A.libelle = B.libelle COLLATE Latin1_General_CI_AS
    Pour en savoir un peu plus sur les collations dans SQL Server, je vous conseille de lire l’article de SQLPro http://sqlpro.developpez.com/cours/s...er/collations/

  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 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par briaume Voir le message
    Merci pour votre réponse rapide !

    Je me suis peut-être mal exprimés. Mais mon problème est que ma base de donnée est déjà remplie d'informations et notament de chaine de texte. Et du coup j'aurais besoin de convertir ces chaines de texte vers ma nouvelle collation.

    Est-ce que je me fait comprendre ?

    Merci d'avance !
    Une collation ne convertit pas les chaines de caractères d'un jeux à un autre jeux. Une collation règles les problématiques de comportement des chaines de caractères vis à vis des opérations que vous effectuées sur lesdites chaines, au regard :
    1) de la casse : a = A ?
    2) des caractères diacritiques (accents, ligatures...) : a = à ?
    3) de corps du caractères ("largeur" du caractères) : 2 = ² ?
    4) des kana types du japonais
    ...
    et du tri spécifique à la langue considérée.

    Quel est donc votre besoin de conversion ????

    Quel problème d'interprétation des chaines de caractères avez vous ???

    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
    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
    Citation Envoyé par abdallah_mehdoini Voir le message
    normalement En fonction du besoin, vous pouvez par exemple régler le problème directement dans la requête en spécifiant la collation à utiliser à chaque comparaison de chaîne
    de caractère (jointure, where, …)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM UneTable A
    INNER JOIN UneAutreTable B
        ON ...
    WHERE A.libelle = B.libelle COLLATE Latin1_General_CI_AS
    Pour en savoir un peu plus sur les collations dans SQL Server, je vous conseille de lire l’article de SQLPro http://sqlpro.developpez.com/cours/s...er/collations/
    Pas forcément une bonne idée dans tous les cas car forcer une collation dans un prédicat inhibe l'utilisation d'un potentiel index .. à utiliser avec prudence donc.

    ++

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par briaume Voir le message
    Merci pour votre réponse rapide !

    Je me suis peut-être mal exprimés. Mais mon problème est que ma base de donnée est déjà remplie d'informations et notament de chaine de texte. Et du coup j'aurais besoin de convertir ces chaines de texte vers ma nouvelle collation.

    Est-ce que je me fait comprendre ?

    Merci d'avance !
    Comme le signale SQLPro, la collation change la façon de gérer les comparaisons. Cela veut dire que tous les index, toutes les clés primaires, toutes les contraintes sont impactées par un tel changement qui est très lourd.

    J'ai trouvé ceci (en anglais) : http://www.codeproject.com/Articles/...f-all-Database

    Evidemment il faut backuper sa base avant. Et faire des tests (je n'ai pas testé les élements présentés, juste parcouru très rapidement).

Discussions similaires

  1. Encodage utf-8 vers iso-8859-15
    Par ruddy32 dans le forum DB2
    Réponses: 1
    Dernier message: 20/03/2012, 10h12
  2. Librairie UTF8 vers ISO-8859-1
    Par KRis dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2009, 10h52
  3. Encodage : Conversion UTF-8 vers ISO-8859-?
    Par polo54 dans le forum Général Java
    Réponses: 6
    Dernier message: 26/06/2007, 19h10
  4. encodage UTF-8 vers ISO-8859-1
    Par taouja dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 13/04/2007, 11h03
  5. conversion iso-8859-1 vers utf-8
    Par gorgonite dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/08/2006, 12h49

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