• will take a stab.

    You might need to have a limited user,X, created and then give access to each system table needed to each user X for each DB

    So this is probably the least you need to do,

    have a login say, test created Then

    use master

    GRANT SELECT ON sys.DATABASES TO test ;

    EXEC sp_MSforeachdb N' use ? create user test for login test'

    EXEC sp_MSforeachdb N'GRANT SELECT ON ?.sys.internal_tables to test'

    EXEC sp_MSforeachdb N'GRANT SELECT ON ?.sys.partitions to test'

    and so on for the specific tables you need.

    Catch-all queries done right [/url]
    Gail Shaw's Performance Blog[/url]