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 :

lister et imprimer contenu de tous les triggers d'une base


Sujet :

Développement SQL Server

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut lister et imprimer contenu de tous les triggers d'une base
    Bonjour,

    aprés avoir cherché sur le froum, j'ai trouvé comment lister tous les triggers d'une base.

    Mais je voudrais savoir comment soit lister ou imprimer ou sauvegarder le contenu de tous les triggers d'une base ?

    est-ce possible ?

    Bon dimanche.
    Thibault

    EDIT : le FROUM est une espèce protégé par le gouvernement, vous l'aurez compris... le FORUM

  2. #2
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Pour lister tous les triggers d'une base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT OBJECT_NAME(parent_id) [Table], name Nom
    FROM maBD.sys.triggers
    Pour exporter le code de tous les triggers dans un fichier Triggers.sql à l'aide de l'utilitaire BCP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT SQL.definition + CHAR(10) + CHAR(13) + 'GO' toto
    INTO ##TOTO
    FROM maBD.sys.triggers TRIGGERS
    JOIN maBD.sys.sql_modules SQL ON SQL.object_id = PROCS.object_id
    WHERE TRIGGERS.name not like 'dt%'
    AND TRIGGERS.name not like 'sp%'
    ORDER BY TRIGGERS.name;
     
    DECLARE @szBCP VARCHAR(256);
    SET @szBCP = 'bcp "SELECT * FROM ##TOTO" queryout C:\Triggers.sql -T -c';
    EXEC xp_cmdshell @szBCP;
     
    DROP TABLE ##TOTO;
    Pour exporter le code de tous les triggers dans un fichier Triggers.sql à l'aide de l'utilitaire SQLCMD (appel depuis un batch DOS):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlcmd -S monserveur -d maBD -U login -P password -Q "SELECT SQL.definition + CHAR(10) + CHAR(13) + 'GO' FROM maBD.sys.triggers TRIGGERS JOIN maBD.sys.sql_modules SQL ON SQL.object_id = TRIGGERS.object_id ORDER BY TRIGGERS.name;" -o C:\Triggers.sql
    Le plus propre pour l'export étant SQLCMD.

    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    merci pour cette réponse trés précise.

    Mais force m'est d'avouer que je n'ai pas réussi à l'utiliser ni par BCP ni par SQLCMD.
    Je n'ai jamais utilisé ces utlitaires. J'ai essayé en tatonant sans réussir.

    Puis-je toi ou un autre "forumeur" vous demander de m'indiquer la démarche pour faire avec SQLCMD : j'ai trouvé des exemples sur le net. Mais il n'y a pas un code aussi évolué que le tien. j'ai lu, sur cmd, lancer et taper : SQLCMD...
    Alors je me suis dit il faut créer un .bat et mettre le code dedans mais il ne se passe rien. Sous SQL analyseur de requête, j'obtiens :

    Serveur*: Msg 170, Niveau 15, État 1, Ligne 1
    Ligne 1 : syntaxe incorrecte vers 'S'.
    Serveur*: Msg 103, Niveau 15, État 1, Ligne 1
    Le identificateur qui commence par 'SELECT SQL.definition + CHAR(10) + CHAR(13) + 'GO' FROM maBD.sys.triggers TRIGGERS JOIN maBD.sys.sql_modules SQL ON SQL.object_i' est trop long. La longueur maximale est 128.

  4. #4
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Quelle version de SQL Server utilisez-vous ?
    Le code que je vous ai fourni ne fonctionne qu'à partir de la version 2005, or vous parlez d'analyseur de requête, ce qui me fait penser que vous utilisez la version 2000 ...

    Que se passe-t-il lors de l'utilisation de BCP ?
    De toute façon l'utilisation de la procédure stockée étendue xp_cmdshell est déconseillée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC xp_cmdshell 'FORMAT C:'
    ça peut faire pas mal de dégâts

    Alors je me suis dit il faut créer un .bat
    C'est exact, désolé de ne pas l'avoir précisé.

    mais il ne se passe rien
    Mettez un "pause" à la ligne suivant votre commande SQLCMD, vous verrez peut-êtr une erreur apparaître

    @++

Discussions similaires

  1. [ODBC] [Access] Supprimer tous les enregistrements d'une base de données
    Par Medmidou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2009, 12h52
  2. Peut on visualiser tous les triggers d'une base ?
    Par antonius_marcus dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/04/2008, 08h54
  3. afficher tous les âges dans une base ?
    Par sabredebois dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/01/2008, 09h26
  4. Réponses: 2
    Dernier message: 07/03/2006, 15h27
  5. Exporter TOUS les users d'une base
    Par Nullos Oracle dans le forum Oracle
    Réponses: 12
    Dernier message: 13/03/2005, 20h32

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