Pour qu'un appelant utilise un PROC
avec un paramètre de table, vous devrez (intuitivement) accorder des autorisations d'exécution
sur le TVP
tapez à ceux qui appellent le PROC
c'est-à-dire
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]
Modifier
Je crois que j'ai pu reproduire le problème, à savoir en travaillant à partir d'un ensemble minimal d'autorisations accordées à un utilisateur. L'étape essentielle est que le DBO ou le propriétaire du schéma de votre TVP vous accorde l'accès suivant à celui-ci, afin de pouvoir l'utiliser dans un PROC
(sans cet accès, je pouvais déclarer une variable libre de type TVP, mais pas l'utiliser dans une PROC).
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.
Accorder la référence ici
(Évidemment, vous aurez également besoin de CREATE PROCEDURE
autorisation, plus un accès pertinent à tous les objets utilisés dans le PROC)
Les consommateurs du PROC devront également avoir le GRANT EXECUTE
permission sur le Proc et sur le Type selon la réponse initiale.