【发布时间】:2008-12-08 15:13:52
【问题描述】:
我正在尝试以编程方式监控 SQL Server 数据库的大小,以便我的 Web 应用程序的管理部分可以报告它,并且我可以使用它来执行一些清理 SP、清除日志文件等。
根据 SO 建议,我使用以下代码计算表的大小:
CREATE TABLE #t (name SYSNAME, rows CHAR(11), reserved VARCHAR(18), data VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18))EXEC sp_msforeachtable 'INSERT INTO #t EXEC sp_spaceused ''?'''-- SELECT * FROM #t ORDER BY name-- SELECT name, CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3)) FROM #t ORDER BY nameSELECT SUM(CONVERT(INT, SUBSTRING(data, 1, LEN(data)-3))) FROM
#tDROP TABLE #t
当我对我的小型示例数据库运行此程序时,我得到的总和值约为 6.8 兆字节。当我查看数据库的属性时,它显示为 15.5 兆字节。
我有以下问题:
1. 还有什么可以弥补的?
2. 这种差异是否可以被描述为“开销”,它只会随着其他数据的增长而增长(我只需要粗略的估计)。
3. 存储过程、函数、视图、触发器都在这个“开销”空间中吗?有没有办法计算这些?
4. 还有其他方法可以获取整个数据库的大小吗?我真的只是想要一个简单的方法来获得真正的大小。
【问题讨论】:
标签: sql-server