【问题标题】:Hard drive space vs Database space硬盘空间与数据库空间
【发布时间】:2014-10-07 13:55:27
【问题描述】:

我们的数据库服务器有 2 个磁盘;根据文件资源管理器,C 盘有 40GB 可用空间,D 盘已满。数据库由存储在两个驱动器中的分区组成。当我运行以下 SQL 命令查看数据库上剩余的可用空间时

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 盘上的一些可用空间?如何设置为自动请求更多硬盘空间?

【问题讨论】:

    标签: sql-server windows-server-2008 space drive


    【解决方案1】:

    通常,数据库不是由分区组成的;它们由文件组组成,而这些文件组又可能有一个或多个文件。在不知道任何细节的情况下,我只能描述一般行为。

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

    一种特殊情况是您的事务日志空间不足。当发生这种情况并且 SQL Server 无法扩展它时,数据库将变为完全只读的。

    【讨论】:

    • 当我说分区时,我指的是文件。我们的数据库结构不完善,也没有遵循最佳实践,目前有 16 个文件,每个文件属于不同的文件组并放置在 2 个驱动器中。我们的事务日志上还剩下 4Gb,所以我想这很好,没有危险。但是每天我都看到主 mdf 文件被用于写入操作,因此可用空间减少。我的问题是是否可以为这个 mdf 文件添加更多空间,因为硬盘驱动器似乎还剩 40GB 以上。
    • @KonstantinosPapakonstantinou,您可以将另一个文件添加到最麻烦的飞行组中并将其放置到此驱动器上。 SQL Server 应该开始几乎独占使用它,直到可用空间变得更加均匀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2015-10-25
    • 2013-01-26
    • 2015-08-11
    • 2013-03-23
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多