2009-12-31 6 views

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):

SET CONTEXT_INFO

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

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 –

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.