Est-il possible de dire quel processus a appelé la procédure stockée en cours d'exécution?T-SQL - Appelé appelé le proc en cours
1
A
Répondre
1
Il n'existe actuellement aucun moyen de le faire.
Mais s'il vous plaît ... Allez here et dites-leur que vous voulez cette fonctionnalité.
EDIT:
Je regardai dans ce un peu plus, et a trouvé une solution de contournement potentiel (laid à utiliser à cet effet, mais il semble que cela pourrait être faisable):
Ceci est de Livres en ligne:
- informations de contexte de session est stockée dans la colonne CONTEXT_INFO dans le tableau master.dbo.sysprocesses. Ceci est une colonne varbinary (128).
- SET CONTEXT_INFO ne peut pas être spécifié dans une fonction définie par l'utilisateur. Vous ne pouvez pas fournir une valeur null à SET CONTEXT_INFO car la table sysprocesses n'autorise pas les valeurs NULL.
- SET CONTEXT_INFO n'accepte pas les expressions autres que les constantes ou les noms de variables. Pour définir les informations de contexte sur le résultat d'un appel de fonction, vous devez d'abord placer le résultat de l'appel de fonction dans une variable binaire ou varbinaire.
- Lorsque vous SET CONTEXT_INFO dans émettez une procédure stockée ou un déclencheur, contrairement à d'autres instructions SET, la nouvelle valeur définie pour les informations de contexte persiste après l'intervention stockée ou du trigger.
Alors, voici mon idée:
ajouter ce code à toutes vos procédures:
DECLARE @UID VARBINARY(128)
SELECT @UID = CAST('ThisProcedureName' AS VARBINARY(128))
SET CONTEXT_INFO @UID
Ensuite, vous ajoutez ce contrôle où vous en avez besoin:
DECLARE @Message varbinary(128)
SELECT @Message = cast('TestB' as varbinary(128))
IF (@Message = CONTEXT_INFO()) BEGIN
RAISERROR('Not Allowed unless from procedure XX', 16, 1)
END
0
Cette question était dans la liste des résultats lorsque je recherchais le même problème, mais j'ai trouvé le code suivant
print object_name(@@PROCID)
qui fonctionne un traitement dans un proc stocké, pour retourner le nom de la procédure stockée qui contenait. L'article original que j'ai trouvé au sql server central.
Questions connexes
- 1. tsql proc logique aide
- 2. Comment enregistrer le nom du fichier/ligne qui a appelé la fonction en cours en PHP?
- 3. Le délégué n'est pas appelé
- 4. sélecteur NSNotificationCenter pas appelé
- 5. Sybase stocké proc appelé depuis isql sous AIX: comment gérer le code retour
- 6. viewDidAppear appelé deux fois, mais viewWillAppear a appelé une fois
- 7. TSQL SQL 2000 stocké proc curseur
- 8. destructor est jamais appelé
- 9. initWithNibName est pas appelé
- 10. hook_form_submit n'est pas appelé
- 11. AJAX callback être appelé
- 12. TStringGrid - OnMouseUp n'est pas appelé!
- 13. OnApplyTemplate n'est pas appelé
- 14. UITableView cellforrowatindexpath pas appelé
- 15. Indicatifs non appelé
- 16. onBind/onRebind non appelé Service
- 17. doFilter pas appelé
- 18. ViewDidAppear/viewWillAppear pas appelé
- 19. SQLAlchemy - MapperExtension.before_delete pas appelé
- 20. applicationWillEnterForeground jamais appelé
- 21. ON_EN_KILLFOCUS appelé plusieurs fois
- 22. textFieldShouldEndEditing appelé plusieurs fois
- 23. netServiceBrowserDidStopSearch pas appelé
- 24. tableView sortDescriptorsDidChange: pas appelé
- 25. WPF: OnMouseLeftButtonDown non appelé
- 26. Android: onTouch pas appelé
- 27. n'est pas appelé JSF
- 28. DllMain pas appelé
- 29. pyinotify.ThreadedNotifier, process_ * pas appelé
- 30. calloutAccessoryControlTapped pas appelé/déclenché
J'ai posté une pointe sur mon blog y compris le code source: http://www.thecodepage.com/post/TIP-A-Call-Stack-in-SQL-Server.aspx –