SQL Server permissions can be granted to on an object level (schema, database, database objects). In newer versions of SQL Server permissions can be given to user at a more granular level.
To retrieve all the permissions granted to a specific user SQL server has a function named: fn_my_permission. This function is only accessible to system administrator. e.g
following query will retrieve all the permissions on server.
select * From fn_my_permissions(NULL, NULL)
following query retrieve all the permissions on a database:
select * From fn_my_permissions(NULL, ‘database’)
following query retrieve all the permissions on a dbo schema:
select * From fn_my_permissions(’dbo’, ’schema’)