SQL Server 磁盤空間如何擴容?

在我們使用 SQL Server 數據庫時經常會遇到 “存儲空間不足”的問題。那麼我們來分析一下此問題,並提出對應的解決方案。

SQL Server 磁盤空間如何擴容?

關於此問題需要首先查看SQL Server 的版本然後對應的來解決。因為針對不同的 SQL Server 版本它的最大內存,數據庫大小,CPU核心數使用都是有限制的,我們以 SQL Server 2017 為例:

SQL Server 磁盤空間如何擴容?

SQL Server 2017 版本對比

從上圖中可以看出不同的版本都是有區別的,如果你使用的是 免費的SQL Server Express 版本,那麼它的最大數據庫大小被限制為:10GB,也就是說當你的數據庫存儲的數據高於10GB的時候就不會再向數據庫中存儲數據了。如果是這種情況那麼需要將數據庫文件進行分離,備份,然後才可以繼續存儲。關於如何分離,備份操作我們再下面會講解。

如果不是使用的SQL Server Express 版本那麼需要檢查的內容較多,我們一步一步進行分析。

第1, 檢查數據庫文件所在磁盤是否存滿;

首先登陸SSMS(SQL Server Management Studio),選擇數據庫後,選擇"屬性",然後選擇"Files",可以在"Path"中看到當前數據庫文件的存儲路徑。那麼我們就要檢查 C 盤是否已經被存滿,當然也有可能是其他盤。一般我們在建立數據庫時,需要修改此處的存儲路徑。

SQL Server 磁盤空間如何擴容?

數據庫文件路徑

查看磁盤空間剩餘大小可以使用 T-SQL 命令:

Exec master.dbo.xp_fixeddrives;

結果如下:

SQL Server 磁盤空間如何擴容?

磁盤剩餘空間查詢

第2, 檢查數據庫文件是否被限制大小;

按照第一步打開"Files"屬性,在"Autogrowth/Maxsize"中檢查下圖中文件是否有"Limited to"的文字,如果有,那麼有可能是對應的文件已經達到此大小,無法寫入數據了。可以在第一步中查看對應的文件是否已經達到限制的大小。

SQL Server 磁盤空間如何擴容?

數據庫文件是否限制大小

第3, 未限制情況下,對對應的數據庫文件進行空間擴展;

重點:進行此操作前對數據庫進行完整備份。

完整備份步驟:

1) 選擇需要備份的數據庫,點擊"Tasks(任務)---Back Up(備份)"

SQL Server 磁盤空間如何擴容?

數據庫備份

2) 選擇備份類型為"完整",選擇備份路徑到其他盤,文件名為:文件名.bak,參考下圖

SQL Server 磁盤空間如何擴容?

完整模式及路徑選擇

SQL Server 磁盤空間如何擴容?

文件名設置

完成備份後就是進行空間擴展。此處空間擴展分為多種情況。

如果是磁盤空間不足,且不想增加硬盤,如果以前的數據不需要查看,可以將當前的數據庫刪除,或者表刪除,然後新建數據庫,萬事大吉,非常清爽。不過這種情況是不可能的。請看下一步。

如果磁盤空間不足,可以增加磁盤,那麼有兩種方法。

· 需要中斷當前業務,對數據庫進行分離/附加操作,具體步驟:

1. 對數據庫進行分離;分離數據庫就是將某個數據庫從SQL Server數據庫列表中刪除,使其不再被SQL Server管理和使用,但該數據庫的文件(.MDF)和對應的日誌文件(.LDF)完好無損。分離成功後,就可以把該數據庫文件(.MDF)和對應的日誌文件(.LDF)拷貝到其它磁盤中保存。

1.1 分離之前,設置數據庫為單個用戶,並記住該數據庫所在路徑。

SQL Server 磁盤空間如何擴容?

單用戶設置

1.2 數據庫分離,選擇需要分離數據庫,然後選擇"Tasks(任務)---Detach(分離)",然後分離數據庫頁面選中"更新統計信息"複選框。若"消息"列中沒有顯示存在活動連接,則"狀態"列顯示為"就緒";否則顯示"未就緒",此時必須勾選"刪除連接"列的複選框。分離後資源管理器中數據庫消失。

SQL Server 磁盤空間如何擴容?

數據庫分離

SQL Server 磁盤空間如何擴容?

狀態設置

1.2 數據庫分離後拷貝到其他大容量的磁盤,然後進行數據庫的附加,在數據庫上右鍵,選擇"Attach(附加)",在彈出的畫面點擊"添加",找到存儲剛才分離後的文件的路徑,選擇其中的後綴名稱是" .mdf "文件,附加後檢查文件的路徑是否正確。可以修改。

SQL Server 磁盤空間如何擴容?

數據庫附加

SQL Server 磁盤空間如何擴容?

選擇MDF文件

SQL Server 磁盤空間如何擴容?

附加

以上步驟就可以實現將現有的數據庫文件轉移到大容量的磁盤的方法。

而對於無需中斷當前業務,對數據庫進行擴展操作,以及在數據庫被限制大小的情況如何對數據庫進行擴展請關注我的專欄,我們會有更加詳細的講解和操作方法。


分享到:


相關文章: