vistas usuario una stored sobre procedimientos permisos para listar ejecutar datos dar crear asignar almacenados all sql sql-server sql-server-2000

usuario - permisos para crear vistas en sql



¿Otorgar permiso de ejecución para un usuario en todos los procedimientos almacenados en la base de datos? (5)

Cree un rol agregue este rol a los usuarios, y luego puede otorgar la ejecución a todas las rutinas en una sola toma para este rol.

CREATE ROLE <abc> GRANT EXECUTE TO <abc>

EDITAR
Esto funciona en SQL Server 2005, no estoy seguro de la compatibilidad con versiones anteriores de esta característica, estoy seguro de que algo posterior a 2005 debería estar bien.

Genere script desde una base de datos antigua, creé una nueva base de datos e importé todos los datos de la base de datos anterior. Hasta ahora todo bien, sin embargo, ningún usuario tiene derechos de ejecución para procedimientos almacenados. Sé que puedo usar

GRANT EXECUTE ON [storedProcName] TO [userName]

Sin embargo, si se tratara de unos pocos procedimientos, tengo unos 100, entonces, ¿cuál es la forma más fácil de otorgar acceso de ejecución para un usuario específico a todos ellos?

Gracias por adelantado.


Esta es una solución que significa que a medida que agrega nuevos procedimientos almacenados al esquema, los usuarios pueden ejecutarlos sin tener que llamar la ejecución de concesión en el nuevo procedimiento almacenado:

IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N''asp_net'') DROP USER asp_net GO IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N''db_execproc'' AND type = ''R'') DROP ROLE [db_execproc] GO --Create a database role.... CREATE ROLE [db_execproc] AUTHORIZATION [dbo] GO --...with EXECUTE permission at the schema level... GRANT EXECUTE ON SCHEMA::dbo TO db_execproc; GO --http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html --Any stored procedures that are created in the dbo schema can be --executed by users who are members of the db_execproc database role --...add a user e.g. for the NETWORK SERVICE login that asp.net uses CREATE USER asp_net FOR LOGIN [NT AUTHORITY/NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo] GO --...and add them to the roles you need EXEC sp_addrolemember N''db_execproc'', ''asp_net''; EXEC sp_addrolemember N''db_datareader'', ''asp_net''; EXEC sp_addrolemember N''db_datawriter'', ''asp_net''; GO

Referencia: Otorgar permiso de ejecución en todos los procedimientos almacenados


Sin complicar demasiado el problema, otorgar el EXECUTE en la base de datos elegida:

USE [DB] GRANT EXEC TO [User_Name];


utilice el código siguiente, cambie el nombre de la base de datos y el nombre de usuario adecuados y luego tome ese resultado y ejecútelo en SSMS. PARA SQL 2005 ARRIBA

USE <database_name> select ''GRANT EXECUTE ON [''+name+''] TO [userName] '' from sys.objects where type =''P'' and is_ms_shipped = 0


USE [DATABASE] DECLARE @USERNAME VARCHAR(500) DECLARE @STRSQL NVARCHAR(MAX) SET @USERNAME=''[USERNAME] '' SET @STRSQL='''' select @STRSQL+=CHAR(13)+''GRANT EXECUTE ON [''+ s.name+''].[''+obj.name+''] TO''+@USERNAME+'';'' from sys.all_objects as obj inner join sys.schemas s ON obj.schema_id = s.schema_id where obj.type in (''P'',''V'',''FK'') AND s.NAME NOT IN (''SYS'',''INFORMATION_SCHEMA'') EXEC SP_EXECUTESQL @STRSQL