SQL Server Monitoring – Table size

This blog is part of the blog series named SQL Server Monitoring.

Purpose

To get a baseline of the size of the tables in the databases.

Report

The report has in the upper part 2 line charts, the left showing the number of rows in the tables, and the right showing the data size, the index size, the reserved space and the unused space in KB, where the table in the lower part shows the size per database and with the possibility to drill down to schema and object level.

Sources

This feature queries the DMV sys.dm_db_partition_stats which returns page and row-count information for the objects queried.

Model

The model for the report uses the fact [Table size] and the dimensions [Date], [Index configuration] and [Object].

Service setup

The feature uses the service ‘fhsmSPCapacity’ which can be configured using the stored procedure fhsmSPControl.

Parameter

The feature is part of the Capacity service, which also serves the features Database size and Partitioned indexes, and the Capacity service accept the parameter @Databases and the syntax is the same that is used in the SQL Server Index and Statistics Management solution made by Ola Hallengren.

The default parameter for the feature is “@Databases = ‘USER_DATABASES, msdb, tempdb'”

ValueDescription
SYSTEM_DATABASESAll system databases (master, msdb, model, and tempdb)
USER_DATABASESAll user databases
ALL_DATABASESAll databases
Db1The database Db1
Db1, Db2The databases Db1 and Db2
USER_DATABASES, -Db1All user databases, except Db1
%Db%All databases that have “Db” in the name
%Db%, -Db1All databases that have “Db” in the name, except Db1
ALL_DATABASES, -%Db%All databases that do not have “Db” in the name
EXEC fhsmSPControl
	@Type = 'Parameter',
	@Command = 'list',
	@Task = 'fhsmSPCapacity',
	@Name = 'Capacity',
	@Wildcard = 0;

EXEC fhsmSPControl
	@Type = 'Parameter',
	@Command = 'set',
	@Task = 'fhsmSPCapacity',
	@Name = 'Capacity',
	@Parameter = '@Databases = ''USER_DATABASES, msdb, tempdb''';

Schedule

The default schedule for the feature is once every day between 07:00 and 08:00.

EXEC fhsmSPControl
	@Type = 'Schedule',
	@Command = 'list',
	@Task = 'fhsmSPCapacity',
	@Name = 'Capacity',
	@Wildcard = 0;

EXEC fhsmSPControl
	@Type = 'Schedule',
	@Command = 'set',
	@Task = 'fhsmSPCapacity',
	@Name = 'Capacity',
	@ScheduleType = 0,
	@Enabled = 1,
	@ExecutionDelaySec = 43200,
	@FromTime = '07:00:00',
	@ToTime = '08:00:00',
	@Monday = 1,
	@Tuesday = 1,
	@Wednesday = 1,
	@Thursday = 1,
	@Friday = 1,
	@Saturday = 1,
	@Sunday = 1;

Retention

The default retention for the table dbo.fhsmTableSize is 60 days.

EXEC fhsmSPControl
	@Type = 'Retention',
	@Command = 'list',
	@TableName = 'fhsmTableSize',
	@Wildcard = 0;

EXEC fhsmSPControl
	@Type = 'Retention',
	@Command = 'set',
	@TableName = 'fhsmTableSize',
	@Enabled = 1,
	@Sequence = 1,
	@Days = 60;