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

Sybase Discussion :

[ASE]administration Sybase (vider, recuperer liste des clés)


Sujet :

Sybase

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [ASE]administration Sybase (vider, recuperer liste des clés)
    bonjour,

    j'ai pas mal parcouru le forum, les faq et tout ... et sauf erreur je n'ai pas trouvé la reponse aux problemes suivants:

    je souhaiterais vider completement la base sans l'effacer (donc pas de drop database).
    j'ai 50 tables, je fais des tests dessus, je modifie souvent, donc 50 drop table, c'est pas cool non plus surtout qu'apparemment il faut effacer les cles avant.

    l'autre requete est : obtenir la liste des cles de toute la base

    enfin, comment effacer toutes les clefs rapidement?

    j'imagine que je ne suis pas le premier a etre confronté a cette problematique, mais pour trouver l'info, meme dans la doc sybase...dur, dur
    merci pour votre aide precieuse!

    Lud

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    hello!

    je me disais qu'il y avait des gens calés sur ce forum, please, help me!
    many thanks!

    LC

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Salut !
    3 solutions:
    1/Je te conseille de trouver un utilitaire qui peu t'extraire la structure de la base (script SQL de suppression et de création des tables) par exemple DBArtisant en version démo (http://www.embarcadero.com/downloads...ddbartisan.jsp)
    Cela te permettrait de supprimer puis de créer et tes tables dès que t'en a besoin

    2/ Supprime toutes tes données une fois pour toute (fastidieux la première fois mais ce sera fait une fois pour toute) puis fait un dump que tu rechargeras dès que tu auras besoin de ta base vide

    3/Supprimes toutes les clés étrangères (Foreign Keys) , fais un truncate de tes tables puis recrée les Foreign Keys
    Justement pour ce dernier point tu verras que DB Artisant te sera très utile mais attention c'est une version démo limité à 15 jours.

    Ce sont trois méthodes que je te propose mais il existe sûrement d'autres méthodes pour le faire.
    Attendons les propositions des "collègues".

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Voici un script qui peu générer la suppression création des Foreigns keys.
    C'est du 'vite fait' que tu devras OPTIMISER D'URGENCE mais bon je ne vais pas te macher tout le travail

    /******************************************************************************************************
    * Attention !!!!!! : script à OPTIMISER par une PROCEDURE STOCKEE car elle ne prend le cas que des
    * FOREIGN KEYS portrant sur 4 colonnes MAXI (il peu y en avoir jusqu'à 16 !!!! mais bon c'est rare
    * Il faudrait passer par un curseur + table temporaire pour éviter la redondance du code du type :
    * (
    * select "," + col.name
    * from sysobjects as tab,
    * syscolumns as col
    * where tab.id = col.id
    * and col.id = frk.tableid
    * and col.colid = ....
    *
    * )
    * code qui est optimisé à 0%
    * SQL972 le 20/06/2006
    *******************************************************************************************************/

    /*******************************/
    /* GENERATION DES SUPPRESSIONS */
    /*******************************/

    select "ALTER TABLE " + object_name(frk.tableid) + " DROP CONSTRAINT " + object_name(frk.constrid) from sysreferences frk



    /*******************************/
    /* GENERATION DES CREATIONS */
    /*******************************/

    select " ALTER TABLE " +
    object_name(frk.tableid) +
    " ADD CONSTRAINT "+
    object_name(frk.constrid) +
    " FOREIGN KEY ("
    +
    (
    select col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.fokey1

    )
    +
    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.fokey2

    )
    +
    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.fokey3

    )
    +
    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.fokey4

    )
    +
    ") REFERENCES "
    +
    object_name(frk.reftabid)
    +
    " ("
    +
    (
    select col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.refkey1

    )
    +

    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.refkey2

    )
    +

    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.tableid
    and col.colid = frk.refkey3

    )
    +

    (
    select "," + col.name
    from sysobjects as tab,
    syscolumns as col
    where tab.id = col.id
    and col.id = frk.reftabid
    and col.colid = frk.refkey4

    )
    +")"

    from sysreferences frk

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Bon OK là voila en procédure stockée;
    Crée tous les ordres de suppression puis de création des Foreigns keys

    ps: prend maintenant en charge les FOREIGN KEYS portrant sur 16 colonnes maxi (ASE 12.5)
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    En 12.5 on peut utiliser ddlgen pour extraire cette information.

    Il y a aussi des freeware (p.ex. dbschema.pl - voir http://www.midsomer.org) qui permet de faire une bonne partie du travail.

    Michael

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

Discussions similaires

  1. recuperer listes des colonnes
    Par haykelFST dans le forum Développement
    Réponses: 4
    Dernier message: 06/11/2011, 12h09
  2. Recuperer liste des imprimantes intallées
    Par bossun dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/12/2007, 10h00
  3. probleme recuperer liste des elements
    Par am.adnane dans le forum Struts 1
    Réponses: 3
    Dernier message: 14/06/2007, 13h46
  4. rave : recuperer la liste des categories
    Par claude delattre dans le forum Rave
    Réponses: 2
    Dernier message: 01/07/2005, 23h08
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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