managed_backup.fn_get_health_status (Transact-SQL)

适用于SQL Server 2016 (13.x) 及更高版本

返回 0 行、一行或多行的表,行中是扩展事件在指定的一段时间内报告的错误总数。

此函数用于报告智能管理员下的服务的运行状况。目前,智能管理伞下支持将 SQL Server 托管备份到 Microsoft Azure。 因此,返回的错误与将 SQL Server 托管备份Microsoft Azure 相关。

Transact-SQL 语法约定

语法

managed_backup.fn_get_health_status([@begin_time = ] 'time_1' , [ @end_time = ] 'time_2')  

参数

[@begin_time]
计算错误总数的起始时间。 参数 @begin_time 为 DATETIME。 默认值为 NULL。 当值为 NULL 时,此函数将处理当前时间最长 30 分钟之前报告的事件。

[ @end_time]
计算错误总数的结束时间。 参数 @end_time 为 DATETIME,默认值为 NULL。 当值为空 NULL 时,此函数将处理截至当前时间的扩展事件。

返回的表

列名称 数据类型 描述
number_of_storage_connectivity_errors int 程序连接到 Azure 存储帐户时的连接错误数。
number_of_sql_errors int 当程序连接到 SQL Server Engine 时返回的错误数。
number_of_invalid_credential_errors int 当程序尝试使用 SQL 凭据进行身份验证时返回的错误数。
number_of_other_errors int 连接、SQL 或凭据以外其他类别中的错误数。
number_of_corrupted_or_deleted_backups int 删除或损坏的备份文件数。
number_of_backup_loops int 备份代理扫描使用 SQL Server 托管备份配置的所有数据库以Microsoft Azure 的次数。
number_of_retention_loops int 扫描数据库以评估所设置的保持期的次数。

最佳方案

这些聚合的计数可用于监视系统运行状况。 例如,如果 number_of_retention_loops 列在 30 分钟内为 0,则保持管理可能占用较长时间,甚至没有正常工作。 非零错误列可能表示有问题,应检查扩展事件日志以了解任何问题。 或者,使用存储过程 managed_backup.sp_get_backup_diagnostics 获取扩展事件列表,以查找错误的详细信息。

安全性

权限

需要对函数具有 SELECT 权限。

示例

  • 下例返回其执行之前 30 分钟内的错误总数。

    SELECT *  
    FROM managed_backup.fn_get_health_status(NULL, NULL)  
    
    
  • 下例返回本周的错误总数:

    Use msdb  
    Go  
    DECLARE @startofweek datetime  
    DECLARE @endofweek datetime  
    SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)   
    SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)  
    SELECT *  
    FROM managed_backup.fn_get_health_status(@startofweek, @endofweek)