参考源:http://sqlforums.windowsitpro.com/web/forum/messageview.aspx?catid=74&threadid=47900&enterthread=y

在使用数据库的时候,我们有时需要知道数据库占用磁盘空间的情况,以前数据库中每个表的磁盘空间使用情况,下面是获取这些信息的方法:

1 数据库的磁盘空间使用信息
获取SQL Server 2000数据库和表空间使用信息sp_spaceused

2 表的磁盘空间使用信息
获取SQL Server 2000数据库和表空间使用信息sp_spaceused '表的名称'

3 获取数据库所有表的磁盘空间使用信息
获取SQL Server 2000数据库和表空间使用信息CREATE PROC spaceused_simulator 
获取SQL Server 2000数据库和表空间使用信息
@database_name varchar(128
获取SQL Server 2000数据库和表空间使用信息
AS 
获取SQL Server 2000数据库和表空间使用信息
DECLARE @cmd varchar(1000), 
获取SQL Server 2000数据库和表空间使用信息
@bytes int 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET NOCOUNT ON 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SELECT @bytes = [low]/1024 FROM master..spt_values 
获取SQL Server 2000数据库和表空间使用信息
WHERE number = 1 
获取SQL Server 2000数据库和表空间使用信息
AND type = 'E' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
CREATE TABLE #tmp_spaceused ( 
获取SQL Server 2000数据库和表空间使用信息id 
int NULL
获取SQL Server 2000数据库和表空间使用信息tablename 
varchar(128NULL
获取SQL Server 2000数据库和表空间使用信息rows 
int NULL
获取SQL Server 2000数据库和表空间使用信息reserved 
int NULL
获取SQL Server 2000数据库和表空间使用信息data 
int NULL
获取SQL Server 2000数据库和表空间使用信息index_size 
int NULL
获取SQL Server 2000数据库和表空间使用信息unused 
int NULL
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'INSERT INTO #tmp_spaceused (id, tablename) 
获取SQL Server 2000数据库和表空间使用信息SELECT id, name FROM 
' + @database_name + '..sysobjects 
获取SQL Server 2000数据库和表空间使用信息WHERE xtype = 
''U'' 
获取SQL Server 2000数据库和表空间使用信息AND name <> 
''dtproperties''' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息SET rows = A.rows 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes A 
获取SQL Server 2000数据库和表空间使用信息WHERE #tmp_spaceused.id = A.id 
获取SQL Server 2000数据库和表空间使用信息AND A.indid IN (0, 1)
' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息SET reserved = A.SumReserved 
获取SQL Server 2000数据库和表空间使用信息FROM (SELECT id, SUM(reserved) AS SumReserved 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes 
获取SQL Server 2000数据库和表空间使用信息WHERE indid IN (0, 1, 255) 
获取SQL Server 2000数据库和表空间使用信息GROUP BY id) AS A 
获取SQL Server 2000数据库和表空间使用信息JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id
' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息SET data = C.data 
获取SQL Server 2000数据库和表空间使用信息FROM (SELECT A.id, A.SumDpages + ISNULL(B.SumUsed, 0) AS data 
获取SQL Server 2000数据库和表空间使用信息FROM (SELECT id, SUM(dpages) AS SumDpages 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes 
获取SQL Server 2000数据库和表空间使用信息WHERE indid IN (0, 1) 
获取SQL Server 2000数据库和表空间使用信息GROUP BY id) AS A 
获取SQL Server 2000数据库和表空间使用信息LEFT JOIN 
获取SQL Server 2000数据库和表空间使用信息(SELECT id, ISNULL(SUM(used), 0) AS SumUsed 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes 
获取SQL Server 2000数据库和表空间使用信息WHERE indid = 255 
获取SQL Server 2000数据库和表空间使用信息GROUP BY id) AS B 
获取SQL Server 2000数据库和表空间使用信息ON A.id = B.id) AS C 
获取SQL Server 2000数据库和表空间使用信息JOIN #tmp_spaceused ON C.id = #tmp_spaceused.id
' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息SET index_size = A.SumUsed - #tmp_spaceused.data 
获取SQL Server 2000数据库和表空间使用信息FROM (SELECT id, SUM(used) AS SumUsed 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes 
获取SQL Server 2000数据库和表空间使用信息WHERE indid IN (0, 1, 255) 
获取SQL Server 2000数据库和表空间使用信息GROUP BY id) AS A 
获取SQL Server 2000数据库和表空间使用信息JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id
' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SET @cmd = 
获取SQL Server 2000数据库和表空间使用信息
'UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息SET unused = #tmp_spaceused.reserved - A.SumUsed 
获取SQL Server 2000数据库和表空间使用信息FROM (SELECT id, SUM(used) AS SumUsed 
获取SQL Server 2000数据库和表空间使用信息FROM 
' + @database_name + '..sysindexes 
获取SQL Server 2000数据库和表空间使用信息WHERE indid IN (0, 1, 255) 
获取SQL Server 2000数据库和表空间使用信息GROUP BY id) AS A 
获取SQL Server 2000数据库和表空间使用信息JOIN #tmp_spaceused ON A.id = #tmp_spaceused.id
' 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
EXEC (@cmd
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
UPDATE #tmp_spaceused 
获取SQL Server 2000数据库和表空间使用信息
SET 
获取SQL Server 2000数据库和表空间使用信息reserved 
= reserved * @bytes
获取SQL Server 2000数据库和表空间使用信息data 
= data * @bytes
获取SQL Server 2000数据库和表空间使用信息index_size 
= index_size * @bytes
获取SQL Server 2000数据库和表空间使用信息unused 
= unused * @bytes 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
SELECT * FROM #tmp_spaceused ORDER BY tablename 
获取SQL Server 2000数据库和表空间使用信息
获取SQL Server 2000数据库和表空间使用信息
GO
获取SQL Server 2000数据库和表空间使用信息

相关文章:

  • 2021-08-30
  • 2021-05-21
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2021-04-06
  • 2022-12-23
  • 2021-07-23
猜你喜欢
  • 2021-11-24
  • 2021-06-30
  • 2021-11-21
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案