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

Développement SQL Server Discussion :

Afficher le hash d'une row avec des colonnes binaires


Sujet :

Développement SQL Server

  1. #1
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut Afficher le hash d'une row avec des colonnes binaires
    Bonjour,

    J'aimerais récupérer une requête sql qui me permet d'afficher la liste des colonnes avec un hash pour les colonnes binaires.
    J'ai trouvé des pistes mais rien ne marche.
    Cette exemple ne s'exécute pas sur les binaires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT ID, hashbytes('md5',[YFP_DATA]) FROM [YFILEPARTS];
    Le but est d'avoir les clefs primaires et le hash de la ligne (binaire compris).

    Si quelqu'un connait une solution je lui en serai reconnaissant.

    Merci,
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CHECKSUM(*) AS H, *
    FROM   ...
    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
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut
    Merci,

    J'ai testé j'ai la même erreur qu'avec le md5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg*8116, Niveau*16, État*4, Ligne*22
    Le type de données de l'argument image n'est pas valide pour l'argument 1 de la fonction checksum.
    voici la liste de ce que j'ai essayé... les première marche mais seulement sur les binaire/image de moins de 8000 octects.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    SELECT TOP 5 ID,ROW_NUMBER() OVER ( ORDER BY ID ) 'RowNum' ,(SELECT hashbytes('md5', ( SELECT [YFP_DATA] FOR XML RAW,BINARY BASE64 ))) 'HashCkSum' 
    FROM [YFILEPARTS];
     
    SELECT TOP 50 ID,ROW_NUMBER() OVER ( ORDER BY ID ) 'RowNum' ,
    Convert(NVARCHAR(MAX),
    	(SELECT hashbytes('md2', ( SELECT [YFP_DATA] FOR XML RAW,BINARY BASE64 ))),
    	1) 'HashCkSum' 
    FROM [YFILEPARTS] ;
     
     SELECT TOP 100 ID,ROW_NUMBER() OVER ( ORDER BY ID ) 'RowNum' ,
     	 ( SELECT [YFP_DATA] FOR XML RAW,BINARY BASE64 ) 'HashCkSum' 
    FROM [YFILEPARTS] ;
     
     SELECT TOP 100 ID,hashbytes('SHA1',[YFP_DATA])
    FROM [YFILEPARTS] ;
     
    Select Checksum(*) as H, * From [YFILEPARTS];
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  4. #4
    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
    IMAGE est un type de données obsolète depuis 10 ans ! C'est à dire depuis la sortie de la version 2005 de SQL Server.
    MIgrer vos données dans les types non obsolètes => VARBINARY(max).

    Demo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE RTYUIOPOIUYT (C INT, VC VARBINARY(max));
     
    INSERT INTO RTYUIOPOIUYT VALUES (1, 0x1874854585412565415241);
     
    SELECT *, CHECKSUM(*) FROM RTYUIOPOIUYT;
    Pour se former à SQL Server :

    Nom : Couverture livre SQL server Eyrolles.jpg
