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 :

unicode ou non-unicode


Sujet :

Administration SQL Server

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut unicode ou non-unicode
    Bonjour,
    comment savoir si ma base de données SQL-SERVER 2005 est en unicode ou non-unicode ?

    D'avance merci.

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sys.databases.name, sys.databases.collation_name FROM sys.databases
    Vous retourne la collation.


    Pour plus d'info sur la collation :
    http://msdn.microsoft.com/en-us/libr...v=sql.90).aspx

    Bonne journée,

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    merci pour la réponse et je reçois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT sys.DATABASES.name, sys.DATABASES.collation_name FROM sys.DATABASES
     
    Msg 208, Level 16, State 1, Line 1
    Nom d'objet 'sys.DATABASES' non valide.
    Dois-je mettre le nom de ma base pour DATABASES ?

    Merci encore.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Re,

    peut être un problème de droits.

    Pouvez vous vérifier que vous avez les bon droits :

    http://msdn.microsoft.com/fr-fr/libr...v=sql.90).aspx

    Pour connaitre la liste de vos droits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *  FROM fn_my_permissions(NULL, NULL)
     
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    Bonne journée,

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    je me connect en tant que SA alors je devrais avoir tous les droits.

    D'avance merci.

  6. #6
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Essaye cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX('IciTaBase', 'Collation')
    Tu peux aussi exécuter la commande ci-après en remplaçant DATABASES par databases c-a-d en tout en minuscule, peut être que ta collation est sensible à la casse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name, collation_name FROM sys.databases
    Etienne ZINZINDOHOUE
    Billets-Articles

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    Merci pour la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT DATABASEPROPERTYEX('IciTaBase', 'Collation')
    ----------------------------------
    NULL
     
    (1 row(s) affected)
     
    SELECT name, collation_name FROM sys.database
    name          collation_name
    ----------------------------------------------
    master        Latin1_General_BIN2
    tempdb        Latin1_General_BIN2
    Donc la deuxième requête dit que l'on est en Latin1_General_BIN2. est-ce unicode ou non-unicode ?

  8. #8
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Noooon !
    on va recommencer
    1. Dans la commande ci-après, tu vas remplacer "maBase" par le nom de ta base de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX('maBase', 'Collation')
    Donc si tu as une base qui a pour "toto" tu dois exécuter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX('toto', 'Collation')
    et si tu as une base qui a pour nom "titi" tu dois exécuter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATABASEPROPERTYEX('titi', 'Collation')
    2.
    Par contre les bases master et tempdb que tu montres pour l'autre commande sont des bases systèmes, la requête ne t'affiche que ces 2 bases ? je ne pense pas ! il faut nous en dire plus
    Etienne ZINZINDOHOUE
    Billets-Articles

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    Merci encore pour votre patience :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT name, collation_name FROM sys.databases
     
    name          collation_name
    ----------------------------------------------
    mabase        Latin1_General_BIN
     
     
    SELECT DATABASEPROPERTYEX('mabase', 'Collation')   
     
    -------------------------------------------------
    Latin1_General_BIN
     
    (1 row(s) affected)

    Merci d'avance

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    A noter ce n'est pas sys.DATABASES, mais sys.databases (en minuscules). Si la collation d’installation du serveur est forte, sys.DATABASES renverra un message d'erreur : objet non trouvé.

    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/ * * * * *

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    oui et merci Frédéric.

    Unicode ou non-unicode ?

  12. #12
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Citation Envoyé par big1 Voir le message
    Unicode ou non-unicode ?
    Vous avez mal formulé votre question et du coup on vous a conduit vers une fausse piste : collation, etc ...

    unicode ou non-unicode se définit au niveau de la colonne. Et il y a des types de données qui sont prévus pour stocker des données unicode : nchar, nvarchar,...

    la collation se définit à différent niveau : instance, base, table et colonne.
    Et le choix de la collation influence les opérations de comparaison, de trie,...

    il ne faut pas confondre donnée unicode/non-unicode et collation.

    Pour plus de détails sur la collation Latin1_General_BIN de ta base
    Etienne ZINZINDOHOUE
    Billets-Articles

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    Merci Etienne.

    On m'a posé la question : est-ce que la base (SQLSERVER 2005) est UNICODE ou NON-UNICODE.

    Pour moi avoir connu ORACLE c'est une caracteristique générale pour la base et dépend du CHARCTERSET. Voici extrait du documentation peoplesoft pour le base de données Oracle.
    D'après PeopleTools 8.52 Installation for Oracle

    To create an Oracle Unicode database, you must specify the character set as either AL32UTF8 or UTF-8
    Et pour les bases MSSQLSERVER :

    Using Non-Unicode Databases
    Use these considerations for environments that support one language: The suggested collation for most
    PeopleSoft databases is Latin1_General_Bin. This supports Western European languages (English, Danish,
    Dutch, Finnish, French, German, Italian,
    ...................

    J'en conclus que puisque en Latin1_General_Bin donc nous sommes en non-unicode.
    Cordialement.

  14. #14
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Que dit la documentation peoplesoft pour la base de données SQL SERVER ?
    Etienne ZINZINDOHOUE
    Billets-Articles

  15. #15
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Citation Envoyé par big1 Voir le message
    Et pour les bases MSSQLSERVER :
    Using Non-Unicode Databases
    Use these considerations for environments that support one language: The suggested collation for most
    PeopleSoft databases is Latin1_General_Bin. This supports Western European languages (English, Danish,
    Dutch, Finnish, French, German, Italian,
    ...................
    J'en conclus que puisque en Latin1_General_Bin donc nous sommes en non-unicode.
    Cordialement.
    Vous n'avez pas encore bien compris que la collation (classement) n'a rien avoir avec des données unicode/non-unicode !
    Autrement dit sous SQL Server IL N'Y A PAS DE COLLATION UNICODE ! ça ne veut rien dire et ça n'a de sens !
    Par contre vous pouvez définir des colonnes pour stocker des données de type UNICODE : nchar, nvarchar

    La collation (classement) sert pour des opérations de comparaisons et de trie.
    Etienne ZINZINDOHOUE
    Billets-Articles

  16. #16
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Citation Envoyé par zinzineti
    Vous n'avez pas encore bien compris que la collation (classement) n'a rien avoir avec des données unicode/non-unicode ! ... La collation (classement) sert pour des opérations de comparaisons et de trie.
    Hé oui !

    Ce qu'il faut retenir c'est :

    - si l'on a besoin de stocker des caractères non-Latins (langues Asiatiques, Arabes, ...) alors vous allez être obligé d'utiliser une colonne de type nchar ou nvarchar : celles-ci utilisent Unicode pour stocker ces caractères, puisqu'Unicode le supporte (et pas ASCII). Les valeurs de chaîne que vous stockerez occuperont 2 octets par caractère.

    - si l'on n'a besoin que de stocker des caractères Latins, ASCII est amplement suffisant pour cela, et le recours aux types de données char et varchar est approprié. Ici les valeurs de chaîne occuperont 1 octet par caractère.

    - les collations n'influencent que la façon dont sont ordonnés les résultats d'une classement sur des chaînes de caractère (ORDER BY, GROUP BY, ...), et rien d'autre.

    Vous pouvez donc utiliser n'importe quelle collation en combinaison avec des colonnes qui supportent l'Unicode ou seulement l'ASCII.
    Le tri et le stockage de telles valeurs sont deux notions distinctes.

    @++

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    oui en fait en Oracle la notion de collation n'est pas courante.

    Alors difficile à saisir.
    Autrement je conclus que une base MSSQLSERVER est à la fois UNICODE et NON-UNICODE.

    Ai-je bien compris ?

    Merci encore.

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut
    merci à tous.

  19. #19
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    J'aurai plutôt dit que SQL Server supporte à la fois l'ASCII et l'Unicode.
    Il suffit d'adapter le type de données à ce que l'on souhaite stocker.

    @++

  20. #20
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Oracle supporte mal la notion de collation et propose un truc hors norme et peu pratique, le NLS.

    Une collation est une propriété d'un type de données de nature littéral.
    L'encodage est une autre caractéristique.

    Vous pouvez avoir des littéraux encodés en ASCII donc CHAR(n) et VARCHAR(n) et des littéraux encodés en UNICODE, donc NCHAR(n) et NVARCHAR(n).
    Le N signifiant NATIONAL.

    De même une valeur chaine de caractères peut être ASCII ou UNICODE :
    'toto' => chaine ASCII
    N'toto' => chaine UNICODE.

    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/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec l'Unicode et Non Unicode dans la meme table
    Par messahel dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/02/2011, 11h34
  2. Fonction pour convertir de l'unicode en non-unicode ?
    Par pepito62 dans le forum Langage
    Réponses: 1
    Dernier message: 03/03/2010, 11h37
  3. fichier non unicode
    Par Papy214 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/09/2008, 14h22
  4. Non-Unicode vers Unicode
    Par Ptit_Dje dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/09/2007, 13h39
  5. Bien créer une application multi-langues ? Unicode ou non ?
    Par Maxime Abbey dans le forum Composants VCL
    Réponses: 28
    Dernier message: 10/09/2007, 17h20

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