This a simple Stored procedure to count the total numbers of rows in each table of your Database.
I assume you have Northwind database installed.
The Stored Procedure
I assume you have Northwind database installed.
The Stored Procedure
IF EXISTS ( SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[sp_GetRowsCountForAllTables]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1 ) DROP PROCEDURE [dbo].[sp_GetRowsCountForAllTables] GO CREATE PROCEDURE sp_GetRowsCountForAllTables @DBName VARCHAR(128) = NULL AS SET nocount ON IF @DBName IS NULL SET @DBName = DB_NAME() CREATE TABLE #a ( TableName VARCHAR(128) , norows INT NULL , id INT IDENTITY(1, 1) ) DECLARE @id INT , @maxID INT , @TableName VARCHAR(128) , @FKName VARCHAR(128) , @cmd NVARCHAR(1000) , @rc INT , @spcmd VARCHAR(1000) SET @cmd = 'exec ' + @DBName + '..sp_executesql N''insert #a (TableName) select TABLE_NAME from information_schema.tables where TABLE_TYPE = ''''BASE TABLE'''' '' ' EXEC (@cmd) SELECT @id = 0 , @maxID = MAX(id) FROM #a WHILE @id < @maxID BEGIN SELECT @id = MIN(id) FROM #a WHERE id > @id SELECT @TableName = TableName FROM #a WHERE id = @id SET @cmd = 'exec ' + @DBName + '..sp_executesql N''update #a set norows = (select rows from sysindexes where indid in (0,1) and id = object_id(''''' + @TableName + '''''))' SET @cmd = @cmd + ' where #a.id = ' + CONVERT(VARCHAR(10), @id) + '''' EXEC (@cmd) IF @rc <> 0 OR @@error <> 0 BEGIN RAISERROR('failed %s',16,-1,@TableName) RETURN END END SELECT * FROM #a ORDER BY norows desc DROP TABLE #a GOThe Output:
EXEC sp_GetRowsCountForAllTables
0 comments:
Post a Comment