sp_dbmmonitorresults (Transact-SQL)
从存储数据库镜像监视历史记录的状态表中返回所监视数据库的状态行,并允许您选择该过程是否预先获得最新状态。
语法
sp_dbmmonitorresults database_name
, rows_to_return
, update_status
参数
database_name
指定返回其镜像状态的数据库。rows_to_return
指定返回的行数:0 = 最后一行
1 = 最后两小时的行
2 = 最后四小时的行
3 = 最后八小时的行
4 = 最后一天的行
5 = 最后两天的行
6 = 最后 100 行
7 = 最后 500 行
8 = 最后 1,000 行
9 = 最后 1,000,000 行
update_status
指定返回结果之前,过程:0 = 不更新数据库的状态。仅使用最后两行计算结果,其保留时间取决于何时刷新状态表。
1 = 通过在计算结果之前调用 sp_dbmmonitorupdate 来更新数据库的状态。但是,如果在前 15 秒内已更新状态表,或用户不是 sysadmin 固定服务器角色的成员,则 sp_dbmmonitorresults 将运行,而不更新状态。
返回代码值
无
结果集
返回指定数据库的所请求行数的历史记录状态。每一行包含以下信息:
列名 |
数据类型 |
说明 |
---|---|---|
database_name |
sysname |
镜像数据库的名称。 |
role |
int |
服务器实例的当前镜像角色: 1 = 主体数据库 2 = 镜像数据库 |
mirroring_state |
int |
数据库的状态: 0 = 已挂起 1 = 已断开 2 = 正在同步 3 = 挂起故障转移 4 = 已同步 |
witness_status |
int |
在数据库的数据库镜像会话中见证服务器的连接状态,可以是: 0 = 未知 1 = 已连接 2 = 已断开 |
log_generation_rate |
int |
自上次更新此数据库的镜像状态以来生成的日志量(KB/秒)。 |
unsent_log |
int |
在主体的发送队列中未发送日志的大小 (KB)。 |
send_rate |
int |
从主体向镜像发送日志的速度(KB/秒)。 |
unrestored_log |
int |
镜像中重做队列的大小 (KB)。 |
recovery_rate |
int |
镜像中的重做速度(KB/秒)。 |
transaction_delay |
int |
所有事务的总计延迟(毫秒)。 |
transactions_per_sec |
int |
在主体服务器实例上每秒发生的事务数。 |
average_delay |
int |
由于数据库镜像的原因,每个事务在主体服务器实例上的平均延迟。在高性能模式(即 SAFETY 属性设置为 OFF 时)中,此值通常是 0。 |
time_recorded |
datetime |
数据库镜像监视器记录行的时间。这是主体的系统时钟时间。 |
time_behind |
datetime |
镜像数据库当前跟踪的主体的近似系统时钟时间。此值只有在主体服务器实例上才有意义。 |
local_time |
datetime |
更新此行时本地服务器实例上的系统时钟时间。 |
注释
sp_dbmmonitorresults 只能在 msdb 数据库的上下文中执行。
权限
需要 msdb 数据库中的 sysadmin 固定服务器角色或 dbm_monitor 固定数据库角色的成员身份。dbm_monitor 角色使其成员可以查看数据库镜像状态,但不能更新状态,也不能查看或配置数据库镜像事件。
注意 |
---|
第一次执行 sp_dbmmonitorupdate 时,它将在 msdb 数据库中创建 dbm_monitor 固定数据库角色。sysadmin 固定服务器角色的成员可以向 dbm_monitor 固定数据库角色中添加任何用户。 |
示例
以下示例返回在前面两个小时内记录的行,但不更新数据库状态。
USE msdb;
EXEC sp_dbmmonitorresults AdventureWorks, 2, 0;