2015-01-06 67 views
0

我想知道我的SQL Server數據庫中的哪些表的大小相當大。我找到了一個計算表的估計大小的SQL函數(link),但它不支持列出所有可用表。有沒有辦法做到這一點?我設法在TSQL腳本中編寫函數,它確實回答了我的問題,但它不是解決問題的最佳方法。估計您的SQL Server數據庫中所有表的大小

DECLARE @table_name varchar(100) 
DECLARE @tables TABLE (table_name VARCHAR(255), column_list VARCHAR(255)); 

SELECT * INTO #tmp_tables FROM (
SELECT o.name AS table_name, 
    STUFF(
    (
     SELECT ', ' + c.name 
     FROM sys.columns AS c 
     WHERE c.object_id = o.object_id 
     ORDER BY c.column_id 
     FOR XML PATH('') 
    ), 1, 2, '') AS column_list 
FROM sys.objects AS o 
WHERE type = 'U') table_names 

WHILE (SELECT COUNT(*) FROM #tmp_tables) > 0 
BEGIN 
SELECT TOP 1 @table_name = table_name FROM #tmp_tables; 
print @table_name; 
EXEC Sp_spaceused @table_name; 
DELETE #tmp_tables where table_name = @table_name; 

END 
DROP TABLE #tmp_tables; 
+1

http://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database – CodingDefined

回答

0

文檔狀態Sp_spaceused應該在所有在數據庫中的表,如果省略該參數被應用。

如果這是不正確的, 我會用MSforeachtableiterate through all of tables,並呼籲他們每個人Sp_spaceused,再總結的結果。

sp_msforeachtable ' Sp_spaceused ''?'' ' 
0

您可以這樣做是單個查詢。查詢dm_db_index_physical_stats以獲取數據庫中所有分區的大小。加入到其他通常的元數據表中,如sys.indexessys.objects

+0

我看到它鏈接到這個問題,這是相當優雅的版本,我正在尋找: http://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database?lq=1 – Guido

相關問題