Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

De que permissão preciso para usar um parâmetro de valor de tabela do SQL Server (TVP) como um parâmetro de proc armazenado?


Para que um chamador use um PROC com um parâmetro com valor de tabela, você precisará (não intuitivamente) conceder permissões de execução no TVP digite para aqueles que chamam o PROC ou seja
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]

Editar

Acredito que consegui replicar o problema, ou seja, trabalhando com um conjunto mínimo de permissões concedidas a um usuário. O passo vital é que o DBO ou Proprietário do Esquema do seu TVP conceda a você o seguinte acesso a ele, para poder usá-lo em um PROC (sem esse acesso, consegui declarar uma variável solta do tipo TVP, mas não usei em um PROC).
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.

Conceder referência aqui (Obviamente você também precisará de CREATE PROCEDURE permissão, além de acesso relevante a quaisquer objetos usados ​​no PROC)

Os consumidores do PROC também precisarão ter o GRANT EXECUTE permissão no Proc e no Type conforme a resposta inicial.