Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. databasename..sp_helpprotect 'storedProcedureName', 'username'
  2.  
  3. databasename..sp_canexecute 'storedProcedureName', 'username'
  4.  
  5. EXECUTE AS USER = 'username';
  6. SELECT * FROM fn_my_permissions('[storedProcedureSchema].[storedProcedureName]', 'OBJECT')
  7. where permission_name = 'EXECUTE'
  8. ORDER BY subentity_name, permission_name ;
  9. REVERT;
  10.  
  11. CREATE PROCEDURE [dbo].[sp_canexecute]
  12. @procedure_name varchar(255),
  13. @username varchar(255),
  14. @has_execute_permissions bit OUTPUT
  15. AS
  16.  
  17. IF EXISTS (
  18. /* Explicit permission */
  19. SELECT 1
  20. FROM sys.database_permissions p
  21. INNER JOIN sys.all_objects o ON p.major_id = o.[object_id] AND o.[name] = @procedure_name
  22. INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id AND dp.[name] = @username
  23. )
  24. OR EXISTS (
  25. /* Role-based permission */
  26. SELECT 1
  27. FROM sys.database_permissions p
  28. INNER JOIN sys.all_objects o ON p.major_id = o.[object_id]
  29. INNER JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id AND o.[name] = @procedure_name
  30. INNER JOIN sys.database_role_members drm ON dp.principal_id = drm.role_principal_id
  31. INNER JOIN sys.database_principals dp2 ON drm.member_principal_id = dp2.principal_id AND dp2.[name] = @username
  32. )
  33. BEGIN
  34. SET @has_execute_permissions = 1
  35. END
  36. ELSE
  37. BEGIN
  38. SET @has_execute_permissions = 0
  39. END
  40. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement