Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

De quelle autorisation ai-je besoin pour utiliser un paramètre de valeur de table SQL Server (TVP) en tant que paramètre de procédure stocké ?

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.