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 :

[SQL Server 2000] Recherche d'un ID dans toute la BD


Sujet :

MS SQL Server

  1. #1
    Invité
    Invité(e)
    Par défaut Recherche d'un ID dans toute la BD
    Bonjour à tous,

    Voilà j'ai un petit soucis, mais très important, que je n'arrive pas à réssoudre
    Je travail sur une très grande Base de Données, et je dois remplacer la donnée d'un ID par une autre, mais celui est présent dans beaucoup de tables de la BD.

    Par exemple, je dois remplacer le nom "AAAA" par "BBBB" dans tous les tables de la BD. Mais je ne connais pas dans quelles tables cette ID est présent, hélas.

    De plus, le nom du champ n'est pas le meme dans chaque table, ce qui complique un peu la chose...

    Comment faire pour rechercher une valeur dans toute la base de donnée ?

    J'éspère que je me suis bien exprimé, c'est pas bien dur à comprendre le problème mais pour expliquer sur un forum c'est un peu galère

    D'avance, merci de votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par cherrymoon08
    De plus, le nom du champ n'est pas le meme dans chaque table, ce qui complique un peu la chose
    ça ne complique pas "un peu" mais énormément : si le nom de la colonne avait été le même dans toutes les tables alors vous auriez éventuellement pu passer par du SQL dynamique en consultant les informations du schéma.
    En fait, vous payez le prix d'une modélisation à chier mais vous en êtes peut être à l'origine de ce fait ?

    Citation Envoyé par cherrymoon08
    Comment faire pour rechercher une valeur dans toute la base de donnée ?
    Il n'existe pas de solution toute faite à mon sens.
    D'ailleurs si votre base était correctement modélisée, quel que soit le nombre de tables, vous seriez capable de désigner les tables concernées.
    Enfin, indiquez votre SGBD des fois qu'il existe une solution plus souple...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je suis sous SQLServer 2000. En effet, je viens de reprendre une base de donnée existante, et donc je ne connais pas exactement toute sa structure, mais effectivement il me semblait que les nom de colonnes ne portait pas les memes noms pour différentes tables, mais je me trompe peut-etre...

    Mais si ca n'est pas le cas, je pourrais faire une recherche en récupérant tous les noms de colonnes de mon ID, et ensuite rechercher dans chaque table si ma donnée est présente, nan ?

    Pour récupérer toutes les colonnes de nom "code", par exemple, je peux faire comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM syscolumns where syscolumns.name = 'Code'
    Mais ensuite à quelle table, et par quel champ, je dois lier ceci pour récupérer le nom de la table comportant ce champ ?

    J'avais lus sur internet l'existance de la table systables, mais moi j'ai rien de ce nom la

    Merci de votre aide en tout cas.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Typiquement, je ne connais pas SQL Server mais en rapportant votre demande à Oracle, je vous aurais préconisé de consulter la table/vue système USER_TAB_COLUMNS qui contient 2 colonnes importantes dans votre cas :
    - TABLE_NAME
    - COLUMN_NAME

    Vous implémentez alors un curseur qui parcourt cette table/vue système et qui à partir de ces 2 colonnes construit dynamiquement une requête qui recherche votre identifiant.
    Je n'ai jamais mis en pratique un tel procédé mais rien que sous Oracle, j'imagine qu'il faut ENORMEMENT compliquer le curseur pour gérer les différents types de données où les exclure, récupérer les exceptions, etc.

    Hope it helps.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je n'ai toujours pas trouvé de solution à mon problème
    Personne n'aurait une petite idée de comment faire cette recherche ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Il vient un temps où il n'y a pas de solutions magiques. Surtout quand on doit prendre en charge le système de quelqu'un d'autre.

    1 - Y a-t-il de la documentation sur cette base de données?

    2 - Est-ce que le système est dépendant de votre système principal?

    3 - Devrez-vous vivre avec ces données de façon temporaire?

    Si la réponse est négative pour ces trois questions, je crois qu'il vaudrait mieux canibaliser ce système dans votre système principal. La somme de travail peut sembler énorme (elle l'est) mais traîner un système legacy dont on ne connaît pas le fonctionnement, ça va finir par devenir un monstre dans votre emploi du temps.

Discussions similaires

  1. [SQL Server 2000]Executer une requete contenue dans un champ
    Par hwoarang dans le forum Développement
    Réponses: 4
    Dernier message: 25/11/2009, 17h23
  2. Réponses: 5
    Dernier message: 30/05/2007, 18h08
  3. [SQL-SERVER 2000] Remplacer l'instruction GO dans requete
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 14h24
  4. [SQL Server 2000] ajouter une colonne identité dans une vue?
    Par CetTer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/08/2005, 13h43
  5. Procedure stockée avec ntext dans SQL server 2000
    Par nagababa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/11/2003, 20h46

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