För att en uppringare ska använda en PROC
med en tabellvärderad parameter måste du (ointuitivt) ge körrättigheter
på TVP
skriv till de som anropar PROC
dvs.
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]
Redigera
Jag tror att jag kunde replikera problemet, nämligen att arbeta från en minimal uppsättning behörigheter som beviljats en användare. Det viktiga steget är att DBO eller Schema Owner för din TVP ger dig följande åtkomst till den, för att kunna använda den i en PROC
(utan denna åtkomst kunde jag deklarera en lös variabel av typen TVP, men inte använda den i en PROC).
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.
Bevilja referens här
(Självklart behöver du också CREATE PROCEDURE
behörighet, plus relevant åtkomst till alla objekt som används i PROC)
Konsumenter av PROC måste också ha GRANT EXECUTE
behörighet på Proc och på Typ enligt det ursprungliga svaret.