用脚本查看Server上每个库的大小

 --转自SQLSERVERCENTRUAL.com

SET NOCOUNT ON

 

DECLARE @Result Table (

[DBName] Varchar(100),

[size] int,

Log_Size float,

Log_Space float

)

DECLARE @DBName Varchar(100)

DECLARE @SIZE int

 

declare @RECCNT varchar(500)

declare @DeviceName varchar(500)

declare @CMD Nvarchar(500)

 

DECLARE tmpcursor CURSOR FOR select DBName from @Result

 

INSERT INTO @Result (DBName)

Select [name] from sysdatabases where [status] <> 536

 

IF EXISTS (Select [name] from sysobjects where xtype = 'u' and [name] = '#temp_table')

DROP TABLE #temp_table

 

create table #temp_table (

Database_Name varchar(100),

Log_Size float,

Log_Space float,

Status varchar(100)

)

insert into #temp_table

EXEC ('DBCC sqlperf(LOGSPACE) WITH NO_INFOMSGS')

 

declare @temp_table table (

Database_Name varchar(100),

Log_Size float,

Log_Space float,

Status varchar(100)

)

insert into @temp_table

select * from #temp_table

 

drop table #temp_table

 

OPEN tmpcursor

 

FETCH NEXT FROM tmpcursor INTO @DBName

WHILE (@@fetch_status <> -1)

BEGIN

IF (@@fetch_status <> -2)

BEGIN

SET @CMD = N'use ' +  quotename(@DBName) + N' SELECT @SIZE=(SUM([size]) * 8) from sysfiles'-- where [name] = @RECCNT'

exec sp_executesql @CMD,

N'@DeviceName varchar(100) out, @SIZE int out, @RECCNT varchar(100)',

@DBName,

@SIZE out,

@RECCNT

update @Result

set [size] = LTRIM(RTRIM(@SIZE))

where DBName = @DBName

update @Result set Log_Size = (Select Log_Size from @temp_table where Database_Name = @DBName) where DBName = @DBName

update @Result set Log_Space = (Select Log_Space from @temp_table where Database_Name = @DBName) where DBName = @DBName

END

FETCH NEXT FROM tmpcursor INTO @DBName

END

select a.DBName, CONVERT(varchar,CAST(a.[size] as money),1) as 'size', CONVERT(varchar,CAST(a.[Log_Size] as money),1)  as 'Log Space', CONVERT(varchar,CAST(a.[Log_Space] as money),1)  as 'Log Space Used (%)',b.filename as '文件位置',getdate() as '采集时间' from @Result a,master..sysdatabases b

where a.dbname=b.name

order by a.[size]

 

CLOSE tmpcursor

DEALLOCATE tmpcursor

 

SET NOCOUNT OFF

GO

 

Posted on 2005-11-30 15:14  Jason's WMI SQL Related Blog  阅读(281)  评论(0编辑  收藏  举报