Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- databasename..sp_helpprotect 'storedProcedureName', 'username'
- databasename..sp_canexecute 'storedProcedureName', 'username'
- EXECUTE AS USER = 'username';
- SELECT * FROM fn_my_permissions('[storedProcedureSchema].[storedProcedureName]', 'OBJECT')
- where permission_name = 'EXECUTE'
- ORDER BY subentity_name, permission_name ;
- REVERT;
- CREATE PROCEDURE [dbo].[sp_canexecute]
- @procedure_name varchar(255),
- @username varchar(255),
- @has_execute_permissions bit OUTPUT
- AS
- IF EXISTS (
- /* Explicit permission */
- SELECT 1
- FROM sys.database_permissions p
- INNER JOIN sys.all_objects o ON p.major_id = o.[object_id] AND o.[name] = @procedure_name
- INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id AND dp.[name] = @username
- )
- OR EXISTS (
- /* Role-based permission */
- SELECT 1
- FROM sys.database_permissions p
- INNER JOIN sys.all_objects o ON p.major_id = o.[object_id]
- INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id AND o.[name] = @procedure_name
- INNER JOIN sys.database_role_members drm ON dp.principal_id = drm.role_principal_id
- INNER JOIN sys.database_principals dp2 ON drm.member_principal_id = dp2.principal_id AND dp2.[name] = @username
- )
- BEGIN
- SET @has_execute_permissions = 1
- END
- ELSE
- BEGIN
- SET @has_execute_permissions = 0
- END
- GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement