Home > sql > List all tables for MSSQL

List all tables for MSSQL

February 16th, 2010 admin Leave a comment Go to comments

I’m currently replicating data from MSSQL2005 to MSSQL2000, which has proven a bit of a PITA. I succeeded using transactional replication, but afterwards I needed to verify all data has been copied. Tables without primary key (stupid, I know) has not been replicated, and some views referencing missing tables or databases are not either (probably shouldn’t anyway).

However, it’s pretty damn useful to just get a list of tables with count of rows, which led me to this blog post.

The SQL code needed is this:

USE DatabaseName
GO
CREATE TABLE #temp (
table_name sysname ,
row_count INT,
reserved_size VARCHAR(50),
data_size VARCHAR(50),
index_size VARCHAR(50),
unused_size VARCHAR(50))
SET NOCOUNT ON
INSERT #temp
EXEC sp_msforeachtable 'sp_spaceused ''?'''
SELECT a.table_name,
a.row_count,
COUNT(*) AS col_count,
a.data_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count, a.data_size
ORDER BY CAST(REPLACE(a.data_size, ' KB', '') AS integer) DESC
DROP TABLE #temp
  • Share/Bookmark
Categories: sql Tags: , ,
  1. admin
    February 23rd, 2010 at 11:38 | #1

    Note: This is not a complete solution. Some tables show incorrect data, which I suspect is because statistics is not updated after the replication. I will need to look further into this.

  1. No trackbacks yet.

Spam Protection by WP-SpamFree