如何通过Azure CLI获取SQL Server及数据库的存储使用指标
获取Azure SQL数据库存储指标的CLI方法
az sql db list-usages返回的是数据库内部资源的使用计数(如CPU、IO操作数),并非Azure门户展示的存储类指标,所以无法直接拿到使用率、已用/剩余空间等数据。要获取这些指标,需结合az sql db show和简单的数值计算,以下是具体实现方式:
单一数据库场景
1. 获取基础存储数据
执行命令提取数据库的已用存储和最大存储(字节单位):
db_info=$(az sql db show \ --name $database \ --resource-group $resourceGroup \ --server $server \ --query "{used: storageProfile.usedStorageBytes, max: storageProfile.maxSizeBytes}" \ -o json)
2. 计算衍生指标
通过jq和bc工具将字节转换为GB,并计算剩余空间、使用率:
# 转换为GB(保留2位小数) used_gb=$(echo $db_info | jq '.used / (1024*1024*1024) | round(2)') max_gb=$(echo $db_info | jq '.max / (1024*1024*1024) | round(2)') # 计算剩余空间和使用率 remaining_gb=$(echo "$max_gb - $used_gb" | bc -l | xargs printf "%.2f") usage_percent=$(echo "($used_gb / $max_gb) * 100" | bc -l | xargs printf "%.2f")
3. 输出结果
执行以下命令查看最终指标:
echo "已用空间: $used_gb GB" echo "最大存储: $max_gb GB" echo "剩余空间: $remaining_gb GB" echo "使用率: $usage_percent %"
弹性池中的数据库
如果数据库属于弹性池,需同时查询弹性池的存储情况(因为数据库共享池的存储资源):
1. 获取弹性池存储数据
pool_info=$(az sql elastic-pool show \ --name $poolName \ --resource-group $resourceGroup \ --server $server \ --query "{used: storageProfile.usedStorageBytes, max: storageProfile.maxSizeBytes}" \ -o json)
2. 计算池级存储指标
pool_used_gb=$(echo $pool_info | jq '.used / (1024*1024*1024) | round(2)') pool_max_gb=$(echo $pool_info | jq '.max / (1024*1024*1024) | round(2)') pool_remaining_gb=$(echo "$pool_max_gb - $pool_used_gb" | bc -l | xargs printf "%.2f")
3. 输出池和数据库的存储信息
echo "弹性池总存储: $pool_max_gb GB" echo "弹性池已用存储: $pool_used_gb GB" echo "弹性池剩余存储: $pool_remaining_gb GB" echo "当前数据库已用空间: $used_gb GB"
注:需提前安装
jq和bc工具(Linux/macOS可通过包管理器安装,Windows可使用WSL或Chocolatey)。
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

