如何获取SQL Server实例上的可用数据库列表?我计划在VB.NET的组合框中列出他们的列表。
当前回答
排除系统数据库:
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6
编辑:2013年2月5日下午2:36
更新准确的database_id,它应该大于4,跳过列表 数据库id在1到4之间的系统数据库。
SELECT *
FROM sys.databases d
WHERE d.database_id > 4
其他回答
鉴于非用户数据库数量的不确定性,您可能应该补充:
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
并添加报表服务数据库的名称
因为你正在使用。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
也许我是一只渡渡鸟!
显示数据库;为我工作。
不确定这是否会忽略报表服务器数据库,因为我没有运行一个,但从我所看到的,我可以用这个SQL忽略系统用户拥有的数据库:
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]
执行:
从master.sys.databases中选择名称
这是目前首选的方法,而不是dbo。Sysdatabases,它已经被弃用一段时间了。
执行这个查询:
SELECT name FROM master.dbo.sysdatabases
或者如果你愿意
EXEC sp_databases
推荐文章
- 确定记录是否存在的最快方法
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 外键约束可能导致循环或多条级联路径?
- 如何选择每一行的列值不是独特的
- nvarchar(max)非文本
- 在SQL Server 2008 R2中重命名数据库时出错
- 将数据复制到另一个表中
- 如何在SQL中选择表的最后一条记录?
- 修改列,添加默认约束
- 在存储过程中使用“SET XACT_ABORT ON”有什么好处?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?