问题:
如何得到一个Access表占用磁盘空间的大小呢?这个表可能包括ole字段??如何做呢?能否把所有的字段都先len再sum然后得到大小呢?在 SQL SERVER 2000 中可以用 sp_spaceused 编程获得 exec sp_MSForEachTable access 如何完成? Access 不像 SQL SERVER ,不存在此功能。其实在 SQL Server 中你反编译 sp_spaceused 这个系统存储过程可以看到它都是通过查询系统表,比如:sysfiles,sysindexes,spt_values 来判断其占用空间大小的。而 Access 中系统表并不存储这些信息。 在 ACCESS 永远只计算 MDB 的大小,不计算表的大小。但是你可以通过判断每个表的字段类型以及记录数估算出大小,或者干脆将单个表导出到一个新的 MDB 来估算大小。如果你只是为了得到 OLE 大小,可以用select sum(lenB(b)) as 总OLE大小 from table_name 关于直接通过 LEN 和 SUM 来获取数据大小是一个思路,但是不能直接完成,因为 LEN 可能对 TEXT 和 OLE对象 字段有效,但是对数字等字段无效,你必须另外编程通过判断数字字段的字段类型来判断其数据占用的空间。而且是估算 ACCESS 中数据的大小,而不是占用磁盘空间的大小。即使你估算了所有的表的数据量大小,加总后还是不等于 MDB 的实际占用磁盘空间大小,因为还有系统表、临时表、表的自定义属性会占用额外的空间,而且有了自定义属性后占用的空间是不确定的。当然,如果你要彻底判断所有这些情况不是不可以,只是非常麻烦而已,要编写很多程序,并且用到 JET SQL / ADO / DAO / ADOX 才能判断。 |
|站长邮箱|小黑屋|手机版|Office中国/Access中国
( 粤ICP备10043721号-1 )
GMT+8, 2025-4-2 13:00 , Processed in 0.253647 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.