Rob Allen (as a part of his work on his WinPHP Challenge entry) has posted a little code snippet to his blog about fetching the list of all databases sitting on a SQL Server instance.
I need to get a list of databases from SQL Server for the currently logged in user. Initially, I found a built in function sp_databases. This looked promising, until I discovered that it didn't work for my user. I'm pretty sure that it's related to permissions. The user just has db_owner on a specific database and nothing else.
He ended up selecting from a sys.database table where the name wasn't in a grouping of standard SQL Server databases (like "master" or "msdb"). He wrapped this in a foreach with a try/catch to catch errors thrown and drops all of the names into a regular array.