use MyDatabase go create table #rowcount (tablename varchar(128), rowcnt int) exec sp_MSforeachtable 'insert into #rowcount select ''?'', count(*) from ?' select top 5 * from #rowcount order by tablename drop table #rowcount>I am trying to create a DB design document for a legacy DB. Part of this is the row count of each table. I have put together the following query, but it chokes at the line indicated (inside the cursor).
> SET @RowCount = (SELECT COUNT (*) FROM @TableName) >>
>USE MyDB >GO >DECLARE @TableName VARCHAR(256), > @RowCount INT > >DROP TABLE [dbo].[#MyDBTableInfo] > >CREATE TABLE #MyDBTableInfo ( > MyDBTableInfoID INT IDENTITY (1,1) PRIMARY KEY, > TableName VARCHAR(256), > TableRowCount SMALLINT, > COLUMN_NAME VARCHAR(128), > ORDINAL_POSITION INT, > COLUMN_DEFAULT VARCHAR(4000), > DATA_TYPE VARCHAR(128), > CHARACTER_MAXIMUM_LENGTH INT, > NUMERIC_PRECISION INT, > NUMERIC_PRECISION_RADIX SMALLINT, > NUMERIC_SCALE INT, > IS_NULLABLE VARCHAR(3) >) > >INSERT INTO #MyDBTableInfo >SELECT > TABLE_SCHEMA + '.' + TABLE_NAME AS TableName, > 0 AS TableRowCount, > COLUMN_NAME, > ORDINAL_POSITION, > COLUMN_DEFAULT, > DATA_TYPE, > CHARACTER_MAXIMUM_LENGTH, > NUMERIC_PRECISION, > NUMERIC_PRECISION_RADIX, > NUMERIC_SCALE, > IS_NULLABLE >FROM INFORMATION_SCHEMA.COLUMNS > >DECLARE MyDBTableInfoCUR CURSOR FOR >SELECT DISTINCT TableName >FROM #MyDBTableInfo >OPEN MyDBTableInfoCUR >FETCH NEXT FROM MyDBTableInfoCUR INTO @TableName >WHILE @@FETCH_STATUS = 0 >BEGIN > SET @RowCount = (SELECT COUNT (*) FROM @TableName) > > UPDATE #MyDBTableInfo > SET TableRowCount = @RowCount WHERE TableName = @TableName > > FETCH NEXT FROM MyDBTableInfoCUR INTO @TableName >END >CLOSE MyDBTableInfoCUR >DEALLOCATE MyDBTableInfoCUR > > >SELECT * FROM #MyDBTableInfo > >