2014-10-07 71 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