Randolph West has a script for us:
Part of my job at work is to update Transact-SQL reference content. System dynamic management views (DMVs) have permissions that are managed in the SQL Server Database Engine source code, so it’s a little tricky to figure out the required permissions for a specific DMV.
This blog post provides a stored procedure that uses
sys.fn_builtin_permissions
to calculate permissions, but keep in mind that any custom permissions that you’ve implemented, can override the defaults.
This can serve as a quick check for whether your user account has the necessary permissions to access DMVs in a particular database.