据我所知,我可以使用sys.databases
从SQL Server获取数据库,但它也列出了脱机数据库。我一直在检查显示数据库在线/离线状态的标志。
任何人都可以帮我吗?
我希望SQL Server中的数据库处于联机状态,只需要忽略脱机数据库
答案 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)
答案 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
您可以跳过系统数据库,仅列出用户数据库