我想返回至少有一行數據的所有表格。選擇至少插入一行數據的所有表格
我用的是這樣的:
SELECT DISTINCT(OBJECT_NAME(OBJECT_ID))
FROM SYS.DM_DB_PARTITION_STATS ST
WHERE ST.ROW_COUNT > 0 AND OBJECT_ID > 100
但我不希望使用表SYS.DM_DB_PARTITION_STATS
。
我想知道另一種方法來查找這些表?
任何線索?
謝謝。
我想返回至少有一行數據的所有表格。選擇至少插入一行數據的所有表格
我用的是這樣的:
SELECT DISTINCT(OBJECT_NAME(OBJECT_ID))
FROM SYS.DM_DB_PARTITION_STATS ST
WHERE ST.ROW_COUNT > 0 AND OBJECT_ID > 100
但我不希望使用表SYS.DM_DB_PARTITION_STATS
。
我想知道另一種方法來查找這些表?
任何線索?
謝謝。
你不應該使用sys.dm_db_partition_stats
你可以使用這樣的事情:
SELECT
t.NAME AS TableName,
p.rows AS RowCounts
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE
t.is_ms_shipped = 0
AND p.rows > 0
GROUP BY
t.Name, p.Rows
ORDER BY
t.Name
將列出在他們的名稱和行數(> 0)的所有表。
它不使用sys.dm_db_partition_stats
....
*** ***爲什麼你想不使用'sys.dm_db_partition_stats'? ?任何特定的原因? – 2014-08-28 18:40:09
「我想知道另一種方法來查找這些表?」,一個使用sysobjects並遍歷每個表的過程...使用動態sql和循環將結果修改爲臨時表並選擇形式,或者以其他方式跟蹤。但迭代雖然和動態SQL是我能想到的系統對象之外的方式。 – xQbert 2014-08-28 18:45:47
@xQbert不,請不要'sysobjects',這是一個棄用的,向後兼容的視圖,你絕對不應該向人推薦。 – 2014-08-28 18:49:22