Browse Source

Update stats script

Get information on when the stats were last updated.
Pedro Lopes 9 years ago
parent
commit
58185b3786
2 changed files with 11 additions and 3 deletions
  1. 8 0
      Statistics/README.md
  2. 3 3
      Statistics/view_Stats_Last_Update.sql

+ 8 - 0
Statistics/README.md

@@ -0,0 +1,8 @@
+Change log and other information available at http://aka.ms/SQLInsights - SQL Swiss Army Knife Series
+
+**Purpose:** Checks for statistics last update date in the current database.
+
+In the output, you will find the following information:
+-  The database, table and statistic object name;
+-  The number of rows in the table and the current modification counter;
+-  Date of the last statistic update;

+ 3 - 3
Statistics/view_Stats_Last_Update.sql

@@ -1,6 +1,6 @@
 -- 04/01/2012 Pedro Lopes (Microsoft) [email protected] (http://aka.ms/sqlinsights/)
 --
--- Checks for stats last update on database in scope
+-- Checks for statistics last update date in the current database.
 --
 -- 11/02/2016 Fixed rows col when sys.dm_db_stats_properties returns null
 --
@@ -14,7 +14,7 @@ SELECT @sqlbuild = CONVERT(int, @@microsoftversion & 0xffff);
 IF (@sqlmajorver = 10 AND @sqlminorver = 50 AND @sqlbuild >= 4000) OR (@sqlmajorver = 11 AND @sqlbuild >= 3000) OR @sqlmajorver > 11
 BEGIN
 	SET @sqlcmd = 'USE ' + QUOTENAME(DB_NAME()) + ';
-SELECT DISTINCT ''' + DB_NAME() + ''' AS [DatabaseName], ''' + CONVERT(VARCHAR(12),DB_ID()) + ''' AS [databaseID], mst.[object_id] AS objectID, t.name AS schemaName, OBJECT_NAME(mst.[object_id]) AS tableName, ISNULL(sp.[rows],SUM(p.[rows])) AS [rows], sp.modification_counter, ss.[stats_id], ss.name AS [stat_name], STATS_DATE(o.[object_id], ss.[stats_id]) AS [stats_date]
+SELECT DISTINCT ''' + CONVERT(VARCHAR(12),DB_ID()) + ''' AS [databaseID], mst.[object_id] AS objectID, ss.[stats_id], ''' + DB_NAME() + ''' AS [DatabaseName], t.name AS schemaName, OBJECT_NAME(mst.[object_id]) AS tableName, ss.name AS [stat_name], ISNULL(sp.[rows],SUM(p.[rows])) AS [rows], sp.modification_counter, STATS_DATE(o.[object_id], ss.[stats_id]) AS [stats_date]
 FROM sys.stats AS ss 
 	INNER JOIN sys.objects AS o ON o.[object_id] = ss.[object_id]
 	INNER JOIN sys.tables AS mst ON mst.[object_id] = o.[object_id]
@@ -27,7 +27,7 @@ END
 ELSE
 BEGIN
 	SET @sqlcmd = 'USE ' + QUOTENAME(DB_NAME()) + ';
-SELECT DISTINCT ''' + DB_NAME() + ''' AS [DatabaseName], ''' + CONVERT(VARCHAR(12),DB_ID()) + ''' AS [databaseID], mst.[object_id] AS objectID, t.name AS schemaName, OBJECT_NAME(mst.[object_id]) AS tableName, SUM(p.[rows]) AS [rows], rowmodctr AS modification_counter, ss.stats_id, ss.name AS [stat_name], STATS_DATE(o.[object_id], ss.[stats_id]) AS [stats_date]
+SELECT DISTINCT ''' + CONVERT(VARCHAR(12),DB_ID()) + ''' AS [databaseID], mst.[object_id] AS objectID, ss.[stats_id], ''' + DB_NAME() + ''' AS [DatabaseName], t.name AS schemaName, OBJECT_NAME(mst.[object_id]) AS tableName, ss.name AS [stat_name], SUM(p.[rows]) AS [rows], rowmodctr AS modification_counter, STATS_DATE(o.[object_id], ss.[stats_id]) AS [stats_date]
 FROM sys.stats AS ss
 	INNER JOIN sys.sysindexes AS si ON si.id = ss.[object_id]
 	INNER JOIN sys.objects AS o ON o.[object_id] = si.id