Luk*_*z G 2 powershell azure-powershell ss azure-sql-database
我正在寻找一种方法来提取有关 Azure SQL 数据库的特定信息:已用空间、分配空间和最大存储大小。我知道可以从 Azure 门户获取该信息,但我想使用 PowerShell 来提取它。我已设法使用下面的命令提取一位信息“最大存储大小”,但我找不到其他所需信息。
提取有关数据库容量(最大存储大小)信息的代码
Get-AzSqlDatabase -ServerName $ServerName -ResourceGroupName $ResourceGroupName | Select-Object ServerName, DatabaseName, @{Name="MaxSizeGB";Expression={$_.MaxSizeBytes/1GB}}
Run Code Online (Sandbox Code Playgroud)
我知道可以使用 T-SQL 获取该信息,但在这种情况下连接到每个服务器来运行 T-SQL 是不可能的。 https://learn.microsoft.com/en-us/azure/sql-database/sql-database-file-space-management
有谁知道是否还有其他选项可以利用 Azure PowerShell 提取该信息?我尝试使用 Get-AzMetric 命令来提取某些内容,但没有成功。
谢谢,亚当,你指出了我正确的地方,我认为我提取该数据的第一种方法是不正确的。我还发现了我使用的 Azure PowerShell 版本的一些问题,并将其报告给 Microsoft 支持人员。
Get-AzResource -ResourceGroupName 'Test' -name 'ServerName/DatabaseName'
Run Code Online (Sandbox Code Playgroud)
无法正常工作,但如果您删除 ServerName 例如,它会起作用。
Get-AzResource -ResourceGroupName 'test' -name 'DatabaseName'
Run Code Online (Sandbox Code Playgroud)
我提取有关数据库所需数据的最终代码:
Connect-AzAccount
$OutData = @()
$IgnoreDB = @('master', 'SSISDB')
$Subscription = Get-AzSubscription | Out-GridView -OutputMode 'Single'
if($Subscription){
$Subscription | Select-AzSubscription
$AzSqlServer = Get-AzSqlServer | Out-GridView -OutputMode Multiple
if($AzSqlServer)
{
Foreach ($server in $AzSqlServer)
{
$SQLDatabase = Get-AzSqlDatabase -ServerName $server.ServerName -ResourceGroupName $server.ResourceGroupName | Where-Object { $_.DatabaseName -notin $IgnoreDB }
Foreach ($database in $SQLDatabase)
{
$db_resource = Get-AzResource -ResourceId $database.ResourceId
# Database maximum storage size
$db_MaximumStorageSize = $database.MaxSizeBytes / 1GB
# Database used space
$db_metric_storage = $db_resource | Get-AzMetric -MetricName 'storage'
$db_UsedSpace = $db_metric_storage.Data.Maximum | Select-Object -Last 1
$db_UsedSpace = [math]::Round($db_UsedSpace / 1GB, 2)
# Database used space procentage
$db_metric_storage_percent = $db_resource | Get-AzMetric -MetricName 'storage_percent'
$db_UsedSpacePercentage = $db_metric_storage_percent.Data.Maximum | Select-Object -Last 1
# Database allocated space
$db_metric_allocated_data_storage = $db_resource | Get-AzMetric -MetricName 'allocated_data_storage'
$db_AllocatedSpace = $db_metric_allocated_data_storage.Data.Average | Select-Object -Last 1
$db_AllocatedSpace = [math]::Round($db_AllocatedSpace / 1GB, 2)
# Database VCore
$db_VCoreMin = $db.MinimumCapacity
$db_VCoreMax = $db.Capacity
$Report = New-Object PSObject
$Report | Add-Member -Name "ServerName" -MemberType NoteProperty -Value $server.ServerName
$Report | Add-Member -Name "DatabaseName" -MemberType NoteProperty -Value $database.DatabaseName
$Report | Add-Member -Name "UsedSpace" -MemberType NoteProperty -Value $db_UsedSpace
$Report | Add-Member -Name "UsedSpaceProcentage" -MemberType NoteProperty -Value $db_UsedSpacePercentage
$Report | Add-Member -Name "AllocatedSpace" -MemberType NoteProperty -Value $db_AllocatedSpace
$Report | Add-Member -Name "MaximumStorageSize" -MemberType NoteProperty -Value $db_MaximumStorageSize
$Report | Add-Member -Name "MinvCores" -MemberType NoteProperty -Value $db_VCoreMin
$Report | Add-Member -Name "MaxvCores" -MemberType NoteProperty -Value $db_VCoreMax
$OutData += $Report
}
}
$OutData | Out-GridView
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5933 次 |
| 最近记录: |