問題:
如何得到一個Access表占用磁盤空間的大小呢?這個表可能包括ole字段??如何做呢?能否把所有的字段都先len再sum然后得到大小呢?在 SQL SERVER 2000 中可以用 sp_spaceused 編程獲得 exec sp_MSForEachTable access 如何完成? Access 不像 SQL SERVER ,不存在此功能。其實(shí)在 SQL Server 中你反編譯 sp_spaceused 這個系統(tǒng)存儲過程可以看到它都是通過查詢系統(tǒng)表,比如:sysfiles,sysindexes,spt_values 來判斷其占用空間大小的。而 Access 中系統(tǒng)表并不存儲這些信息。 在 ACCESS 永遠(yuǎn)只計算 MDB 的大小,不計算表的大小。但是你可以通過判斷每個表的字段類型以及記錄數(shù)估算出大小,或者干脆將單個表導(dǎo)出到一個新的 MDB 來估算大小。如果你只是為了得到 OLE 大小,可以用select sum(lenB(b)) as 總OLE大小 from table_name 關(guān)于直接通過 LEN 和 SUM 來獲取數(shù)據(jù)大小是一個思路,但是不能直接完成,因?yàn)?LEN 可能對 TEXT 和 OLE對象 字段有效,但是對數(shù)字等字段無效,你必須另外編程通過判斷數(shù)字字段的字段類型來判斷其數(shù)據(jù)占用的空間。而且是估算 ACCESS 中數(shù)據(jù)的大小,而不是占用磁盤空間的大小。即使你估算了所有的表的數(shù)據(jù)量大小,加總后還是不等于 MDB 的實(shí)際占用磁盤空間大小,因?yàn)檫有系統(tǒng)表、臨時表、表的自定義屬性會占用額外的空間,而且有了自定義屬性后占用的空間是不確定的。當(dāng)然,如果你要徹底判斷所有這些情況不是不可以,只是非常麻煩而已,要編寫很多程序,并且用到 JET SQL / ADO / DAO / ADOX 才能判斷。 |
|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國
( 粵ICP備10043721號-1 )
GMT+8, 2025-7-13 08:41 , Processed in 0.071039 second(s), 16 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.