能否配置Log Analytics捕获Azure SQL Server自动备份信息并提取详情?
从Azure SQL Server自动PITR备份提取状态与时间信息
以下是几种精准获取所需信息的方法,可解决Log Analytics查询不精准的问题:
1. 修正Log Analytics查询(精准定位备份事件)
如果之前的Log Analytics查询未拿到正确数据,大概率是未筛选对事件类别和字段。使用以下Kusto查询直接定位PITR相关的日志备份事件:
AzureDiagnostics | where ResourceProvider == "MICROSOFT.SQL" | where Category == "Backup" | where OperationName == "BACKUP_DB" | extend BackupProps = parse_json(Properties) | where tostring(BackupProps.BackupType) == "LOG" // PITR基于日志备份,全量备份为基础 | project 数据库名称 = Resource, 服务器名称 = split(ResourceId, "/")[8], 备份开始时间 = BackupProps.StartTime, 备份结束时间 = BackupProps.EndTime, 备份状态 = BackupProps.Status, 备份类型 = BackupProps.BackupType
2. 用PowerShell提取恢复点与备份状态
获取可恢复的PITR时间点
# 替换为你的资源信息 $rgName = "你的资源组名称" $serverName = "你的SQL服务器名称" $dbName = "目标数据库名称" $restorePoints = Get-AzSqlDatabaseRestorePoint -ResourceGroupName $rgName -ServerName $serverName -DatabaseName $dbName $restorePoints | Select-Object RestorePointType, RestorePointCreationDate, EarliestRestoreDate
查询备份操作的执行状态(成功/失败)
$backupLogs = Get-AzLog -ResourceGroupName $rgName -ResourceType "Microsoft.Sql/servers/databases" -ResourceName "$serverName/$dbName" -StartTime (Get-Date).AddDays(-7) $backupLogs | Where-Object { $_.OperationName.Value -eq "Microsoft.Sql/servers/databases/backup/action" } | Select-Object EventTimestamp, Status, Properties
3. Azure CLI快速查询
列出PITR恢复点
az sql db restore-point list --resource-group 你的资源组 --server 你的SQL服务器 --name 目标数据库
查询备份操作日志
az monitor activity-log list --resource-group 你的资源组 --resource-type Microsoft.Sql/servers/databases --resource-name 你的SQL服务器/目标数据库 --start-time 2024-05-01T00:00:00 --query "[?operationName.value=='Microsoft.Sql/servers/databases/backup/action']"
4. 直接从Azure SQL数据库内部查询
连接到目标数据库后,执行以下SQL查询获取备份历史(包含PITR依赖的日志备份):
SELECT backup_start_date AS 备份开始时间, backup_finish_date AS 备份结束时间, CASE type WHEN 'L' THEN '日志备份(PITR)' WHEN 'D' THEN '全量备份' ELSE '其他备份类型' END AS 备份类型, CASE status WHEN 1 THEN '成功' WHEN 0 THEN '失败' ELSE '未知' END AS 备份状态, database_name AS 数据库名称 FROM sys.dm_db_backup_history WHERE database_name = '你的数据库名称' AND type = 'L' -- 仅筛选PITR相关的日志备份 ORDER BY backup_start_date DESC;
内容的提问来源于stack exchange,提问作者Murilodsp
相关产品推荐
相关产品推荐

