jueves, 21 de enero de 2010

Conceder permisos de ejecucion a todos los procedimientos almacenados

Como conceder permisos de ejecución en todos los SP. Hacer esto con el administrador de base de datos puede ser muy molesto, si tenemos más de 300 procedimientos almacenados.

Si usted quiere darle permisos de ejecutar a todos los sp de una bases datos pueden utilizar el siguiente script, con este permiso van a tener acceso a todos los sp actuales y nuevos.


use northwind
GO
GRANT EXECUTE TO [cambie_por_su_usuario]
GO




si ustedes quiere darle permisos individuales por store procedure que es mas seguro
se puede crear un pequeño script con la ayuda de una cadena que le da permiso para el nuevo usuario de SQL Server a todos los procedimientos almacenados.


select 'Grant Execute on [' + name + '] to [cambie_por_su_usuario]'
from sysobjects where xtype in ('P')



esto generara un script lo corren y listo.


En base a este codigo se puede jugar por ejemplo el siguiente script le proporciona ver la deficinion de todos los sp


select 'Grant VIEW DEFINITION ON [' + name + '] to [cambie_por_su_usuario]'
from sysobjects where xtype in ('P')



Por ultimo ejemplo como proporcionarle acceso a todas las tablas:


select 'Grant select,insert,update,delete on ' + name + ' [cambie_por_su_usuario]''
from sysobjects where xtype in ('U','V')



aun que esto tambien se puede dar con otro permiso, inseguro pero se puede y con una sola linea.


use mydb
go

exec sp_addrolemember db_datareader, [cambie_por_su_usuario]
go
exec sp_addrolemember db_datawriter , [cambie_por_su_usuario]
go


agradecimientos:
Luis =) Gracias por su punto de vista.

4 comentarios:

Tio Lucas dijo...

Muchísimas gracias!
Buenísimo tu post, me ayudó terriblemente.

Creo que hay un error en la línea:

select 'Grant select,insert,update,delete on ' + name + ' [cambie_por_su_usuario]''
from sysobjects where xtype in ('U','V')

creo que debería ser:

select 'Grant select,insert,update,delete on ' + name + ' to [cambie_por_su_usuario]'
from sysobjects where xtype in ('U','V')

Un abrazo y gracias de nuevo.
Javier

Alatariel dijo...

Gracias Carlos!
Andaba averiguando sobre este tema y google me llevó a su página así q creo q está muy bien posicionada entre los buscadores.
Saludos,

Alatariel dijo...

Gracias Carlos!
Andaba averiguando sobre este tema y google me llevó a su página así q creo q está muy bien posicionada entre los buscadores.
Saludos,

Unknown dijo...

Muy buen aporte me sirvió muchísimo