首页 文章

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

提问于
浏览
0

监视某个指标并在多个数据库上对其发出警报的最佳方法是什么 . 例如,如果数据库大小超过10 GB,我想触发警报 .

我知道您可以选择单个数据库并在Azure监视器中进行配置,但是当有数百个时,这似乎不可行 .

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

2 回答

  • 1

    我认为PowerShell,特别是Get-AzureSqlDatabaseUsages命令,是你最好的朋友 . 我在过去做过这个修改过的"heartbeat" . 我们还分析了索引碎片,并在需要时触发 REBUILD .

    上面的PowerShell命令示例:

    C:\> Get-AzureSqlDatabaseUsages -ServerName "Server01" -DatabaseName "Database01"
    

    这将要求您进行身份验证,但这本身也很简单 .

    您可以按计划(即作为WebJob或计划任务)执行脚本,并根据某些度量标准阈值进行报告/通知 .

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

    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';
    
  • 0

    经过一番钻研后,我在Azure中找到了一个令人满意的解决方案:

    • 转到Azure Monitor指标(预览)

    • 在我的情况下,我使用的是一个sql弹性池,所以我添加了这个作为资源的度量标准"storaged_used"

    • 按"Database ARM Resource Id"添加拆分将为您提供每个用于存储的存储空间
      资源ID中池中的SQL数据库 .

相关问题