sql语句:查出sql server 2005所有数据库

如题。用一个sql语句查出sql server里所有的数据库。
我只知道SP_HELPDB;
不过查出的数据比较多,怕性能不行。
只查数据库名就好,其他信息不要。

可以的话查出access的所有数据库的sql语句也给一下。十分感谢。

楼上的太复杂了,用这个

查询数据库
select * From master.dbo.sysdatabases where name='数据库名' and status<>512
--读取库中的所有表名 (当前数据库)
select name from sysobjects where xtype='u'

详细的请参考:
http://www.cnblogs.com/terrorpig/archive/2009/01/04/1367759.html

create TABLE #DBInfo

( ServerName VARCHAR(100),

DatabaseName VARCHAR(100),

FileSizeMB INT,

LogicalFileName sysname,

PhysicalFileName NVARCHAR(520),

Status sysname,

Updateability sysname,

RecoveryMode sysname,

FreeSpaceMB INT,

FreeSpacePct VARCHAR(7),

FreeSpacePages INT,

PollDate datetime)

DECLARE @command VARCHAR(5000)

SELECT @command = 'INSERT INTO #DBInfo

(ServerName,

DatabaseName,

FileSizeMB,

LogicalFileName,

PhysicalFileName,

Status,

Updateability,

RecoveryMode,

FreeSpaceMB,

FreeSpacePct,

PollDate) SELECT

@@servername as ServerName,

' + '''' + '?' + '''' + ' AS DatabaseName,

CAST(sysfiles.size/128.0 AS int) AS FileSize,

sysfiles.name AS LogicalFileName, sysfiles.filename AS PhysicalFileName,

CONVERT(sysname,DatabasePropertyEx(''?'',''Status'')) AS Status,

CONVERT(sysname,DatabasePropertyEx(''?'',''Updateability'')) AS Updateability,

CONVERT(sysname,DatabasePropertyEx(''?'',''Recovery'')) AS RecoveryMode,

CAST(sysfiles.size/128.0 - CAST(FILEPROPERTY(sysfiles.name, ' + '''' +

'SpaceUsed' + '''' + ' ) AS int)/128.0 AS int) AS FreeSpaceMB,

CAST(100 * (CAST (((sysfiles.size/128.0 -CAST(FILEPROPERTY(sysfiles.name,

' + '''' + 'SpaceUsed' + '''' + ' ) AS int)/128.0)/(sysfiles.size/128.0))

AS decimal(4,2))) AS varchar(8)) + ' + '''' + '%' + '''' + ' AS FreeSpacePct,

GETDATE() as PollDate FROM dbo.sysfiles'

EXEC sp_MSForEachDB @command

SELECT

ServerName,

DatabaseName,

FileSizeMB,

LogicalFileName,

PhysicalFileName,

Status,

Updateability,

RecoveryMode,

FreeSpaceMB,

FreeSpacePct,

PollDate

FROM #DBInfo

ORDER BY

ServerName,

DatabaseName

select name from master..sysdatabses