如何查询Azure SQL数据库及弹性池中数据库的备份大小?
查询Azure SQL数据库及弹性池内数据库的备份大小
一、单个Azure SQL数据库的备份大小查询方法
1. 通过Azure门户查看
- 登录Azure门户,定位到目标SQL数据库
- 在左侧导航栏选择备份,切换至备份存储使用情况标签页
- 页面将展示完整备份、差异备份、事务日志备份的总占用量,以及按存储冗余类型(如LRS/GRS)划分的存储详情
2. 使用T-SQL查询
在目标数据库的查询编辑器中执行以下语句,计算总备份存储大小(转换为GB单位):
SELECT SUM(file_size / 1024.0 / 1024.0 / 1024.0) AS total_backup_size_gb FROM sys.dm_db_backup_file_sizes;
该视图返回所有备份文件的大小,求和后即可得到总备份存储占用量。
3. 使用Azure CLI查询
执行以下命令,直接获取目标数据库的备份存储使用量(单位为字节,可自行转换为GB/MB):
az sql db show --resource-group <你的资源组名> --server <你的SQL服务器名> --name <数据库名> --query 'backupStorageUsed'
二、Azure弹性池中各数据库的备份大小查询方法
弹性池的备份存储为池内所有数据库共享,但要获取单个数据库的备份占用,可通过以下方式:
1. 逐个数据库执行T-SQL查询
针对弹性池中的每个数据库,分别执行上述T-SQL查询语句,即可得到单个数据库的备份大小。
2. 使用Azure CLI批量查询
通过脚本遍历弹性池内的所有数据库,批量获取备份存储使用量:
# 获取弹性池内的数据库列表 db_list=$(az sql elastic-pool db list --resource-group <资源组名> --server <SQL服务器名> --elastic-pool <弹性池名> --query '[].name' -o tsv) # 遍历每个数据库查询备份大小 for db in $db_list; do backup_size=$(az sql db show --resource-group <资源组名> --server <SQL服务器名> --name $db --query 'backupStorageUsed') echo "数据库 $db 的备份大小(字节):$backup_size" done
3. 通过Azure Monitor日志查询
- 进入Azure门户的Log Analytics工作区(需先创建并关联目标SQL服务器)
- 执行以下Kusto查询,获取弹性池内所有数据库的备份存储使用量:
AzureDiagnostics | where ResourceType == "SQLDATABASES" | where ElasticPoolName == "<你的弹性池名>" | project DatabaseName, backupStorageUsed_s | summarize avg(backupStorageUsed_s) by DatabaseName
注:backupStorageUsed_s字段单位为字节,可通过除以1024*1024*1024转换为GB。
用于Azure计算器的成本计算说明
获取到各数据库的备份大小后,在Azure计算器的SQL数据库弹性池模块中:
- 与数据库数据存储量匹配的基础备份存储通常包含在池的基础成本中
- 超出基础存储的备份占用,需按照所选存储冗余类型(LRS/GRS/GZRS)对应的单价计算额外成本,将各数据库的超额备份大小汇总后填入计算器即可估算总成本。
内容的提问来源于stack exchange,提问作者Ali Rida Hussein
相关产品推荐
相关产品推荐

