Sql-Server-2016
每天監控數據庫增長的腳本
我對數據庫相當陌生,我有一個特定的要求來編寫作業/儲存過程來監控數據庫的增長。
我們目前正在使用
MS SQL Server 2016 Standard Edition
withAlways-ON HA
。我已經
mail server
在數據庫上設置了。將作業的輸對外連結接到郵件會更有效。
有一個儲存過程叫做
SpaceUsedRating
:https://github.com/aleksey-vitsko/Database-Administrator-Tools
當您在
exec SpaceUsedRating
沒有任何參數的情況下執行它時,它將顯示給定數據庫中的空間使用統計資訊也可以使用參數 @command = ’log’ 呼叫此過程
使用參數呼叫時,該 SP 會將結果記錄到數據庫
@command = 'log'
的日誌表中(需要創建數據庫和表)DatabaseGrowthLogger``ServerLogsDB
這是創建記錄表的腳本
使用 [伺服器日誌數據庫] 去 /****** 對象:表 [dbo].[DatabaseGrowthLogger] 腳本日期:5/12/2020 12:11:14 PM ******/ 設置 ANSI_NULLS ON 去 設置 QUOTED_IDENTIFIER ON 去 創建表 [dbo].[DatabaseGrowthLogger]( [ID] [int] IDENTITY(1,1) 非空, [Server_Name] [varchar](50) NULL, [Database_Name] [varchar](250) 非空, [Date_Full] [smalldatetime] 非空, [Day_Of_Week] [tinyint] NULL, [Log_Date] [日期] NULL, [Log_Hour] [tinyint] NULL, [Table_Count] [int] NULL, [Total_Rows] [bigint] NULL, [Database_Data_MB] [十進制](16, 2) NULL, [Database_Index_MB] [十進制](16, 2) NULL, [Database_Unused_MB] [十進制](16, 2) NULL, [Database_Allocated_MB] [int] NULL, [Database_File_Size_MB] [int] NULL, [Percent_Used] [十進制](5, 2) NULL, [Hours_Diff] [smallint] NULL, [Database_Allocated_Delta] [int] NULL, [Percent_Used_Delta] [十進制](5, 2) NULL, 主鍵集群 ( [數據庫名稱] ASC, [Date_Full] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) 開 [主要] 去 ALTER TABLE [dbo].[DatabaseGrowthLogger] 為 [Hours_Diff] 添加預設值 ((0)) 去 ALTER TABLE [dbo].[DatabaseGrowthLogger] 為 [Database_Allocated_Delta] 添加預設值 ((0)) 去 ALTER TABLE [dbo].[DatabaseGrowthLogger] 添加預設值 ((0)) FOR [Percent_Used_Delta] 去
創建
ServerLogsDB..DatabaseGrowthLogger
數據庫和表並將儲存過程部署SpaceUsedRating
到要監控其增長的所有數據庫之後,您需要安排一個每天執行一次的作業,例如在 23:58 UTC,並在 t-sql 下執行:exec Database1..SpaceUsedRating @command = 'log' exec Database2..SpaceUsedRating @command = 'log' ... -- create SP in whatever number of databases you need to monitor growth
這將記錄您的數據庫的每日增長,當您檢查
ServerLogsDB..DatabaseGrowthLogger
表時,它看起來類似於以下內容:查看日誌記錄表,您將了解數據庫中的數據隨時間增長了多少
最後,您可以向作業添加一個步驟,該步驟將從中讀取最後一行並使用過程
ServerLogsDB..DatabaseGrowthLogger
通過電子郵件發送sp_send_dbmail