如何批量获取所有Azure SQL Database的备份保留策略?
集中获取Azure SQL Database备份保留策略的方法
方法1:使用Azure Resource Graph批量查询
这是跨订阅批量获取信息的最快方式,无需逐个遍历资源,直接在Azure门户的Resource Graph Explorer中执行以下Kusto查询:
Resources | where type == 'microsoft.sql/servers/databases' | extend backupRetentionDays = properties.retentionPolicy.retentionDays, backupStorageRedundancy = properties.retentionPolicy.backupStorageRedundancy | project SubscriptionId, ResourceGroup, ServerName = split(id, '/')[8], DatabaseName = name, BackupRetentionDays = backupRetentionDays, BackupStorageRedundancy = backupStorageRedundancy | sort by ResourceGroup, ServerName, DatabaseName
- 支持通过添加
| where subscriptionId == '订阅ID'或| where resourceGroup == '资源组名称'筛选特定范围 - 查询结果可直接导出为CSV/Excel格式,用于审计或合规性确认
方法2:PowerShell批量导出脚本
以下脚本可批量遍历指定订阅下的所有SQL数据库,提取备份保留策略并导出为报告:
# 登录Azure账号(首次运行需执行) Connect-AzAccount # 可选:指定目标订阅,多订阅用逗号分隔 # $targetSubscriptions = "订阅ID1", "订阅ID2" # Set-AzContext -Subscription $targetSubscriptions # 获取所有SQL数据库实例 $sqlDatabases = Get-AzSqlDatabase -ServerName * -ResourceGroupName * # 整理备份保留策略信息 $backupReport = $sqlDatabases | Select-Object ` @{Name="订阅ID"; Expression={$_.SubscriptionId}}, @{Name="资源组"; Expression={$_.ResourceGroupName}}, @{Name="SQL服务器名称"; Expression={$_.ServerName}}, @{Name="数据库名称"; Expression={$_.DatabaseName}}, @{Name="备份保留天数"; Expression={$_.RetentionPolicy.RetentionDays}}, @{Name="备份存储冗余类型"; Expression={$_.RetentionPolicy.BackupStorageRedundancy}} # 导出为CSV报告文件 $backupReport | Export-Csv -Path "AzureSQL备份保留策略报告.csv" -NoTypeInformation -Encoding UTF8 # 控制台预览结果 $backupReport | Format-Table -AutoSize
- 可修改
Get-AzSqlDatabase的参数(如-ResourceGroupName "指定资源组")缩小查询范围 - 可将脚本加入任务计划,定期自动生成合规报告
内容的提问来源于stack exchange,提问作者paulH
相关产品推荐
相关产品推荐

