Tuesday 9 October 2012

SQL list user name, database and permissionState

In Microsoft SQL Server How to list the User name and their role, Permission Type, Permission State

see all individual objects that each user has access to


SELECT 
    [UserName] = ulogin.[name],
    [UserType] = CASE princ.[type]
                    WHEN 'S' THEN 'SQL User'
                    WHEN 'U' THEN 'Windows User'
                    WHEN 'G' THEN 'Windows Group'
                 END, 
    [DatabaseUserName] = princ.[name],      
    [Role] = null,     
    [PermissionType] = perm.[permission_name],      
    [PermissionState] = perm.[state_desc],      
    [ObjectType] = CASE perm.[class]
                        WHEN 1 THEN obj.type_desc               
                        ELSE perm.[class_desc]                  
                   END,      
    [ObjectName] = CASE perm.[class]
                        WHEN 1 THEN OBJECT_NAME(perm.major_id)  
                        WHEN 3 THEN schem.[name]               
                        WHEN 4 THEN imp.[name]                   
                   END,
    [ColumnName] = col.[name]
FROM   
        sys.database_principals princ 
LEFT JOIN
       sys.server_principals ulogin on princ.[sid] = ulogin.[sid]
LEFT JOIN       
       sys.database_permissions perm ON perm.[grantee_principal_id] = princ.[principal_id]
LEFT JOIN
      sys.columns col ON col.[object_id] = perm.major_id
                    AND col.[column_id] = perm.[minor_id]
LEFT JOIN
    sys.objects obj ON perm.[major_id] = obj.[object_id]
LEFT JOIN
    sys.schemas schem ON schem.[schema_id] = perm.[major_id]
LEFT JOIN
    sys.database_principals imp ON imp.[principal_id] = perm.[major_id]
WHERE
    princ.[type] IN ('S','U','G') AND
    princ.[name] NOT IN ('sys', 'INFORMATION_SCHEMA')





or      try below query


select  
  princ.name,       
  princ.type_desc,       
  perm.permission_name,       
  perm.state_desc,       
  perm.class_desc,       
  object_name (perm.major_id)
from    sys.database_principals princ
 left join
        sys.database_permissions perm
on      perm.grantee_principal_id = princ.principal_id

1 comment:


  1. You can subscribe for video clips update on Online trainng related to topics Micorsoft Axapta ERP, Microsoft Power BI ,SQL Administration and Online Training clips etc

    https://www.youtube.com/user/sksingh1980

    ReplyDelete