Guest User

Untitled

a guest
Mar 23rd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. USE [DATENBANK]
  2. SELECT
  3. [UserName] = CASE princ.[type]
  4. WHEN 'S' THEN princ.[name]
  5. WHEN 'U' THEN ulogin.[name] COLLATE Latin1_General_CI_AI
  6. END,
  7. [UserType] = CASE princ.[type]
  8. WHEN 'S' THEN 'SQL User'
  9. WHEN 'U' THEN 'Windows User'
  10. END,
  11. [DatabaseUserName] = princ.[name],
  12. [Role] = null,
  13. [PermissionType] = perm.[permission_name],
  14. [PermissionState] = perm.[state_desc],
  15. [ObjectType] = obj.type_desc,--perm.[class_desc],
  16. [ObjectName] = OBJECT_NAME(perm.major_id),
  17. [ColumnName] = col.[name]
  18. FROM
  19. --database user
  20. sys.database_principals princ
  21. LEFT JOIN
  22. --Login accounts
  23. sys.login_token ulogin on princ.[sid] = ulogin.[sid]
  24. LEFT JOIN
  25. --Permissions
  26. sys.database_permissions perm ON perm.[grantee_principal_id] = princ.[principal_id]
  27. LEFT JOIN
  28. --Table columns
  29. sys.columns col ON col.[object_id] = perm.major_id
  30. AND col.[column_id] = perm.[minor_id]
  31. LEFT JOIN
  32. sys.objects obj ON perm.[major_id] = obj.[object_id]
  33. WHERE
  34. princ.[type] in ('S','U')
  35. UNION
  36. --List all access provisioned to a sql user or windows user/group through a database or application role
  37. SELECT
  38. [UserName] = CASE memberprinc.[type]
  39. WHEN 'S' THEN memberprinc.[name]
  40. WHEN 'U' THEN ulogin.[name] COLLATE Latin1_General_CI_AI
  41. END,
  42. [UserType] = CASE memberprinc.[type]
  43. WHEN 'S' THEN 'SQL User'
  44. WHEN 'U' THEN 'Windows User'
  45. END,
  46. [DatabaseUserName] = memberprinc.[name],
  47. [Role] = roleprinc.[name],
  48. [PermissionType] = perm.[permission_name],
  49. [PermissionState] = perm.[state_desc],
  50. [ObjectType] = obj.type_desc,--perm.[class_desc],
  51. [ObjectName] = OBJECT_NAME(perm.major_id),
  52. [ColumnName] = col.[name]
  53. FROM
  54. --Role/member associations
  55. sys.database_role_members members
  56. JOIN
  57. --Roles
  58. sys.database_principals roleprinc ON roleprinc.[principal_id] = members.[role_principal_id]
  59. JOIN
  60. --Role members (database users)
  61. sys.database_principals memberprinc ON memberprinc.[principal_id] = members.[member_principal_id]
  62. LEFT JOIN
  63. --Login accounts
  64. sys.login_token ulogin on memberprinc.[sid] = ulogin.[sid]
  65. LEFT JOIN
  66. --Permissions
  67. sys.database_permissions perm ON perm.[grantee_principal_id] = roleprinc.[principal_id]
  68. LEFT JOIN
  69. --Table columns
  70. sys.columns col on col.[object_id] = perm.major_id
  71. AND col.[column_id] = perm.[minor_id]
  72. LEFT JOIN
  73. sys.objects obj ON perm.[major_id] = obj.[object_id]
  74. UNION
  75. --List all access provisioned to the public role, which everyone gets by default
  76. SELECT
  77. [UserName] = '{All Users}',
  78. [UserType] = '{All Users}',
  79. [DatabaseUserName] = '{All Users}',
  80. [Role] = roleprinc.[name],
  81. [PermissionType] = perm.[permission_name],
  82. [PermissionState] = perm.[state_desc],
  83. [ObjectType] = obj.type_desc,--perm.[class_desc],
  84. [ObjectName] = OBJECT_NAME(perm.major_id),
  85. [ColumnName] = col.[name]
  86. FROM
  87. --Roles
  88. sys.database_principals roleprinc
  89. LEFT JOIN
  90. --Role permissions
  91. sys.database_permissions perm ON perm.[grantee_principal_id] = roleprinc.[principal_id]
  92. LEFT JOIN
  93. --Table columns
  94. sys.columns col on col.[object_id] = perm.major_id
  95. AND col.[column_id] = perm.[minor_id]
  96. JOIN
  97. --All objects
  98. sys.objects obj ON obj.[object_id] = perm.[major_id]
  99. WHERE
  100. --Only roles
  101. roleprinc.[type] = 'R' AND
  102. --Only public role
  103. roleprinc.[name] = 'public' AND
  104. --Only objects of ours, not the MS objects
  105. obj.is_ms_shipped = 0
  106. ORDER BY
  107. princ.[Name],
  108. OBJECT_NAME(perm.major_id),
  109. col.[name],
  110. perm.[permission_name],
  111. perm.[state_desc],
  112. obj.type_desc--perm.[class_desc]
Add Comment
Please, Sign In to add comment