针对多个数据库的Azure SQL Server监视/警报(v12)

针对多个数据库的Azure SQL Server监视/警报(v12),azure,azure-sql-database,azure-sql-server,azure-monitoring,Azure,Azure Sql Database,Azure Sql Server,Azure Monitoring,通过多个数据库监视特定度量并发出警报的最佳方法是什么。例如,如果数据库大小增长超过10 GB,我希望触发警报 我知道您可以选择一个数据库并在Azure Monitor中配置它,但当有数百个数据库时,这似乎不可行 我的数据库是使用Azure资源管理创建的 我认为PowerShell,特别是指挥部,是你最好的朋友。我在过去做过这件事,作为一种改进的心跳。据此,我们还分析了索引碎片,并在需要时触发重建 上面的PowerShell命令示例: C:\> Get-AzureSqlDatabaseUsa

通过多个数据库监视特定度量并发出警报的最佳方法是什么。例如,如果数据库大小增长超过10 GB,我希望触发警报

我知道您可以选择一个数据库并在Azure Monitor中配置它,但当有数百个数据库时,这似乎不可行

我的数据库是使用Azure资源管理创建的


我认为PowerShell,特别是指挥部,是你最好的朋友。我在过去做过这件事,作为一种改进的心跳。据此,我们还分析了索引碎片,并在需要时触发重建

上面的PowerShell命令示例:

C:\> Get-AzureSqlDatabaseUsages -ServerName "Server01" -DatabaseName "Database01"
这需要对您进行身份验证,但这本身也很简单

您可以按计划执行脚本,即作为WebJob或计划任务执行脚本,并基于某些度量阈值进行报告/通知

编辑:对于v12数据库,可以使用PowerShell和sqlcmd.exe以编程方式执行以下查询


在深入研究之后,我在Azure中找到了一个令人满意的解决方案:

转到Azure Monitor Metricpreview 在我的例子中,我使用的是一个sql弹性池,所以我将其作为资源添加到 使用的度量存储单元 按数据库添加拆分ARM资源Id将为您提供用于每个ARM的存储 按资源Id列出池中的SQL数据库。
您可能需要投资第三方监控产品,如CloudMonix@以获得可模板化的指标和警报、复杂的报告等。感谢您的回复Pim,但powershell命令仅适用于在经典门户中创建的资源。我的SQL数据库是使用Azure资源管理创建的。
SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) AS DatabaseSizeInBytes,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 AS DatabaseSizeInMB,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 / 1024 AS DatabaseSizeInGB
FROM sys.database_files
WHERE type_desc = 'ROWS';