确定SQL Server数据库和数据库文件的可用空间

问题:数据库管理员的一个职能就是留意数据库和数据库文件内的空闲空间。自动增长功能作为最后一种手段是很好的,但是主动管理数据库文件是一种更好的方法。如果在文件中有很多的空闲空间,那么这些信息也可以在需要时用来压缩文件。在这个技巧中,我们介绍几种方法找出一个数据库当前的空闲空间,这样你就可以更好地管理自己的数据库文件。

  专家解答

  这里有一些方法可以找出你数据库中有多少可用空间。(请注意,这个值会变大或变小,这是因为创建事务、做备份和压缩文件,因此并不是在每个例子中数字都是完全一样的。)

  首先,我们需要选择一个数据库,然后获取这些文件的一些信息。

      USE Test5

  GO

  sp_helpdb Test5

  GO

  如果我们运行上面的代码,我们会得到下面的输出结果。在这里,我们可以看到数据库的总大小和数据库文件当前的大小,但是这些信息没有告诉我们可用空间有多大。

  bb

  图一

  接着,我们需要做的是获取组成数据库的每个文件的信息。在上面的结果集中,我们可以看到,我们有两个名称“Test5”和“Test5_log”,这两个名称将在后面的步骤中用到。这里有组成Test5数据库的两个文件的逻辑名称。如果这个数据库的文件多于两个,那么它们都会列出来。

  1 - sp_spaceused

  其中一个选项是sp_spaceused。如果我们运行下面的命令,那么我们可以看到数据库中有多少可用空间,但是这些信息展示了总的空闲空间包括事务日志空闲空间,这可能会让人误导。

     USE Test5

  GO

  sp_spaceused

   bb

  图二

  2 - DBCC SQLPERF

  另一个选项是使用DBCC SQLPERF(logspace)命令。这个命令会为你提供每个数据库中日志文件的输出结果。这个命令也会为你提供累计信息,因此如果你有多个日志文件,那么它会提供给你每个数据库所有日志文件的总空闲空间。

      USE master

  GO

  DBCC SQLPERF(logspace)

   bb

  图三

3 - DBCC SRHINKFILE

  另一个选项是使用3 - DBCC SRHINKFILE。这个命令存在的问题是,如果你运行它,那么它仍将压缩文件。没有什么方法可以运行这个命令而只得到信息的邮件。

      USE Test5

  GO

  DBCC SHRINKFILE (test5)

  DBCC SHRINKFILE (test5_log)

  这两个命令的结果集显示如下。输出结果在8K的页面中,因此计算MB的一种简单方法是拿这个值除以128。这样你就可以得到FileId =1的CurrentSize为393MB。

  bb

  图四

  接下来是输出结果的一些描述。比较有用的一个字段是MinimumSize。它将告诉你文件创建时的原始大小。它也会告诉你,如果你想使用这些信息来缩小其中一个文件,那么你可以使用的最小值。

  正如我在前面提到的,这种方法的缺点是,如果在文件中有可用空间,那么它仍然会缩小该文件,即使我们在文件大小有一个更高值的情况下运行这个命令,它仍然会缩小。在这个例子中,日志文件是682MB,但是我们指定了这个值为10000MB.

  DBCC SHRINKFILE (test5_log, 10000)

  4 – FILEPROPERTY

  另一个选项是使用FILEPROPERTY函数的SpaceUsed属性,它将告诉我们使用了多少空间,然后我们可以基于当前的大小来计算可用空间和什么是正在使用的。

     USE Test5

  GO

  SELECT DB_NAME() AS DbName,

  name AS FileName,

  size/128.0 AS CurrentSizeMB,

  size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB

  FROM sys.database_files;

  在这里,我们可以从上面Test5数据库中看到输出结果。

  bb

  图五

  概述

  正如你看到的,这里没有选项可以提供给你想要的所有信息。FILEPROPERTY选项可能是最佳的,但是DBCC SHRINKFILE中的MinimumSize值可能也是不错的选择。现在,你有一些方法得到这些信息,因此请使用最适合你个人环境和你当前处理问题的选项。

fj.png0af77h7w0p1z.jpg

fj.png1gy47fc3b63h.jpg

fj.png2xwq54va9e7b.jpg

fj.png60768rl4f199.jpg

fj.pngv8n619c22ej5.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-616836/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-616836/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值