我们的数据库服务器有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驱动器上可用的空间吗?如何将其设置为自动请求更多硬盘空间?
答案 0 :(得分:0)
通常,数据库不包含分区;它们由文件组组成,而文件组又可能有一个或多个文件。我不知道任何细节,只能描述一般行为。
如果文件组中有多个文件正在被主动写入,并且这些文件分布在两个驱动器上,则SQL Server将在具有可用空间的磁盘上增长(并执行写入)文件。任何其他情况都会导致数据库变为大多数只读(它可能仍然允许对现有数据进行一些修改 - 取决于每个特定页面上剩余的可用空间量)。但是,删除可能仍然是可能的 - 尽管我自己从未测试过这种情况。
特殊情况是当您的事务日志空间不足时。当发生这种情况并且SQL Server无法增长时,数据库将变为完全只读。