Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Di quale autorizzazione ho bisogno per usare un parametro TVP (Tabella Valued Parameter) di SQL Server come parametro proc archiviato?

Affinché un chiamante possa utilizzare un PROC con un parametro con valori di tabella, dovrai (non intuitivamente) concedi i permessi di esecuzione sul TVP digita a quelli che chiamano il PROC cioè

GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]

Modifica

Credo di essere stato in grado di replicare il problema, vale a dire lavorando da un insieme minimo di autorizzazioni concesse a un utente. Il passaggio fondamentale è che il DBO o il proprietario dello schema del tuo TVP ti conceda il seguente accesso ad esso, per poterlo utilizzare in un PROC (senza questo accesso, sono stato in grado di dichiarare una variabile loose del tipo TVP, ma non usarla in un PROC).

GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.

Concedi riferimento qui (Ovviamente avrai bisogno anche di CREATE PROCEDURE autorizzazione, oltre all'accesso pertinente a qualsiasi oggetto utilizzato nel PROC)

I consumatori del PROC dovranno avere anche il GRANT EXECUTE permesso sul Proc e sul Type come da risposta iniziale.