Damit ein Aufrufer einen PROC
verwenden kann mit einem Tabellenwertparameter müssen Sie (unintuitiv) Ausführungsberechtigungen erteilen
auf dem TVP
Typ für diejenigen, die PROC
aufrufen d.h.
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]
Bearbeiten
Ich glaube, ich konnte das Problem replizieren, nämlich mit einem minimalen Satz von Berechtigungen arbeiten, die einem Benutzer gewährt wurden. Der entscheidende Schritt besteht darin, dass der DBO oder Schema-Eigentümer Ihres TVP Ihnen den folgenden Zugriff darauf gewährt, um ihn in einem PROC
verwenden zu können (Ohne diesen Zugriff konnte ich eine lose Variable vom Typ TVP deklarieren, aber nicht in einem PROC verwenden).
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.
Hier Referenz gewähren
(Natürlich benötigen Sie auch CREATE PROCEDURE
Erlaubnis sowie relevanter Zugriff auf alle Objekte, die in der PROC verwendet werden)
Verbraucher des PROC benötigen außerdem den GRANT EXECUTE
Erlaubnis für den Proc und für den Typ gemäß der ursprünglichen Antwort.