managed_backup.fn_get_health_status (Transact-SQL)
适用于:SQL Server 2016 (13.x) 及更高版本
返回 0 行、一行或多行的表,行中是扩展事件在指定的一段时间内报告的错误总数。
此函数用于报告智能管理员下的服务的运行状况。目前,智能管理伞下支持将 SQL Server 托管备份到 Microsoft Azure。 因此,返回的错误与将 SQL Server 托管备份Microsoft Azure 相关。
语法
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)