全てのテーブルのデータ件数を取得するT-SQLスクリプト書いたのでメモ。
DB移行なんかの時の検証用にでも。
SQLServer7.0で動きました。
単にテーブル名取ってきてCountした結果を一時テーブルに突っ込んでるだけです。
–すべてのユーザーテーブルのデータ行数を一覧表示する
–テーブル名(サイズは適当です。必要に応じて増やしてね。)
DECLARE @TABLE_NAME NVARCHAR(100)–集計用SQL(SQL文字列用です。必要に応じてry)
DECLARE @SQL NVARCHAR(100)–件数取得用
DECLARE @ROW_COUNT int–集計結果保存用一時テーブル
CREATE TABLE #T_RESULT(
TABLE_NAME NVARCHAR(100),
ROW_COUNT int
)–sysobjectsに保存されているユーザーテーブルをすべて取り出すカーソル
DECLARE C_TABLES CURSOR FOR
SELECT name
FROM sysobjects
WHERE (type = ‘U’)OPEN C_TABLES
FETCH NEXT FROM C_TABLES INTO @TABLE_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
–データ件数集計用SQL文字列の生成
SET @SQL = N’SELECT @ROW_COUNT = COUNT(*) FROM ‘ + @TABLE_NAME–行数をOUTPUTするSQL実行
EXEC SP_EXECUTESQL @SQL, N’@ROW_COUNT int OUTPUT’, @ROW_COUNT OUTPUT–結果を一時テーブルにINSERT
INSERT INTO #T_RESULT VALUES (@TABLE_NAME, @ROW_COUNT)FETCH NEXT FROM C_TABLES INTO @TABLE_NAME
ENDCLOSE C_TABLES
DEALLOCATE C_TABLESSELECT * FROM #T_RESULT ORDER BY TABLE_NAME
※後日追記
人力検索にサンプルソースが。
※追記
SQLServer2005以降はこちらにサンプルが!