索引使用空间 varchar(10),
未用空间 varchar(10))',
@command1=N'insert ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) exec sp_spaceused ''?''
回答: 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 的实际占用磁盘空间大小,因为还有系统表、临时表、表的自定义属性会占用额外的空间,而且有了自定义属性后占用的空间是不确定的。
取消
评论