tabla - procedimiento almacenado sql server select
¿Qué permiso necesito para usar un parámetro de valor de tabla de SQL Server(TVP) como un parámetro de proc almacenado? (2)
Estoy usando SQL Server 2008 R2 y he creado un TVP que quiero usar como parámetro para un proceso almacenado pero recibo un mensaje que dice que no se puede encontrar o no tengo permiso.
Puedo usar el TVP en un script o en el cuerpo del proceso almacenado, pero cuando trato de usarlo como parámetro obtengo el error.
¿Alguna idea?
Editar: para aclarar, el error que obtengo es sobre la creación del proceso almacenado
Para que una persona que llama pueda utilizar un PROC
con un parámetro de tabla valorada, deberá (sin querer) otorgar permisos de ejecución en el tipo de TVP
a aquellos que llaman al PROC
es decir,
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]
Editar
Creo que pude replicar el problema, es decir, trabajando desde un conjunto mínimo de permisos otorgados a un usuario. El paso vital es que el Dueño DBO o Schema de su TVP le otorgue el siguiente acceso a él, para poder usarlo en un PROC
(sin este acceso, pude declarar una variable suelta del tipo TVP , pero no lo use en un PROC).
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.
Concesión de referencia aquí (Obviamente, también necesitará el permiso CREATE PROCEDURE
, más el acceso relevante a cualquier objeto utilizado en el PROC)
Los consumidores de PROC necesitarán tener también el permiso GRANT EXECUTE
en el Proc y en el Tipo según la respuesta inicial.
Haga clic con el botón derecho en la función de valor de la tabla a la que desea otorgar acceso. Tome las propiedades del menú contextual.
1) Haga clic en la pestaña "Permisos" a la derecha.
2) Busque el nombre de usuario (SQL o Windows).
3) Seleccione ese usuario.
4) En la sección Permisos explícitos, en la parte inferior, seleccione Concesión para permisos de control, haga clic en Aceptar.
5) haz clic en Aceptar