2011-10-11 62 views
2

我想在表上使用過程sp_spaceused。 此過程返回表格的大小。 例如:將字節轉換爲整數

sp_spaceused 

database_name   database_size unallocated space 

db_test 216001.00 MB 196366.74 MB 

後,我進行壓縮我要調用的函數,以便找到壓縮率。

我再次調用sp_spaceused.

我怎麼能爲了執行除法代表database_size內部?

+2

我可能只是看看'EXEC sp_helptext'sp_spaceused''的定義並創建一個以一致單元報告的新版本。 –

+1

如果要測試壓縮,可以使用[sp_estimate_data_compression_savings](http://msdn.microsoft.com/zh-cn/library/cc280574.aspx)存儲過程。否則,馬丁史密斯的評論是一個很好的起點。 –

回答

0

您實際上可以將存儲過程的結果存儲在表中。一旦你把它們放在桌子上,你可以根據需要操作它。要將存儲過程結果存入表中,首先需要創建一個與存儲過程的結果集匹配的列的表。然後爲表執行插入語句,而不是查詢或值列表,執行存儲過程。請注意,這隻會將存儲過程的第一個結果集放到表中。例如,你可以這樣做:

create table HoldSpaceUsed 
(
    database_name sysname, 
    database_size varchar(100), 
    [unallocated space] varchar(100) 
) 

insert HoldSpaceUsed 
exec sp_spacesused 

你執行上面的語句後,HoldSpaceUsed表將包含該存儲過程的結果。請記住,database_size字段的'MB'代表數據庫大小以兆字節爲單位,因此您需要刪除'MB'文本,以便只有該數字,然後可以使用它,無論您需要什麼。