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();
}
-4
如果要省略系统数据库和ReportServer表(如果已安装):
select
DATABASE_NAME = db_name(s_mf.database_id)
from
sys.master_files s_mf
where
s_mf.state = 0 and -- ONLINE
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
这适用于Sql Server 2008/2012/2014 . 大多数查询来自“sp_databases”系统存储过程 . 我只删除不需要的列并添加条件 .
SELECT db.[name] as dbname
FROM [master].[sys].[databases] db
LEFT OUTER JOIN [master].[sys].[sysusers] su on su.sid = db.owner_sid
WHERE su.sid is null
order by db.[name]
48
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4
适用于我们的SQL Server 2008
-4
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'
这适用于两种情况,是否启用报告
-4
您可以使用以下命令查找所有数据库名称: -
select name from sys.sysdatabases
2
不要混淆,使用下面的简单查询来获取所有数据库,
select * from sys.databases
如果你只需要用户定义的数据库;
select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
15 回答
我使用以下SQL Server Management Objects代码来获取不是't system databases and aren't快照的数据库列表 .
如果要省略系统数据库和ReportServer表(如果已安装):
这适用于Sql Server 2008/2012/2014 . 大多数查询来自“sp_databases”系统存储过程 . 我只删除不需要的列并添加条件 .
也许我是渡渡鸟!
show databases;
为我工作 .由于您使用的是.NET,因此可以使用SQL Server Management Objects
鉴于非用户数据库数量的模糊性,您应该添加:
并添加报告服务数据库的名称
在SQL Server 7中,dbid 1到4是系统dbs .
要排除系统数据库:
在SQL Server 2008 R2中,这适用于:
并仅列出用户创建的数据库 .
要排除系统数据库:
更新了准确的database_id,它应该大于4,以跳过列出数据库ID介于1和4之间的系统数据库 .
执行:
SELECT name FROM master.sys.databases
这是现在的首选方法,而不是
dbo.sysdatabases
,已经弃用了一段时间 .执行此查询:
或者如果你愿意的话
不确定这是否会省略报表服务器数据库,因为我没有运行它,但从我看到的情况来看,我可以使用此SQL省略系统用户拥有的数据库:
适用于我们的SQL Server 2008
这适用于两种情况,是否启用报告
您可以使用以下命令查找所有数据库名称: -
不要混淆,使用下面的简单查询来获取所有数据库,
如果你只需要用户定义的数据库;
一些系统数据库名称是(resource,distribution,reportservice,reportservicetempdb),只需将其插入查询即可 . 如果您的机器中有上述数据库作为默认值 .