sp_dbmmonitorresults (Transact-SQL)

适用范围:SQL Server

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

Transact-SQL 语法约定

语法

sp_dbmmonitorresults
    [ @database_name = ] N'database_name'
    [ , [ @mode = ] mode ]
    [ , [ @update_table = ] update_table ]
[ ; ]

参数

[ @database_name = ] N'database_name'

指定返回其镜像状态的数据库。 @database_name为 sysname,无默认值。

[ @mode = ] 模式

指定返回的行数。 @mode为 int,可以是这些值之一。

说明
0 最后一行
1 过去两小时的行数
2 过去四小时的行数
3 过去 8 小时的行数
4 最后一天的行
5 过去两天的行数
6 最后 100 行
7 最后 500 行
8 最后 1,000 行
9 最后 1,000,000 行

[ @update_table = ] update_table

指定在返回结果之前的过程。 @update_table为 int,默认值为 0.

  • 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 = Connected
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 中执行。

权限

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

注意

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

示例

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

USE msdb;
EXEC sp_dbmmonitorresults AdventureWorks2022, 2, 0;