Man*_*jot 1 sql t-sql sql-server sql-server-2000
我想知道SQL Server服务器场中每个数据库的状态.我用的是:
select name,
case status
when 32 then 'loading'
when 128 then 'recovering'
when 512 then 'offline'
when 4096 then 'single user'
when 64 then 'pre recovery'
when 256 then 'not recovered'
else 'Normal'
end
from sysdatabases
where name not in('master','msdb','model','tempdb','reportserver','reportservertempdb','pubs','distribution','northwind')
Run Code Online (Sandbox Code Playgroud)
但是一位朋友告诉我,状态可能是2的组合,例如32 + 128 = 32128.如何使用此数字查找数据库状态?
状态编号由状态字段值的"开"位组成.因此,状态可以是2个状态的组合(例如32 + 128),但您可以通过检查状态值中特定位的值来获得各个状态.
你可以这样做:
SELECT
CASE (status & 32) WHEN 32 THEN 'loading' ELSE '' END + ' ' +
CASE (status & 128) WHEN 128 THEN 'recovering' ELSE '' END as status
FROM sysdatabases
WHERE NAME NOT IN ('master','msdb','model','tempdb','reportserver','reportservertempdb','datacomsqlaudit','pubs','distribution','northwind')
Run Code Online (Sandbox Code Playgroud)
有关检查特定值的示例脚本,请参阅sqlserver中sysdatabases的不同状态位.
编辑: MSDN库有此说关于在状态的各个位的值和sysdatabases中的状态2场
| 归档时间: |
|
| 查看次数: |
6261 次 |
| 最近记录: |