gpt4 book ai didi

sql-server-2008-r2 - SQL Server "Space Available"警报?

转载 作者:行者123 更新时间:2023-12-02 00:22:41 25 4
gpt4 key购买 nike

我正在寻找一种在数据库或日志剩余空间达到 10% 时发送警报的方法。

让我先说明这个问题,我故意没有在问题中包含"file"这个词。虽然我研究了这个问题,但似乎大多数人都将他们的数据库设置为自动增长,然后努力在文件系统级别管理他们的数据库。有大量示例介绍如何发送磁盘空间警报。这不是我的问题!我的数据库都设置为固定大小的文件。这意味着文件因此在创建文件或需要扩展数据库时全部从文件系统中预先分配。作为一项政策,我不允许任何数据库不受控制地增长到由于一个行为不当的应用程序而导致整个服务器崩溃的程度。每个数据库都在其预先分配的空间内进行管理,并根据需要手动增长以满足不断增长的需求。

也就是说,我正在寻找当数据库“扩容空间”低于 10% 时发送警报的最佳方式,例如 - 从技术上讲,我可能会设置一个警告和警报阈值。到目前为止,我还没有找到关于这个主题的任何信息,因为大多数人似乎都专注于磁盘空间,这使得这有点像大海捞针。

我有点希望 SQL Server 有简单的警报机制来做这样一个简单、明显、开箱即用的事情,但看起来警报主要是为了捕获错误消息而设计的,这在我的书中有点晚了- 我希望更积极一些。

因此,再次希望在数据库“剩余空间”低于各种阈值时发送警报。有人做过或看过吗?

谢谢!

最佳答案

的确如此。我已经做到了。

可以通过对系统表的查询来设置计数器。一种可能性包括确定日志或数据文件中可用空间的百分比。然后,可以创建 SQL 警报以通过电子邮件将消息发送给运算符(operator),告知计数器已达到特定阈值,例如数据库文件中仅剩余 5% 的空间。该解决方案需要几个步骤,但可以使用现有功能。

要确定文件名和空间信息,可以使用以下查询。

SELECT  name AS 'File Name' , 
physical_name AS 'Physical Name',
size/128 AS 'Total Size in MB',
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB',
round((CAST(FILEPROPERTY(name, 'SpaceUsed') AS float)/size)* 100 ,2) AS 'Percentage Used',
*
FROM sys.database_files;

以下是针对给定文件的可用空间百分比设置警报的步骤。

  1. 创建用值设置计数器的程序。此示例设置计数器编号 10。

    DECLARE @FreePercent int

    SELECT @FreePercent = 100 - round((CAST(FILEPROPERTY(name, 'SpaceUsed') AS float)/size)* 100 ,2)
    FROM sys.database_files
    WHERE sys.database_files.name = 'NameOfYourLogOrDataFileHere';

    EXEC sp_user_counter10 @FreePercent
  2. 创建计划作业以运行上述过程

  3. 创建带计数器的 SQL 代理警报,以便在可用百分比低于特定阈值(即 5%)时执行

  4. 配置数据库邮件,测试,至少创建一个operator

  5. 启用SQL server agent alert E-mail(agent属性),并重启agent

关于sql-server-2008-r2 - SQL Server "Space Available"警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com