6

Estoy usando la edición SQL Server 2008 Express.¿Cómo otorgo una función de base de datos para ejecutar permisos en un esquema? ¿Qué estoy haciendo mal?

He creado un nombre de usuario, una función y un esquema. He asignado un mapa del usuario al inicio de sesión y le he asignado el rol al usuario.

El esquema contiene varias tablas y procedimientos almacenados.

Me gustaría que la función tenga permisos de ejecución en todo el esquema.

He intentado otorgar permiso de ejecución a través de Management Studio y al ingresar el comando en una ventana de consulta.

GRANT EXEC ON SCHEMA::schema_name TO role_name 

pero cuando me conecto a la base de datos utilizando SQL Management Studio (como el nombre de usuario que he creado) en primer lugar no puedo ver los procedimientos almacenados, pero lo más importante es que me sale un error de permiso denegado al intentar ejecutarlos.

El procedimiento almacenado en cuestión no hace nada excepto seleccionar datos de una tabla dentro del mismo schma.

He intentado crear el procedimiento almacenado con y sin la línea:

WITH EXECUTE AS OWNER 

Esto no hace ninguna diferencia.

Sospecho que cometí un error al crear mi esquema, o hay un problema de propiedad en alguna parte, pero realmente estoy luchando para que algo funcione.

La única forma en que he logrado ejecutar los procedimientos almacenados es otorgando permisos de control al rol y también a ejecutarlo, pero no creo que este sea el modo correcto y seguro de proceder.

Cualquier sugerencia/comentario sería muy apreciada.

Gracias.

+0

¿Ha otorgado permisos de ejecución al usuario que creó para Sproc? –

Respuesta

4

Hay un par de problemas que puedo ver en su caso.

En primer lugar, necesitaría la definición de vista otorgada para que pueda ver los objetos en el estudio de administración.

Yo recomendaría esto si desea que el papel que tiene todos los permisos,

GRANT EXECUTE, SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION 
    ON Schema::SchemaName TO [RoleName/LoginName] 

También asegúrese de que el propietario de su esquema definido por el usuario es "dbo".

+1

CONCESIÓN VER CUALQUIER DEFINICIÓN PARA [someUser] GRANT VIEW SERVER STATE TO [someUser]/* Estos son otros 2 permisos para dar "solo lectura" a todo * / – granadaCoder

Cuestiones relacionadas