SQL Server 2005を使用していますが、すべてのテーブルのリストを各テーブルのレコード数とともに取得する方法を知りたいです。
sys.tables
ビューを使用してテーブルのリストを取得できることはわかっていますが、カウントを見つけることができません。
ありがとうございました
SELECT
[TableName] = so.name,
[RowCount] = MAX(si.rows)
FROM
sysobjects so,
sysindexes si
WHERE
so.xtype = 'U'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
その価値のために、sysindexesシステムテーブルはSQL 2008で非推奨になりました。上記は引き続き機能しますが、SQL2008システムビューで今後機能するクエリを次に示します。
select
schema_name(obj.schema_id) + '.' + obj.name,
row_count
from (
select
object_id,
row_count = sum(row_count)
from sys.dm_db_partition_stats
where index_id < 2 -- heap or clustered index
group by object_id
) Q
join sys.tables obj on obj.object_id = Q.object_id
Sysindexes.rowsは行数の概算であると付け加えるかもしれません。 DBCC UPDATEUSAGE
より正確な値が必要な場合。この問題は、4700万から5000万行を超えるテーブルを持つDBで発生し、それぞれから約50万行が失われたと考えました。
おそらくこのようなもの:
SELECT
[TableName] = so.name,
[RowCount] = MAX(si.rows)
FROM
sysobjects so,
sysindexes si
WHERE
so.xtype = 'U'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
これは私の方法です:
create table #rowcount (tablename varchar(128), rowcnt int)
exec sp_MSforeachtable
'insert into #rowcount select ''?'', count(*) from ?'
select * from #rowcount
order by tablename
drop table #rowcount
チャームのように機能します
これらすべての方法で、selectクエリの結果セットの行数がわかります。 SSMSには、次の方法でオブジェクトの詳細を表示するオプションもあります: "Object Explorer Details"ペイン。これは2005年以降のすべてのバージョンで利用可能です
Object Explorer Detailsは、SQL Server ManagementStudioのコンポーネントです。サーバー内のすべてのオブジェクトの表形式のビューを提供し、それらを管理するためのユーザーインターフェイスを提供します。
「オブジェクト詳細ウィンドウ」にアクセスするには:「オブジェクトエクスプローラー」ペインで詳細を表示するオブジェクトをクリックし、F7を押します。続きを読む: https://technet.Microsoft.com/en-us/library/ms191146(v = sql.90).aspx
長所:
注:デフォルトでは、[オブジェクトの詳細]ペインに行数が表示されない場合があります。列ヘッダーをクリックして取り込むことができます。