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 :

Recherche des sous-fonctions


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 54
    Points
    54
    Par défaut Recherche des sous-fonctions
    Bonjour à tous !!

    J'ai juste une petite question à vous soumettre.

    Existe il en T SQL une fonction/un ordre qui permettrai de retourner toutes les fonctions appelées par une procédure ou une autre fonction et inversement, à partir du nom d'un fonction, retourner tout les procédures ou fonctions qui l'utilisent ?

    J'ai récupéré une base de données qui contient une bonne trentaine de proc stockées autre fonctions et le gentil petit admin précédant, n'a pas eu l'idée de recenser tout ce petit monde.

    Je vous remercie pour votre aide.

  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 862
    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 862
    Points : 53 009
    Points
    53 009
    Billets dans le blog
    6
    Par défaut
    Non, et 30 PS c'est peu... Pour ma part les bases que je travaille ont plutôt une quantité voisine de 1000.

    Seule une norme de nommage des objets de la base permet de retrouver tous les objets et leurs imbrications. Lisez ce que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/standards/
    http://www.sqlspot.com/Norme-de-developpement.html

    Cependant un premier niveau d'imbrication vous est donné par la vue sys.sysdepends

    A +

  3. #3
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut Non,
    Bonsoir,

    Si vous voulez analyser les dépendances en statique vous pouvez utiliser sys.sysdepends comme SQLPro vous l'indique,

    Pour 30 procédures, ça n'en vaut pas la peine, mais pour info:

    Si vous voulez comprendre comment s'enchaînent les appels de procédures stockées en live, vous pouvez utiliser le profiler.

    Au niveau développement, si vous voulez tracer les appels dans une table de votre cru, vous pouvez utiliser un mécanisme comme le suivant:


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    --Table de trace
    CREATE TABLE [dbo].[tbTracePs](
    	[id] [int] IDENTITY(1,1) NOT NULL ,
    	[dt] [datetime] NOT NULL DEFAULT getutcdate() PRIMARY KEY CLUSTERED,
    	[szProcedureName] [nvarchar](128) NOT NULL,
    	[szTrace] [varchar](255) NOT NULL)
     
    -Procédure de trace
    CREATE PROCEDURE PsTrace
    @szProcedureName NVARCHAR(128),
    @szTrace VARCHAR(255)
    AS
    BEGIN
    	BEGIN TRY
    	--Indente en fonction du niveau d'imbrication	
            SET @szTrace = REPLICATE('_', @@NESTLEVEL) + @szTrace
     
    		INSERT INTO tbTracePs (szProcedureName, szTrace)
    		VALUES (@szProcedureName, @szTrace)
    	END TRY
    	BEGIN CATCH
    	END CATCH
    END
     
    --Exemple d'appel
    CREATE PROCEDURE MaProc
    AS 
    BEGIN
    	DECLARE @szPsName NVARCHAR(128)
    	SET @szPsName = OBJECT_NAME(@@PROCID)
     
    	EXEC PsTrace @szPsName, 'Ma trace'
     
    	--Traitement ici
    END

    Ce code ralentira votre base, si vous cherchez un mécanisme débrayable,
    vous pouvez utiliser une solution comme TSQLMacro

    @+

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 54
    Points
    54
    Par défaut
    Merci bien, je vais regarder tout cela ...

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

Discussions similaires

  1. scope des sous fonction et TkInter
    Par sopsag dans le forum Général Python
    Réponses: 14
    Dernier message: 30/10/2009, 17h12
  2. Empecher "l'ouverture" des sous fonctions d'un fichier-m
    Par lapinoufly dans le forum MATLAB
    Réponses: 1
    Dernier message: 01/07/2009, 10h07
  3. Réponses: 1
    Dernier message: 30/08/2006, 18h08
  4. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41
  5. Propriétés des sous-fonctions
    Par rodb7 dans le forum C
    Réponses: 21
    Dernier message: 06/03/2006, 09h34

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