SQL Server数据库管理员通常硬盘空间奋斗,不断努力清理“表”,撰写许多查询,发现该表使用的硬盘空间。
本文介绍了如何查询系统表的空间使用情况,帮助数据库管理员识别正在使用最多的空间,以便存档旧数据和清除非必要的数据表。
1。登录到SQL Server实例的[SQL Server 2005或SQL Server的2008]。
2。浏览到你想获得空间信息数据库。
3。复制并粘贴到您的查询窗口的代码,并执行它。
4。检查的结果,并查看选定的数据库内的表空间
DECLARE
@TABLENM SYSNAME,
@CNT INT,
@TOPN INT
DECLARE TABLE_SPACE CURSOR FAST_FORWARD
FOR
SELECT
NAME
FROM SYSOBJECTS
WHERE XTYPE = 'U'
SELECT @CNT = 0, @TOPN = 0
CREATE TABLE #TMPUSAGE
(
NAME SYSNAME,
ROWS INT,
RESERVED VARCHAR(20),
DATA VARCHAR(20),
INDEX_SIZE VARCHAR(20),
UNUSED VARCHAR(20)
)
OPEN TABLE_SPACE
FETCH NEXT FROM TABLE_SPACE INTO @TABLENM
WHILE @@FETCH_STATUS = 0 AND @CNT <= @TOPN
BEGIN
INSERT INTO #TMPUSAGE
EXEC SP_SPACEUSED @TABLENM, 'TRUE'
IF
@TOPN <> 0
SELECT @CNT = @CNT +1
FETCH NEXT FROM TABLE_SPACE INTO @TABLENM
END
CLOSE TABLE_SPACE
DEALLOCATE TABLE_SPACE
SELECT
*
FROM
#TMPUSAGE
ORDER BY
CONVERT(INT,LEFT(RESERVED, LEN(RESERVED)- 3)) DESC
IF (SELECT OBJECT_ID('TEMPDB..#TMPUSAGE') ) IS NOT NULL
DROP TABLE #TMPUSAGE