Comment tracer T-SQL appels de fonction

Je suis en train de déboguer un plutôt compliqué évaluateur de formule écrite en T-SQL Udf (ne demandez pas) que de manière récursive (mais indirectement par le biais d'un intermédiaire de la fonction) s'appelle elle-même, bla, bla.

Et, bien sûr, nous avons un bug.

Maintenant, à l'aide des instructions d'IMPRESSION (qui peut être lu à partir de ADO.NET par la mise en œuvre d'un gestionnaire pour l'événement InfoMessage), je peux simuler une trace pour les procédures stockées.

Faire la même chose pour UDF résultats dans un moment de la compilation du message:

Invalid use of side-effecting or time-dependent operator in 'PRINT' within a function.

Je reçois le message (IMPRESSION de ne certains trucs comme la réinitialisation de @@ROWCOUNT qui définitivement n'est pas dans les UDFs, mais comment puis-je trace à travers les appels? Je veux avoir cette trace imprimée, afin que je puisse l'étudier sans se laisser distraire par marcher à travers les appels dans le débogueur...

EDIT: j'ai essayé d'utiliser le générateur de profils SQL (c'était une première fois pour moi), mais je ne peux pas comprendre ce que l'on trace pour: Bien que je peux obtenir la trace à la sortie de la les requêtes adressées à la base de données, ils sont opaques dans le sens que je ne peux pas descendre à l'Expression-Udf appelle: je trace la réelle Procédure Stockée appelée, mais l'Udf appelle par la présente procédure ne sont pas répertoriés. Ai-je raté quelque chose? Je ne crois pas...

EDIT #2: bien que les (auto-)a accepté de répondre à n'trace les appels de fonction très utile, merci - ça n'aide pas à trouver quels sont les paramètres qui ont été passé à la fonction. Ceci, bien sûr, est essentiel dans de débogage fonctions récursives. Je vais poster si je trouve un solution à tous les...

  • Yep, découvrez la réponse de Matthieu ci-dessous, qui explique quels sont les événements que vous souhaitez ajouter à votre générateur de profils de configuration. Par défaut, il ne saisit que quelques événements, et ils ne sont pas ceux dont vous avez besoin pour votre dépannage.
InformationsquelleAutor Daren Thomas | 2008-12-09