Bonjour,
Je souhaiterai trouver ou est appellé un "Stored Procedure" dans des trigger/SP.
Merci
Bonjour,
Je souhaiterai trouver ou est appellé un "Stored Procedure" dans des trigger/SP.
Merci
bonjour,
il faut chercher les commandes EXEC généralement. Parfois les procédures sont appelées directement par leur nom, sans le EXEC.
Si ça ne répond pas à la question, merci de préciser votre problème.
d'une maniere ou d'une autre le SP 'COPY_DEALER ' est appellé, et je dois trouver ou, comment, par quoi (autre sp, trigger,..).
merci
Utilisez les vues d'informations de schéma :
Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...age=partie2#L9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%COPY_DEALER%'
A +
Bonjour,
je pense que je me suis mal expliqué, je ne cherche pas a savoir si 'COPY_DEALER' est un triger ou un SP, mais a savoir par qui, il est appellé, genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 create TRIGGER [dbo].[tr_DEALER_PROFILE_delete_DG] ON [dbo].[DEALER_PROFILE] after DELETE AS declare @did char(5) select @did=d.Dealerid from deleted d exec COPY_DEALER @did RETURN
fais çà dans ta base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select name,xtype from sysobjects where name like '%COPY_DEALER%'
si trouvé et xtype='Tr' c'est un trigger
si xtype ='P' c'est une proc
S'il s'agit d'une étude ponctuelle, pourquoi ne genererais-tu pas le script complet de ta DB (sur toutes les SP, les tables et les fonctions). Il te suffirait ensuite de faire un CTRL+F sur le fichier .sql produit pour voir quels objets font reference à COPY_DEALER.
Un tuto pour faire cela : ici.
Il existe sans doute une autre methode, ceci dit.
++
Merci Merci , mais c'est vraiment pas ce dont j'ai besoin. surout que je sais déjà que COPY_DEALER est une Procedure.
C'est une possibillité, mais je voudrai savoir le faire avec une querry.
Pour une utilité ulterieure.
merci
pour connaître les dépendances d'une procédure ou d'une table (appelants et appelés) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec sp_depends <maproc> ou <matable> ....
Vous n'avez visiblement pas compris et en plus au lieu de tester ce que je vous ais donné et qui marche parfaitement et répond à votre problème, vous vous permettez de mettre en doute ce que je vous donne comme réponse. C'est pour le moins maladroit et ne donne pas envie de continuer à aider les autres !!!
Donc je perd mon temps à expliquer la chose, croyant que vous pouvez encore à ce stade être récupérable !
La vue INFORMATION_SCHEMA.ROUTINES contient la description de toutes les routines Y COMPRIS LE CODE SQL DE CHACUNE DES ROUTINES. C'est justement dans la colonne ROUTINE_DEFINITION que se trouve ce code SQL !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%COPY_DEALER%'
Donc en faisant un like (mais peut être ne savez vous pas faire un like auquel cas je vous invite à lire un de mes bouquins... ) vous trouverez les appels à cette proc.
Maintenant la solution avec sp_depends n'est pas certaine car seule les dépendances vue le sont si la résolution a été complète. Par exemple si vous avez créé une proc P1 faisant appel à P2 et que vous n'avez pas encore créé P2, alors sysdepends (la table scrutée par la sp_depends) ne sera pas alimentée lors de la création de P2...
Donc aucune garantie !
Quand à celle-ci :
Elle ne pouura plus fonctionner avec les futures version de SQL Serve !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT name,xtype FROM sysobjects WHERE name LIKE '%COPY_DEALER%'
Mais elle est plus cohérente !
A +
Bonjour,
Loin de moi de douté de vos années d'experiences et des vos bouquins mais vos réponses ne répondent pas à ma question.
en claire testé et non aprouvé.
Merci.
Sois plus précis ! Le code que t'a fourni SQLPRO ne te renvoi rien ? il te renvoi une message d'erreur ? Ce qu'il te renvoi ne correspond pas à tes attentes ?en claire testé et non aprouvé.
Parceque si je m'en tiens à ta question intiale ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ROUTINE_NAME, ROUTINE_TYPE ,ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%COPY_DEALER%'... tout le monde convient que le code fourni réponds à ta question !d'une maniere ou d'une autre le SP 'COPY_DEALER ' est appellé, et je dois trouver ou, comment, par quoi (autre sp, trigger,..).
Le code fournis me dis simplement si c'est une procedure ou autre.
Et n'indique nullement par qui et ou, elle est appellé.
je n'ai pas de msq d'erreur, simplement cela ne correspond pas à mes besoin.
Pour moi et mes collegues, ma question est claire et simple. et de plus j'ai donné un exemple, je ne sais pas quoi dire ou montré.
une fonction X ( Stored Procedure) est utlisé par un/des triggers ou autre fonction Y Z.
et je dois retrouver les fonctions/triggers Y,Z qui appelle la fonction X.
plus simple que ca, je ne peut pas le faire.
Merci
J'en conclus qu'aucun objet n'appel ta procédure, car j'ai fais le test dans mon environnement avec comme variable le nom d'une SP que je sais etre utilisée par d'autres objets. Et bingo, le code fourni sur ce post me retourne en effet tous les objets faisant appel (c'est à dire ayant le nom de ma SP dans leur code SQL) à cette procédure.Le code fournis me dis simplement si c'est une procedure ou autre.
Je te conseille de faire le test ; crée une SP bidon qui fait appel à COPY_DEALER puis execute ce code :Qu'obtiens tu ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ROUTINE_NAME, ROUTINE_TYPE ,ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%COPY_DEALER%'
++
j'ai fait le test, un trigger appelle ma SP mais la querry en question ne le signalle pas.
avant de répondre, je test ce qu'on me donne.
++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager