Granting the VIEW SERVER STATE Permission in SQL Server

In SQL Server, the VIEW SERVER STATE permission allows a user to view server-wide dynamic management views (DMVs) and functions. This is often useful for troubleshooting, monitoring, and performance tuning.

In this blog post, I’ll share how to check which users have the VIEW SERVER STATE permission, and granting this permission to a user.

1. Query to Check Users with VIEW SERVER STATE Permission

To verify that the user has been granted this permission, you can query the sys.server_permissions catalog view:

-- Check who has VIEW SERVER STATE permissions
SELECT 
    grantee.name AS UserName, 
    permission_name, 
    state_desc 
FROM 
    sys.server_permissions AS sp
JOIN 
    sys.server_principals AS grantee 
    ON sp.grantee_principal_id = grantee.principal_id
WHERE 
    permission_name = 'VIEW SERVER STATE';

This will return all users who have the VIEW SERVER STATE permission. If you are using Always On Availability Groups, you should verify that these permissions have been sync’d between all SQL Replicas.

2. Granting VIEW SERVER STATE Permissions

Here is a simple T-SQL example to GRANT this permission to a specific user:

-- Grant VIEW SERVER STATE permission for user
GRANT VIEW SERVER STATE TO [username];

Replace the [username] with the name of the Domain User or SQL login you want to grant the permission to.

To grant this permission, you will need to run as a sysadmin.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *