刪除資料庫FileGroup中的特定檔案 How to Remove SQL Data File

有時我們會在FileGroup中建立多個File檔案來分散磁碟的IO壓力

,但如果要移除FileGroup中的某一個檔案該怎麼做呢 ? 如果我們

採用SSMS的UI來做,可是會發生錯誤歐。

首先我們先建立一個資料庫[MyDB],然後該DB的Primary FileGroup有兩個實體檔案MyDB.mdf及MyDB1.ndf (如下圖)。

 

在下圖中可以看見該DB實體檔案MyDB.mdf及MyDB1.ndf。

 

我們在該資料庫中建立一張Table叫tb1並寫入大量資料。

 

如下圖所示tb1中有32768筆資料

 

我們可以透過下面語法查出tb1資料表在兩個Data File中各使用了多少空間。由下圖可看見MyDB.mdf用了400KB而MyDB1.ndf用了384KB。

 

假如我們想刪除Primary中MyDB1的這一個檔案,SSMS的UI介面如下圖所示。我們點選MyDB1然後按下刪除紐。

 

Oh Oh刪除檔案發生錯誤,由錯誤訊息看來是因為MyDB1還有資料,所以不允許刪除。

 

那我們該怎麼做呢? 首先我們先讓MyDB1.ndf停止成長,這樣一來就不會有資料再被寫入該檔案。接下來就用DBCC ShrinkFile來清空該Data File,注意要用EmptyFile這一個引數才能清空該檔案。完成ShrinkFile後,如下圖紅色圈選處可以看見UsedPages降為0了。

 

完成上述步驟後我們可以由下圖中看見tb1資料表已全部搬移到MyDB.mdf,占了776KB的空間。

 

ㄧ旦清空資料,我們就可以用Alter Database [MyDB] Remove File [MyDB1]指令刪掉檔案了。

參考資料來源 : DBCC SHRINKFILE

我是ROCK

rockchang@mails.fju.edu.tw