Symptoms

adTempus logs an Alert and an Event Log error with the following message:

The current size of the adTempus database ({0}MB) is nearing the maximum size allowed for this edition of SQL Server ({1}MB). If the size limit is reached adTempus will fail. Take steps now to ensure that job history retention settings are appropriate. If you need to continue to retain large amounts of history data you will need to migrate the adTempus database to a full SQL Server instance

Cause

SQL Server Express (the database engine provided with adTempus) has a limit on the maximum supported database size. For SQL Server 2012 (which is provided with adTempus 4), the limit is 10GB. Once adTempus detects that the database has reached 75% of this size, it issues the warning message.

The largest use of database space by adTempus is job history data, and retaining a large amount of history can cause the database to reach the limit.

Resolution

Note: Once the database reaches the size limit, adTempus will no longer be able to write data to the database, and SQL Server may fail to load the database at startup. It is critical that this issue be addressed immediately.

Determine whether you are retaining an excessive amount of history data as discussed in articles K00000475 and K00000476 and reduce the amount of history if possible.

If it is necessary to retain large amounts of history, you will need to migrate your adTempus database to a full instance of SQL Server, which you will need to license separately from Microsoft.

Additional Information

Determining the size of the adTempus database

To determine the size of the adTempus database, run the adTempus Database Utility and choose the "Get database size" item from the Snippets menu, or use your preferred database tool to execute this query against the database:

sp_helpdb [databasename]

where databasename is the name of the adTempus database.

To determine the amount of space used by individual tables, choose the "Show sizes for all tables" item from the Snippets menu, or execute this query against the database:

    SELECT [Table Name], (SELECT rows FROM sysindexes s WHERE s.indid < 2 AND s.id = OBJECT_ID(a.[Table Name])) AS [Row count], [Total space used (MB)] FROM  
	(
	SELECT	QUOTENAME(USER_NAME(o.uid)) + '.' + QUOTENAME(OBJECT_NAME(i.id)) AS [Table Name],
		CONVERT(numeric(15,2),(((CONVERT(numeric(15,2),SUM(i.reserved)) * (SELECT low FROM master.dbo.spt_values (NOLOCK) WHERE number = 1 AND type = 'E')) / 1024.)/1024.)) AS [Total space used (MB)]
	FROM	sysindexes i (NOLOCK)
			INNER JOIN 
		sysobjects o (NOLOCK) 
			ON 
		i.id = o.id AND 
		o.type = 'U' AND OBJECTPROPERTY(i.id, 'IsMSShipped') = 0
	WHERE	indid IN (0, 1, 255)
	GROUP BY	QUOTENAME(USER_NAME(o.uid)) + '.' + QUOTENAME(OBJECT_NAME(i.id))
	) as a
ORDER BY	[Total space used (MB)] DESC