Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Welche Berechtigung benötige ich, um einen SQL Server-Tabellenwertparameter (TVP) als gespeicherten Prozessparameter zu verwenden?

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.