一個(gè)統(tǒng)計(jì)表每天的新增行數(shù)及新增存儲(chǔ)空間的功能
使用文中提供的代碼做一個(gè)統(tǒng)計(jì)表每天的新增行數(shù)及新增存儲(chǔ)空間的功能
實(shí)現(xiàn)步驟如下:
1. 創(chuàng)建表
創(chuàng)建表,存儲(chǔ)每天的表空間占用情況
CREATE TABLE [dbo].[t_rpt_table_spaceinfo]( [table_name] [sysname] NOT NULL, [record_date] [date] NOT NULL, [record_time] [time](7) NOT NULL, [rows_count] [bigint] NULL, [reserved] [bigint] NULL, [data_size] [bigint] NULL, [index_size] [bigint] NULL, [unused] [bigint] NULL, CONSTRAINT [PK_t_rpt_table_spaceinfo] PRIMARY KEY CLUSTERED ( [table_name] ASC, [record_date] ASC, [record_time] ASC ) )
2. 新建作業(yè)
新建作業(yè),作業(yè)計(jì)劃每天凌晨運(yùn)行一次,每天記錄表占用的空間情況,存儲(chǔ)到上一步建立的表中
作業(yè)中執(zhí)行的T-SQL代碼為:
SET NOCOUNT ON /*創(chuàng)建臨時(shí)表,存放用戶表的空間及數(shù)據(jù)行數(shù)信息*/ CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(500) , rowsinfo BIGINT , reserved VARCHAR(20) , datainfo VARCHAR(20) , index_size VARCHAR(20) , unused VARCHAR(20) ) DECLARE @tablename VARCHAR(255); /*使用游標(biāo),循環(huán)得到表空間使用情況*/ DECLARE Info_cursor CURSOR FOR SELECT '[' + [name] + ']' FROM sys.tables WHERE type = 'U'; OPEN Info_cursor FETCH NEXT FROM Info_cursor INTO @tablename WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO #tablespaceinfo EXEC sp_spaceused @tablename FETCH NEXT FROM Info_cursor INTO @tablename END INSERT INTO t_rpt_table_spaceinfo (record_date, record_time, [table_name], [rows_count] , reserved, [data_size], index_size, unused) SELECT convert(date,getdate()), convert(varchar(8),getdate(),114), nameinfo, rowsinfo ,CAST(REPLACE(reserved, 'KB', '') AS BIGINT) ,CAST(REPLACE(datainfo, 'KB', '') AS BIGINT) ,CAST(REPLACE(index_size, 'KB', '') AS BIGINT) ,CAST(REPLACE(unused, 'KB', '') AS BIGINT) FROM #tablespaceinfo CLOSE Info_cursor DEALLOCATE Info_cursor DROP TABLE [#tablespaceinfo]
3. 查詢結(jié)果
連續(xù)的數(shù)據(jù)記錄之間做比較,即可得到數(shù)據(jù)的增量變化情況
示例代碼如下:
;with table_spaceinfo as ( select record_date, record_time, table_name, rows_count, reserved, data_size, index_size, unused ,ROW_NUMBER() over(PARTITION by table_name order by record_date,record_time asc) as list_no from t_rpt_table_spaceinfo ) select _a.table_name as 表名,convert(varchar(20),_a.record_date)+' '+convert(varchar(8),_a.record_time)+'~~' +convert(varchar(20),_b.record_date)+' '+convert(varchar(8),_b.record_time) as [時(shí)間段范圍] ,_b.rows_count-_a.rows_count as [新增的行數(shù)] ,_b.data_size - _a.data_size as [新增數(shù)據(jù)空間(KB)] from table_spaceinfo _a join table_spaceinfo _b on _a.table_name=_b.table_name and _a.list_no=_b.list_no-1 order by [時(shí)間段范圍]
相關(guān)文章
詳解SQL Server如何修改數(shù)據(jù)庫(kù)物理文件的存在位置
這篇文章主要給大家介紹了關(guān)于SQL Server如何修改數(shù)據(jù)庫(kù)物理文件存在位置的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)看看吧。2017-06-06SQL語(yǔ)句實(shí)現(xiàn)查詢Index使用狀況
這篇文章主要介紹了SQL語(yǔ)句實(shí)現(xiàn)查詢Index使用狀況,本文直接給出SQL腳本代碼,需要的朋友可以參考下2015-07-07SQL SERVER 利用存儲(chǔ)過(guò)程查看角色和用戶信息的寫(xiě)法
SQL SERVER 利用存儲(chǔ)過(guò)程查看角色(服務(wù)器/數(shù)據(jù)庫(kù))和用戶信息,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-01-01當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法
這篇文章主要介紹了當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法,需要的朋友可以參考下2016-10-10使用SQL SERVER存儲(chǔ)過(guò)程實(shí)現(xiàn)歷史數(shù)據(jù)遷移方式
這篇文章主要介紹了使用SQL SERVER存儲(chǔ)過(guò)程實(shí)現(xiàn)歷史數(shù)據(jù)遷移,介紹了歷史數(shù)據(jù)遷移的基本概念及目的,對(duì)SQL SERVER存儲(chǔ)過(guò)程歷史數(shù)據(jù)遷移知識(shí)感興趣的朋友參考下吧2021-09-09快速實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)恢復(fù)備份
這篇文章主要為大家詳細(xì)介紹了如何快速實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)恢復(fù)備份的兩種方法,感興趣的小伙伴們可以參考一下2016-05-05sqlserver數(shù)據(jù)庫(kù)導(dǎo)入方法的詳細(xì)圖文教程
導(dǎo)入數(shù)據(jù)也是數(shù)據(jù)庫(kù)操作中使用頻繁的功能,下面這篇文章主要給大家介紹了關(guān)于sqlserver數(shù)據(jù)庫(kù)導(dǎo)入方法的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探
這篇文章主要給大家介紹了關(guān)于sql server中內(nèi)存的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者理解sql server具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07