SQLServer-全テーブルのデータ件数を取得する

 全てのテーブルのデータ件数を取得する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
END

CLOSE C_TABLES
DEALLOCATE C_TABLES

SELECT * FROM #T_RESULT ORDER BY TABLE_NAME


 ※後日追記
 人力検索にサンプルソースが。

 ※追記
 SQLServer2005以降はこちらにサンプルが!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です