sp_dbmmonitorresults (Transact-SQL)
适用范围:SQL Server
从存储数据库镜像监视历史记录的状态表中返回受监视数据库的状态行,并允许你事先选择该过程是否获取最新状态。
语法
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 = Connected2 = 断开连接 |
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;