2014-10-07 68 views
0

我们的数据库服务器有2个磁盘;磁盘C根据文件资源管理器有40GB可用空间,并且磁盘D已满。数据库由存储在两个驱动器中的分区组成。当我运行以下SQL命令来见左图数据库硬盘空间vs数据库空间

select name 
, filename 
, convert(decimal(12,2),round(a.size/128.000,2)) as FileSizeMB 
, convert(decimal(12,2),round(fileproperty(a.name,'SpaceUsed')/128.000,2)) as SpaceUsedMB 
, convert(decimal(12,2),round((a.size-fileproperty(a.name,'SpaceUsed'))/128.000,2)) as FreeSpaceMB 
from dbo.sysfiles a 

我看到留在MDF文件空间是3GB和每天减少的可用空间。当没有剩余空间时,数据库会简单地粉碎?或者它会自动增长并获得C驱动器上可用的一些空间?我怎样才能将它设置为自动请求更多的硬盘空间?

回答

0

通常,数据库不包含分区;它们由文件组组成,而文件组又可能有一个或多个文件。不知道任何细节,我只能描述一个普遍的行为。

如果你有文件组中几个文件正在积极编写的,这些文件分布在两个驱动器,SQL Server将增长(和执行写入)与可用空间的文件在磁盘上。任何其他情况都会导致数据库大部分变为只读(它可能仍然允许对现有数据进行一些修改 - 取决于每个特定页面上剩余的可用空间量)。然而,删除可能仍然有可能 - 但我自己从未测试过这种情况。

一个特殊情况是,当你的事务日志空间用完。发生这种情况时,SQL Server无法增长它,数据库将变为完全只读。

+0

当我说分区我的意思文件。我们的数据库结构不合理,没有遵循最佳实践,目前有16个文件属于不同的文件组,并且放置在2个驱动器中。我们的交易日志中剩下4Gb,所以这很好,我猜,那里没有危险。但是每天我都会看到主要的mdf文件正在用于写入操作,因此会减少可用空间。我的问题是,如果可以给这个mdf文件增加更多空间,因为硬盘似乎剩余40GB以上。 – 2014-10-08 07:04:54

+0

@KonstantinosPapakonstantinou,你可以添加另一个文件到最令人不安的fliegroup中,并将它放到这个驱动器上。 SQL Server应该几乎全部开始使用它,直到可用空闲空间变得更加均匀。 – 2014-10-08 08:27:27