如何从SQL Server获取数据库列表?

时间:2012-01-30 07:06:03

标签: sql

据我所知,我可以使用sys.databases从SQL Server获取数据库,但它也列出了脱机数据库。我一直在检查显示数据库在线/离线状态的标志。

任何人都可以帮我吗?

我希望SQL Server中的数据库处于联机状态,只需要忽略脱机数据库

6 个答案:

答案 0 :(得分:5)

您正在寻找state列 - MSDN documentation is your friend always!

state: tinyint

0 = ONLINE
1 = RESTORING
2 = RECOVERING
3 = RECOVERY_PENDING
4 = SUSPECT
5 = EMERGENCY
6 = OFFLINE

因此,如果您只想要在线数据库,请使用

SELECT (columns) FROM sys.databases WHERE state = 0

答案 1 :(得分:2)

您需要放置仅选择在线数据库的条件。

SELECT *
FROM sys.databases db WHERE
db.state = 0  

// O for online查看所有州。

答案 2 :(得分:0)

可以从status中的sys.sysdatabases列中检索SQL Server中的数据库是否脱机的事实。从理论上讲,以下SQL应该可以帮助您:

SELECT name FROM sys.sysdatabases WHERE NOT status & 512 = 512;

(我没有测试它,但你应该明白这一点。)

有关详细信息,请参阅http://msdn.microsoft.com/de-de/library/ms179900(v=sql.90).aspx

答案 3 :(得分:0)

在MSSql上 - 服务器尝试以下语句

select state , state_desc from sys.databases

这将显示数据库的当前状态

答案 4 :(得分:0)

select name, convert(varchar(20),databasepropertyex(name, 'Status')) status 
from master.dbo.sysdatabases 
order by name

答案 5 :(得分:-1)

SELECT *
FROM sys.databases db WHERE
db.state = 0 and owner_sid <> 0x01

您可以跳过系统数据库,仅列出用户数据库