当前位置:  开发笔记 > 后端 > 正文

从SQL Server获取数据库列表

如何解决《从SQLServer获取数据库列表》经验,为你挑选了8个好方法。

如何获取SQL Server实例上的可用数据库列表?我打算在VB.NET的组合框中列出它们.



1> Ben Hoffstei..:

执行:

SELECT name FROM master.sys.databases

这是现在的首选方法,而不是dbo.sysdatabases已经弃用了一段时间.


执行此查询:

SELECT name FROM master.dbo.sysdatabases

或者如果你愿意的话

EXEC sp_databases


要扩展@ChrisDiver所说的内容:SELECT name FROM sys.databases是现在的首选方法,而不是dbo.sysdatabases,它现已被弃用了十年.
@Gia它确实作为向后兼容性视图存在.http://msdn.microsoft.com/en-us/library/ms179900%28v=SQL.110%29.aspx
EXEC sp_databases是_slow_为我执行; 在具有36个数据库的实例上40秒.从sysdatabases中进行选择是即时的.
至少在SQL Server 2014上,`exec sp_databases`不起作用.另外两个(`master.dbo.sysdatabases`和`sys.databases`)仍然有效.

2> GilShalit..:

鉴于非用户数据库数量的模糊性,您应该添加:

WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');

并添加报告服务数据库的名称



3> GilM..:

要排除系统数据库:

SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6

编辑:2013年2月2日下午2:36

更新了准确的database_id,它应该大于4,以跳过列出数据库ID介于1和4之间的系统数据库.

SELECT * 
FROM sys.databases d
WHERE d.database_id > 4


这不起作用.也许你的意思是> 4?表5和表6是用户表.

4> 小智..:
SELECT [name] 
FROM master.dbo.sysdatabases 
WHERE dbid > 4 

适用于我们的SQL Server 2008



5> Chris Diver..:

由于您使用的是.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



6> Balaji..:

不要混淆,使用下面的简单查询来获取所有数据库,

select * from sys.databases

如果你只需要用户定义的数据库;

select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb'); 

一些系统数据库名称是(resource,distribution,reportservice,reportservicetempdb),只需将其插入查询即可.如果您的机器中有上述数据库作为默认值.



7> 小智..:
SELECT [name] 
FROM master.dbo.sysdatabases 
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'

这将适用于两种情况,是否启用报告



8> Rob Prouse..:

我使用下面的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();
}

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有