0

サンプル データベース内のすべてのテーブルのすべてのレコードをレンダリングする方法。以下のクエリは、すべてのテーブルのレコード カウントを返します。しかし、サンプル データベース内のすべてのテーブルのすべてのレコードが必要です。

SELECT   TableName = o.name,
         Rows = max(i.rows)
FROM     sysobjects o
         INNER JOIN sysindexes i
           ON o.id = i.id
GROUP BY o.name
ORDER BY Rows DESC
4

1 に答える 1

3

文書化されていない(*)ストアドプロシージャを使用して、データベース内の各テーブルに対してクエリを実行できます。

exec sp_MSforeachtable 'select * from ?'

これにより、テーブルごとに1つの結果セットが返されます。テーブル名を別の列として使用する場合:

exec sp_MSforeachtable 'select ''?'' as TableName,* from ?'

一般に、データベース内のすべてのテーブルの列は相互に互換性がないため、単一の結果セットを取得する簡単な方法はありません。


(*)うまくいけば、ここでの危険は明らかです。文書化されていないため、SQLServerに適用されたサービス操作に基づいて削除または変更される可能性があります。一方で、彼らがそれを取り除くことはないだろうし、中には特別な魔法はありません。ベルトとブレースの場合、プロシージャを別の名前で独自のデータベースにコピーすると、変更されていないことを信頼できます。

于 2013-01-10T09:28:02.533 に答える