I’m looking to query all databases mapped to a user, similar to Security > Logins > Properties > User Mapping.
This may be done in SQL 2005 if possible
For example, something similar to:
SELECT name
FROM sys.databases
WHERE HAS_DBACCESS(name) = 1
But perform the query from an administrative user, as opposed to running the above query as the user itself.
How would something like this be performed?
Thank you.
Well this might be a start, probably not the nice output you’d hope for (and it produces two resultsets):
But it does work on SQL Server 2000. If you want to try and replicate some of the functionality in the procedure, you can see how it’s checking for permissions, basically a cursor through every database. On SQL Server 2000:
On 2005+ I much prefer the output of OBJECT_DEFINITION():
So you could write your own cursor based on similar logic, and make the output prettier…
Here is a quick (and not complete) example, doesn’t cover much but an idea to get started if the above is not sufficient:
As I said, this is not complete. Won’t know if the user has been denied connect, is member of deny reader/writer roles, won’t show the alias if the user name in the db doesn’t match the login, etc. You can dig into more details from
sp_helploginsdepending on what you want to show.