Ben*_*ein 567
执行:
SELECT name FROM master.sys.databases
这是现在的首选方法,而不是dbo.sysdatabases已经弃用了一段时间.
执行此查询:
SELECT name FROM master.dbo.sysdatabases
Run Code Online (Sandbox Code Playgroud)
或者如果你愿意的话
EXEC sp_databases
Run Code Online (Sandbox Code Playgroud)
Gil*_*lit 84
鉴于非用户数据库数量的模糊性,您应该添加:
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
Run Code Online (Sandbox Code Playgroud)
并添加报告服务数据库的名称
Gil*_*ilM 52
要排除系统数据库:
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6
Run Code Online (Sandbox Code Playgroud)
编辑:2013年2月2日下午2:36
更新了准确的database_id,它应该大于4,以跳过列出数据库ID介于1和4之间的系统数据库.
SELECT *
FROM sys.databases d
WHERE d.database_id > 4
Run Code Online (Sandbox Code Playgroud)
小智 27
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4
Run Code Online (Sandbox Code Playgroud)
适用于我们的SQL Server 2008
Chr*_*ver 22
由于您使用的是.NET,因此可以使用SQL Server管理对象
Dim server As New Microsoft.SqlServer.Management.Smo.Server("localhost")
For Each db As Database In server.Databases
Console.WriteLine(db.Name)
Next
Run Code Online (Sandbox Code Playgroud)
Bal*_*aji 18
不要混淆,使用下面的简单查询来获取所有数据库,
select * from sys.databases
Run Code Online (Sandbox Code Playgroud)
如果你只需要用户定义的数据库;
select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
Run Code Online (Sandbox Code Playgroud)
一些系统数据库名称是(resource,distribution,reportservice,reportservicetempdb),只需将其插入查询即可.如果您的机器中有上述数据库作为默认值.
小智 7
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'
Run Code Online (Sandbox Code Playgroud)
这将适用于两种情况,是否启用报告
如果要省略系统数据库和 ReportServer 表(如果已安装)
select DATABASE_NAME = db_name(s_mf.database_id)
from sys.master_files s_mf
where
s_mf.state = 0 -- ONLINE
and has_dbaccess(db_name(s_mf.database_id)) = 1
and db_name(s_mf.database_id) NOT IN ('master', 'tempdb', 'model', 'msdb')
and db_name(s_mf.database_id) not like 'ReportServer%'
group by s_mf.database_id
order by 1;
Run Code Online (Sandbox Code Playgroud)
这适用于 SQL Server 2008/2012/2014。大多数查询来自“ sp_databases ”系统存储过程。我只删除了不需要的列并添加了 where 条件。
我使用下面的SQL Server管理对象代码来获取不是系统数据库也不是快照的数据库列表。
using Microsoft.SqlServer.Management.Smo;
public static string[] GetDatabaseNames( string serverName )
{
var server = new Server( serverName );
return ( from Database database in server.Databases
where !database.IsSystemObject && !database.IsDatabaseSnapshot
select database.Name
).ToArray();
}
Run Code Online (Sandbox Code Playgroud)