TSQL检查数据库实例是否在线

6
什么是检查Microsoft SQL Server实例是否正常运行的最佳方法?我有一个跨越两个Microsoft SQL Server实例的视图,但在存储过程中查询它之前,我想验证第二个实例的服务器是否正常运行,并备用本地数据进行查询。
第二个实例是一个链接服务器。
目前,我考虑使用SQL CLR函数,尝试以更短的超时时间打开连接,但我想知道是否可以直接在Transact SQL中完成。
2个回答

9

你可以先验证一下你想连接的数据库是否在线?

select 
    name
from sys.databases
where name = 'DatabaseName'
    and state = 0 --Database is online

完整的sys.databases目录视图可用列的参考信息请参见Books Online:sys.databases

编辑:修复SQL查询


1

通过链接服务器查询sys.sysdatabases(需要权限),下面是status列的值

1 = autoclose (ALTER DATABASE)

4 = select into/bulkcopy (ALTER DATABASE using SET RECOVERY)

8 = trunc. log on chkpt (ALTER DATABASE using SET RECOVERY)

16 = torn page detection (ALTER DATABASE)

32 = loading

64 = pre recovery

128 = recovering

256 = not recovered

512 = offline (ALTER DATABASE)

1024 = read only (ALTER DATABASE)

2048 = dbo use only (ALTER DATABASE using SET RESTRICTED_USER)

4096 = single user (ALTER DATABASE)

32768 = emergency mode

4194304 = autoshrink (ALTER DATABASE)

1073741824 = cleanly shutdown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接