【问题标题】:SQL Query - Finding Current log file usage for one databaseSQL 查询 - 查找一个数据库的当前日志文件使用情况
【发布时间】:2013-08-12 06:33:51
【问题描述】:

我想设置一些监控软件,如果数据库日志文件的使用率超过 95%,就会生成 SMNP 陷阱。它只能查看 SQL 查询第一列中的第一个结果,所以我正在寻找的是一个 SQL 查询,它只会在结果中返回百分比数字 - 例如,95

我发现了几种不同的方法来做类似的事情,但都返回表格标题等,而我只想要这个数字。它将每小时运行一次此查询,因此不会太密集。我正在运行 SQL 版本 8。

谢谢,迈克

【问题讨论】:

  • 您的意思是 SNMP 陷阱,对吗?您能否展示您尝试过的返回附加信息的查询?
  • 是的,对不起,SNMP :) 这是我尝试过的,但所有数据库的标题都是:SELECT instance_name AS 'master', MAX(CASE WHEN counter_name = 'Percent Log Used' THEN cntr_value ELSE 0 END) AS 'Percent Log Used' FROM sysperfinfo WHERE counter_name IN ('Percent Log Used') AND instance_name != '_total' GROUP BY instance_name
  • 因此您需要解释如何计算整个实例的平均值。这些 % 是针对每个数据库的,因此,如果您有一个 10GB 的数据库和一个 10MB 的数据库,那么这些 % 的含义就大不相同了。
  • 没错,我只是想监控一个数据库的日志文件大小,而不是全部
  • 出于好奇,当这个特定的数据库达到 95% 的已用日志空间时,你会怎么做?

标签: sql database sql-server-2000


【解决方案1】:

您可以针对操作系统 DMV 编写查询,以获取您正在寻找的单个值。

不确定这是否适用于 SQL Server 2000,但我知道它可以追溯到 SQL Server 2005。它还要求在主机服务器(即操作系统,而不仅仅是 SQL Server)上启用性能计数器。

这个查询应该可以解决问题:

SELECT cntr_value as PercentUsed
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Percent Log Used'
  AND instance_name = 'your_database_name'

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2012-03-05
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多