-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsp_tablesize.sql
More file actions
63 lines (54 loc) · 1.41 KB
/
sp_tablesize.sql
File metadata and controls
63 lines (54 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
IF EXISTS (SELECT 1 FROM sys.objects where [object_id] = OBJECT_ID('Utility.sp_tablesize'))
DROP PROCEDURE [Utility].[sp_tablesize]
GO
CREATE PROCEDURE [Utility].[sp_tablesize]
AS
BEGIN
-- TEMP TABLES FOR ANALYSIS
CREATE TABLE #ttables
(
sname NVARCHAR(max),
irows BIGINT,
ireservedkb BIGINT,
idatakb BIGINT,
iindexkb BIGINT,
iunusedkb BIGINT
)
CREATE TABLE #ttmp
(
sname NVARCHAR(max),
irows BIGINT,
sreservedkb NVARCHAR(max),
sdatakb NVARCHAR(max),
sindexkb NVARCHAR(max),
sunusedkb NVARCHAR(max)
)
-- COLLECT SPACE USE PER TABLE
EXEC Sp_msforeachtable
'INSERT #tTmp EXEC sp_spaceused [?];'
-- CONVERT NUMBER-AS-TEXT COLUMNS TO NUMBER TYPES FOR EASIER ANALYSIS
INSERT #ttables
SELECT sname,
irows,
Cast(Replace(sreservedkb, ' KB', '') AS BIGINT),
Cast(Replace(sdatakb, ' KB', '') AS BIGINT),
Cast(Replace(sindexkb, ' KB', '') AS BIGINT),
Cast(Replace(sunusedkb, ' KB', '') AS BIGINT)
FROM #ttmp
DROP TABLE #ttmp
-- DO SOME ANALYSIS
SELECT sName='TOTALS',
iRows=Sum(irows),
iReservedKB=Sum(ireservedkb),
iDataKB=Sum(idatakb),
iIndexKB=Sum(iindexkb),
iUnusedKB=Sum(iunusedkb)
FROM #ttables
ORDER BY sname
SELECT *
FROM #ttables
ORDER BY ireservedkb DESC
-- CLEAN UP
DROP TABLE #ttables
END
GO