sp_dbmmonitorresults (Transact-SQL)

适用于:SQL Server

从存储数据库镜像监视历史记录的状态表中返回所监视数据库的状态行,并允许您选择该过程是否预先获得最新状态。

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 更新此行时本地服务器实例上的系统时钟时间。

备注

只能在msdb 数据库的上下文中执行sp_dbmmonitorresults。

权限

需要 msdb 数据库中的 sysadmin 固定服务器角色或dbm_monitor固定数据库角色的成员身份。 dbm_monitor角色允许其成员查看数据库镜像状态,但不能更新数据库镜像状态,但不能查看或配置数据库镜像事件。

注意

首次执行sp_dbmmonitorupdate时,它会在 msdb 数据库中创建dbm_monitor固定数据库角色。 sysadmin 固定服务器角色的成员可以将任何用户添加到dbm_monitor固定数据库角色。

示例

以下示例返回在前面两个小时内记录的行,但不更新数据库状态。

USE msdb;  
EXEC sp_dbmmonitorresults AdventureWorks2022, 2, 0;  

另请参阅

监视数据库镜像 (SQL Server)
sp_dbmmonitorchangemonitoring (Transact-SQL)
sp_dbmmonitoraddmonitoring (Transact-SQL)
sp_dbmmonitordropmonitoring (Transact-SQL)
sp_dbmmonitorhelpmonitoring (Transact-SQL)
sp_dbmmonitorupdate (Transact-SQL)