我需要按应用程序/数据库报告 SQL Server 正常运行时间的每月指标。这将在集群级别。IE,如果辅助副本离线,但主副本仍可用于处理事务,则正常运行时间仍将被视为 100%。
我已经查看了可能用于此目的的各种工具,其中一些工具接近了。但是,除了 SQL Server 服务处于联机状态并接受连接之外,它们似乎都没有捕获任何东西。他们也无法在集群/AG 级别聚合这些指标。这意味着如果辅助副本离线,这些正常运行时间报告将受到影响。
例如,假设数据库脱机或日志文件已满,并且无法针对单个数据库处理事务。这些工具会说 SQL Server 已启动,但我仍然会有人说这是数据库问题。因此,这些指标需要反映当时 SQL 尚未完全启动。
在这一点上我想出的最好的想法是创建一个 SQL 代理作业,该作业将记录插入每个数据库的 Canary 表中,每分钟一次。然后在月底,查询该表并将上个月的行数除以预期的行数。我认为没有比尝试插入一行更好的方法来证明数据库实际上是可用的。
我已经开发、测试和工作了上述解决方案。但我很好奇是否有人知道更好的方法来做到这一点。包括我可能忽略的任何商品工具或 DMV,我可以用来推断 SQL 实例上所有数据库的最终用户可用性指标?