Je peux consulter le plan d'exécution estimé (Management Studio 9.0) pour une requête sans problème, mais en ce qui concerne les procédures stockées, je ne vois pas comment le faire facilement sans copier le code de l'écran ALTER et le coller dans un fenêtre de requête, sinon le plan pour ALTER sera affiché, pas la procédure. Même après cela, toutes les entrées manquent et je devrais les déclarer comme telles.
Y a-t-il un moyen plus simple de faire cela sur les procédures stockées?
Edit: Je viens de penser à quelque chose qui pourrait fonctionner, mais je ne suis pas sûr.
Puis-je faire le plan d'exécution estimé sur
exec myStoredProc 234
SET SHOWPLAN_ALL ON
GO
-- FMTONLY will not exec stored proc
SET FMTONLY ON
GO
exec yourproc
GO
SET FMTONLY OFF
GO
SET SHOWPLAN_ALL OFF
GO
Sélectionnez le nom de la procédure stockée (tapez-le simplement dans une fenêtre de requête), cliquez avec le bouton droit de la souris et choisissez le bouton "Afficher le plan d'exécution estimé" dans la barre d'outils de SQl Server Mgmt Studio .Remarque que vous n'avez pas. d'avoir le code de procédure stockée ouvert. Seul le nom de la procédure doit être sélectionné.
Le plan de la procédure stockée à partir de dans les procédures appelées sera également affiché sous forme graphique.
Lorsque vous exécutez une procédure stockée dans SQL Management Studio 2008, vous pouvez cliquer sur Requête -> Inclure le plan d'exécution réel dans le menu ... il apparaît également dans la barre d'outils.
Après avoir lu les commentaires, l’exécution semble être un problème et pour résoudre ce problème, je vous recommande d’envelopper l’exécution de la procédure stockée dans une transaction en l’annulant à la fin.
Utilisation
SET SHOWPLAN_ALL ON
Go
exec myStoredProc 234
GO
SET SHOWPLAN_ALL OFF
GO
Voir http://msdn.Microsoft.com/en-us/library/aa259203.aspx Tant que vous n'utilisez pas les tableaux tmp, je pense que cela fonctionnera
Je sais que la réponse a été envoyée il y a quelque temps, mais je trouve la requête ci-dessous utile
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT [ProcedureName] = OBJECT_NAME([ps].[object_id], [ps].[database_id])
,[ProcedureExecutes] = [ps].[execution_count]
,[VersionOfPlan] = [qs].[plan_generation_num]
,[ExecutionsOfCurrentPlan] = [qs].[execution_count]
,[Query Plan XML] = [qp].[query_plan]
FROM [sys].[dm_exec_procedure_stats] AS [ps]
JOIN [sys].[dm_exec_query_stats] AS [qs] ON [ps].[plan_handle] = [qs].[plan_handle]
CROSS APPLY [sys].[dm_exec_query_plan]([qs].[plan_handle]) AS [qp]
WHERE [ps].[database_id] = DB_ID()
AND OBJECT_NAME([ps].[object_id], [ps].[database_id]) = 'TEST'
L'exécution de la procédure stockée dans Management Studio (ou l'analyseur de requête) avec l'option Afficher le plan d'exécution réel (à partir du menu de requête) activée vous montrera le plan de la procédure stockée après son exécution. Si vous ne pouvez pas l'exécuter, un plan d'exécution estimé est affiché (bien que, selon mon expérience, il soit souvent moins précis.)
Vous pouvez également utiliser Profiler pour voir le plan d'exécution. Vous voudrez inclure l'option Performance: Afficher le profil de statistiques de planification et assurez-vous d'inclure des données binaires dans vos colonnes.
Vous pouvez ensuite exécuter n'importe quelle requête ou procédure et consulter le plan d'exécution.
Modifier
Si vous ne pouvez pas utiliser le profileur et que vous ne voulez pas ouvrir une autre fenêtre, je vous suggère d'inclure un bloc de commentaires au début de vos procédures stockées. Par exemple, imaginez ce qui suit:
/*
Description: This procedure does XYZ etc...
DevelopedBy: Josh
Created On: 4/27/09
Execution: exec my_procName N'sampleparam', N'sampleparam'
*/
ALTER PROCEDURE my_procName
@p1 nvarchar(20),
@p2 nvarchar(20)
AS
Ce que cela permet, c’est que vous pouvez uniquement souligner l’objectif d’exécution et activer le plan d’exécution de l’affichage. Et lance-le.