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 :

[2005] Voir l'execution plan d'un trigger


Sujet :

Développement SQL Server

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut [2005] Voir l'execution plan d'un trigger
    Bonjour,

    Je travaille avec Sql Server Managment Studio (2005) et j'aimerais savoir comment prévisualiser l'execution plan d'un trigger.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    CREATE TRIGGER [dbo].[tClubMembers_AFUPDINS]
       ON  [dbo].[tClubMembers]
       AFTER UPDATE, INSERT
    AS 
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON
     
    	UPDATE tMembers
    	SET HomeClub = I.IdClub
    	FROM inserted AS I
    	WHERE I.IsHomeclub = 1
    	AND tMembers.Id = I.IdMember
    	-- to avoid meaningless update (and potential trigger recusrion)
    	AND tMembers.HomeClub <> I.IdClub
     
    	UPDATE tClubMembers
    	SET IsHomeclub = 0
    	FROM inserted AS I 
    	INNER JOIN tMembers AS T ON (
    		T.Id = I.IdMember
    	)
    	WHERE I.IsHomeclub = 1
    	AND tClubMembers.IdMember = I.IdMember
    	AND tClubMembers.IdClub <> T.HomeClub;
     
     
        -- Synchro
    	WITH concernedClubs
    	(
    		IdClub
    	) AS (
    		SELECT
    			C.Id
    		FROM tClubs AS C
    		WHERE C.IsMygolf = 1
    		AND C.Federal = 1
    	)
     
    	INSERT tSynchro_BatchMemberLines
    	(
    		IdMember
    		, IdClub
    	)
    	SELECT 
    		I.IdMember
    		, I.IdClub
    	FROM inserted AS I
    	INNER JOIN tMembers AS M ON (
    		M.Id = I.IdMember
    		AND
    		M.FederalNumber <> ''
    	)
    	WHERE EXISTS (
    		SELECT TOP(1) 1
    		FROM concernedClubs AS C
    		WHERE C.IdClub = I.IdClub
    	)
    	AND
    	(
    		I.Membership > GETDATE()
    		OR EXISTS (
    			SELECT TOP(1) 1
    			FROM deleted AS D
    			WHERE D.IdMember = I.IdMember
    			AND D.IdClub = I.IdClub
    			AND D.Membership > GETDATE()
    		)
    	)
    END
    Le problème, si j'utilise "Query" -> "Display estimated execution plan..." est que ce plan sera établit sur la commande CREATE

    Savez-vous comment faire ? (en employant les tables virtuelles inserted et delete, je ne peux hélas pas sortir le query d'une creation de trigger).

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Tu peux utiliser profiler, lancer une trace configuree pour te retourner l'execution plan des requetes et ensuite executer une commande d'insertion ou d'update et analyser le resultat obtenu dans ta trace.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Je ne sais pas de quoi tu parles, dans le profiler je peux voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL:BatchStarting	UPDATE TOP(1) [MyGolf].[dbo].[tClubMembers]
    SET           [Membership] = DATEADD(yyyy, 1, GETDATE())
    FROM [MyGolf].[dbo].[tClubMembers]
    	57	2009-09-10 15:43:22.650
    Mais je ne connais pas de façon d'en extraire un execution plan.

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Tu dois definir les evenements a capturer de ta trace:
    Onglet event selection -> cocher show all event -> performance -> cocher showplan xml

    Ensuite, lancer ta trace.
    Elle te montrera les executions plan

    En screenshot ce que tu dois cocher et ce que tu peux obtenir.
    Images attachées Images attachées   

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Y a aucune de ces options dans le template par défaut (rappel, je suis en 2005 et je découvre le profiler).
    J'ai dû chercher dans un template blank où j'ai trouvé cela.

    Merci.

  6. #6
    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,

    Sous SQL Server Management Studio : CTRL + L

    @++

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Non, elsuket, tout est dans l'énnoncé.

    Le problème est résolu suite aux suggestions de Ptit_Dje.

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

Discussions similaires

  1. [2005] CLR with execute as 'myUser'
    Par CUCARACHA dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 23/06/2008, 09h55
  2. SQL 2005 - Même requête - différent plan d'exécution
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/06/2008, 14h50
  3. Voir le code de ses procédures/triggers
    Par neo62matrix dans le forum Administration
    Réponses: 4
    Dernier message: 19/03/2008, 15h31
  4. Bug avec l execution plan
    Par gepeto28 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/06/2007, 10h18
  5. [2005] creer un executable sans .NET
    Par magnus2005 dans le forum Visual C++
    Réponses: 6
    Dernier message: 20/04/2007, 10h10

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