Affichages : 645
Taille : 105,0 Ko

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

  5. #5
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut
    Bonjour,

    Je sais, mais malheureusement le client ne peut pas changer son type de donnée, l'application est une application commerciale utilisé par 120 000 société à travers la France ...
    son cas ne sera que peu pris en compte par l’éditeur...

    Je ne peux ni modifier la structure, ni ajouter de triger ou fonction, je n'ai pas le droit de toucher à la base de données (je suis en lecture seule) ... mais j'ai besoin pour faire un synchronisation particulière de faire un hash de la ligne pour des questions de performance. La structure est très particulière, elle comporte 4000 bases de données contenant chacune 2000 tables, chaque table contient plusieurs centaines de champs, et il n'y a aucune clef primaire ni clef étrangère.

    donc je suis coincé ? pas de solution ?
    Merci de vous pencher sur le problème.
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  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 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
    Non, aucune....

    Je ne sais pas qui est cet éditeur... Mais c'est du crétinisme à l'état pur !

    N'importe quel client pourrait assigner l'éditeur pour malfaçon, défaut de vice caché, etc...

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

  7. #7
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut
    Est ce qu'il existe une méthode qui permet d'installer sur l’intégralité du serveur une fonction développé en dotnet ?

    comme cette exemple mais qui ne ce place que sur une base de donnée.
    https://msdn.microsoft.com/en-us/library/ms345099.aspx

    je pourrai alors développer une fonction de hash qui prenne en compte les images. et qui serai accessible au 4000 bases de données installé.
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  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 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
    Tentez le coup, je ne pense pas que cela marche et c'est du temps perdu :
    1) la version 2000 de SQL Server n'est plus supportée depuis 2008
    2) des bases de données en mode de compatibilité SQL 2000 ne peuvent plus être installée depuis SQL Server 2012
    3) les OS WIndows depuis la version 2008 ne supportent plus les installations des version 2000 de SQL Server
    4) les OS WIndows futurs ne supporterons probablement plus les versions 2005 de SQL Server

    Autrement dit continuer à utiliser des bases de données 2000 est suicidaire ! Vous ne pourrez bientôt plus les restaurer...

    C'est à peu près du même niveau que ceux qui veulent encore rouler à l'essence plombée !

    Personnellement je mettrait en demeure l'éditeur d'évoluer au plus vite avec menace de procès à la clef.

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

  9. #9
    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,

    que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select 
        ID,
        Checksum(CAST(YFP_DATA AS VARBINARY)) as H
     From [YFILEPARTS];

  10. #10
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut Merci !!!!
    Merci,

    Le checksum est un peu lite pour la comparaison, mais par contre en utilisant le "convert" et le "hash" ensuite sa fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT ID, hashbytes('SHA1',CAST(YFP_DATA AS VARBINARY)) FROM [YFILEPARTS];
    Mais je pense que je vais quand même devoir écrire une fonction dotnet, car le problème est que apparemment les "hash" ne ce font que sur les 8000 premiers octet et j'ai des binaires de plusieurs mega sur certain champs.

    je continue à creuser.
    merci,
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  11. #11
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut
    Apparemment sur sql server 2014 on peu toujours mettre des champs de type image, donc au minimum l’éditeur peu mettre à jour vers 2014 et tenir encore quelle que années.
    Je n'es jamais dit que la base de données est en sql 2000, elle est en sql 2012.

    L’éditeur n'a pas de devoir légale de concevoir sa base de donnée correctement, ils ont un devoir de résultat (ce qui apparemment est le cas, les sociétés qui utilise ce logiciel disent qu'ils sont les meilleurs).

    Merci quand même de vous êtres penché sur mon problème !
    a+
    seb


    Citation Envoyé par SQLpro Voir le message
    Tentez le coup, je ne pense pas que cela marche et c'est du temps perdu :
    1) la version 2000 de SQL Server n'est plus supportée depuis 2008
    2) des bases de données en mode de compatibilité SQL 2000 ne peuvent plus être installée depuis SQL Server 2012
    3) les OS WIndows depuis la version 2008 ne supportent plus les installations des version 2000 de SQL Server
    4) les OS WIndows futurs ne supporterons probablement plus les versions 2005 de SQL Server

    Autrement dit continuer à utiliser des bases de données 2000 est suicidaire ! Vous ne pourrez bientôt plus les restaurer...

    C'est à peu près du même niveau que ceux qui veulent encore rouler à l'essence plombée !

    Personnellement je mettrait en demeure l'éditeur d'évoluer au plus vite avec menace de procès à la clef.

    A +
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

  12. #12
    Membre actif
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 141
    Points : 210
    Points
    210
    Par défaut
    Merci pour la solution.

    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select 
        ID,
        Checksum(CAST(YFP_DATA AS VARBINARY)) as H
     From [YFILEPARTS];
    DSI et développeur du logiciel Lulidb
    http://www.lulidb.com - outils de gestion de base de données orienté développer.

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

Discussions similaires

  1. Faire la moyenne d'une ligne avec des colonnes non conjointes
    Par NewYork dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/12/2010, 10h06
  2. Suppression d'une ligne avec des colonnes vides
    Par fatima dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/11/2010, 14h38
  3. Afficher les résultats d'une requête comme des colonnes
    Par bouts dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/08/2010, 17h39
  4. créer une table avec des colonnes de types différents
    Par d_hazem dans le forum Composants
    Réponses: 1
    Dernier message: 15/01/2009, 15h23
  5. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32

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