积极答复者
还有别的更简单办法实现吗?

问题
-
我想统计一下一个实例下的所有mdf文件的总计容量,这个办法似乎比较麻烦。
我知道Windows命令行中有个for循环,能够逐一读取文件中的每一行作为变量;但我不知道在SQL SERVER中如何实现这点,可以使用array吗?
USE master GO IF EXISTS(SELECT name FROM sys.objects WHERE object_id=object_id(N'[dbo].[abc]') AND type IN (N'U')) DROP TABLE master.dbo.abc; GO SELECT name,size*8/1024 AS SIZE into abc FROM sys.database_files WHERE type_desc = 'RddddS' ; --创建一个表; GO DECLARE @sql VARCHAR(1000) SELECT @sql = 'use [?]; INSERT INTO master.dbo.abc SELECT name,size*8/1024 AS SIZE FROM sys.database_files WHERE type_desc = "ROWS" ;' EXEC sp_msforeachdb @sql --保存数据到表中 GO USE master SELECT SUM(size)/1024 AS '合计容量GB' FROM abc --统计总计容量,仅mdf部分 GO
答案
-
一句话:
select sum(size) from sys.master_files where type_desc='ROWS'在master库执行
不过这个大小和实际大小有点点差别,你可以比较物理文件实际大小。
family as water- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年6月11日 5:17
全部回复
-
一句话:
select sum(size) from sys.master_files where type_desc='ROWS'在master库执行
不过这个大小和实际大小有点点差别,你可以比较物理文件实际大小。
family as water- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年6月11日 5:17