SQL Server - DENY EXECUTE

   
Vista:

DENY EXECUTE

Publicado por Ana (14 intervenciones) el 19/05/2008 17:37:25
Hola! es posible denegar permisos de ejecucion mediante algo parecido a este comando?:

DENY EXECUTE ON [dbo].[sp_Delete_Actividad] TO @User

porque obtengo el siguiente error:

Server: Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near '@User'.

y por lo que he podido deducir el problema esta en pasarle una variable y no un usuario como tal. El problema es que en mi sistema no se especificamente a quien se le va a denegar el permiso, sino que depende de la persona que este logeado en el momento.

Sugerencias???

Muchas gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DENY EXECUTE

Publicado por Isaias (3308 intervenciones) el 19/05/2008 20:21:13
Si @User es una VARIABLE que contiene el user al cual se le van a negar los permisos de ejecucion, debe utilizar QUERY DINAMICO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DENY EXECUTE

Publicado por Ana (14 intervenciones) el 20/05/2008 17:20:31
Gracias por responder Isaias, obviamente es un QUERY DINAMICO, para eso uso una variable asi q no me dices nada nuevo. La pregunta era COMO hacer ese query.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DENY EXECUTE

Publicado por Daniel (10 intervenciones) el 20/05/2008 04:19:57
Hola Ana, no he usado ese comando para denegar permisos, pero si estas usando Microsoft SQL SERVER 7, 2000 o 2005, es sumamente sencillo, agradable y hasta divertido administrar los permisos de usuarios,

Lo unico que tienes que hacer es crear funciones de permisos en las cuales definiras los permisos de los cuales tendran privilegios ciertos usuarios ( puedes crear distintas funciones segun los requerimientos)..

Una vez creadas esas funciones agregas a cada usuario a esas funciones y solo tendran los permisos defindos en esa funcion

en una funcion puedes definir permisos tales como SELECT, INSERT, DELET, UPDATE para cada tabla, tambien permisos para ejecutar o no Vistas, Procedimientos Almacenados y Desencadenadores entre otros.

Para hacer todo esto tienes que ir al Administrador corporativo, busca dodo dice Funciones o Roles en ingles.. y sigue los pasos que te indica el asistente.. esto es si ya tienes los usuarios creados sino ps tienes que crearlos de la misma manera donde dice Usuarios en el administrador corporativo (Enterprise Manager)

Si lo kieres hacer mediante comandos para hacer una interfaz y agrgarla a tu sistema usa los siguientes procedimientos almacenados que se encuentran en la tabla master:

sp_addlogin 'dany', '1234', 'Hotel' -- este prcedimiento crea un usuario.. sus parametros son: login de usuario, password y el nombre de la base de datos

sp_adduser 'dany', Daniel Martinez -- este procedimiento asocia un nombre de usuario al login

sp_addrolemember 'FuncionPrincipal','Daniel Martinez ' -- este procedimiento asocia un usuario a una funcion con permisos ya definidos

espero te sirva y que me halla explicado.. me lo haces saber porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DENY EXECUTE

Publicado por Ana (14 intervenciones) el 20/05/2008 17:21:00
Hola Daniel, gracias por responder.
La verdad ya tengo toda la estructura que sugieres montada y funcionando perfectamente, el detalle es que necesito denegar permisos a unas personas en particular por lo que no me sirve denegar permisos a tooodo el grupo. Otro factor importante es que necesito denegar el permiso de manera dinamica puesto que no se en este momento que usuarios seran los afectados, por estos motivos es que estaba realizando un procedimiento almacenado que ejecutara el DENY EXECUTE para cualquier usuario (es decir, una variable @User).

Sin embargo, despues de tanto pensar encontre una solucion:

EXEC ('DENY EXECUTE ON [dbo].[sp_Add_Role_Constructores_EAT] TO [' + @User + ']')

donde la variable @User se setea con el usuario afectado.

De todas maneras muchas gracias a todos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DENY EXECUTE

Publicado por Isaias (3308 intervenciones) el 21/05/2008 20:04:20
Ana

No acostumbramos en los foros "hacer el trabajo", solo damos guias de que hay que hacer.

Esto que tu haces:

EXEC ('DENY EXECUTE ON [dbo].[sp_Add_Role_Constructores_EAT] TO [' + @User + ']')

Es un QUERY DINAMICO, unicamente que estructurado con la version anterior de 2000.

Te sugiero leas un poco sobre SP_EXECUTESQL y deseches EXEC(String)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar