首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server ALTER DATABASE 進階應用:檔案、檔案群組與屬性變更實務

     編輯:關於SqlServer

資料庫上線後,業務增長常要求調整儲存架構:新增資料檔分散 I/O、變更檔案成長參數、調整檔案群組屬性等。ALTER DATABASE 是執行這些結構變更的核心指令,僅限 sysadmin、dbcreator 或具 CREATE DATABASE 權限的 db_owner 執行。

核心語法架構

ALTER DATABASE 語法圖

常用子句與實務場景

子句功能典型應用場景
ADD FILE新增資料檔至指定檔案群組將熱點資料表移至獨立磁碟、擴充儲存容量
ADD LOG FILE新增交易記錄檔記錄檔磁碟空間不足、分散記錄 I/O
REMOVE FILE移除空檔案(需先清空資料)整併檔案、下架舊磁碟
ADD FILEGROUP建立新檔案群組實現資料分層(熱/溫/冷資料分離)
MODIFY FILE調整檔案大小、最大值、成長增量預先配置空間避免頻繁自動成長、限制最大容量
MODIFY FILEGROUP設定檔案群組唯讀/讀寫歸檔歷史資料設為 READONLY 減少備份量

關鍵限制與注意事項

  • 檔案移除前提:檔案必須為空(無資料頁),否則須先用 DBCC SHRINKFILE (file_name, EMPTYFILE) 遷移資料。
  • 主檔案群組不可設唯讀:PRIMARY 永遠維持讀寫狀態。
  • MODIFY FILE 單一屬性原則:每次僅能修改一個檔案的一個屬性;新 SIZE 必須大於目前實際大小。
  • FILENAME 變更:僅對 tempdb 生效,且需重啟 SQL Server 服務才生效。
  • 唯讀檔案群組權限:需對資料庫擁有獨佔存取權(單一使用者模式)才能切換。

實務範例:將歷史訂單歸檔至唯讀檔案群組

-- 1. 新增檔案群組與資料檔
ALTER DATABASE SalesDB ADD FILEGROUP ArchiveFG;
ALTER DATABASE SalesDB ADD FILE (
    NAME = ArchiveData,
    FILENAME = 'F:\SQLData\SalesDB_Archive.ndf',
    SIZE = 5GB,
    MAXSIZE = 50GB,
    FILEGROWTH = 1GB
) TO FILEGROUP ArchiveFG;

-- 2. 將歷史資料表移至新檔案群組(需重建叢集索引)
CREATE CLUSTERED INDEX CX_Orders_Archive ON Orders (OrderDate)
WITH (DROP_EXISTING = ON) ON ArchiveFG;

-- 3. 設定檔案群組唯讀
ALTER DATABASE SalesDB MODIFY FILEGROUP ArchiveFG READONLY;

善用 ALTER DATABASE 彈性調整儲存拓撲,配合檔案群組分層策略,能大幅降低儲存成本並提升維護彈性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved