在 SSMS 中修改資料表結構 (如新增/刪除/變更欄位、調整順序、變更資料型別) 後點擊「儲存」,跳出錯誤對話框:
無法儲存變更。您所做的變更需要卸除並重建下列資料表。您已變更無法重建的資料表,或已啟用選項「阻止儲存要求重新建立資料表的變更」。
SSMS 2008 預設啟用安全選項 「阻止儲存要求重新建立資料表的變更」 (Prevent saving changes that require table re-creation)。當結構變更需要重建資料表 (如插入欄位、變更資料型別、變更 NULL/NOT NULL、調整欄位順序) 時,SSMS 會攔截並拋出此錯誤,防止誤操作導致資料遺失或長時間鎖定。

生產環境建議直接使用 T-SQL 變更結構,避免 SSMS 重建表的鎖定風險與不可控行為:
-- 新增欄位
ALTER TABLE dbo.MyTable ADD NewCol INT NULL DEFAULT 0;
-- 修改資料型別 (需確保資料相容)
ALTER TABLE dbo.MyTable ALTER COLUMN ExistingCol VARCHAR(100) NOT NULL;
-- 刪除欄位
ALTER TABLE dbo.MyTable DROP COLUMN OldCol;
-- 調整欄位順序:SSMS 內部建立新表→複製資料→刪舊表→改名,T-SQL 無直接語法,需手動重建表
| 風險 | 說明 |
|---|---|
| 資料遺失 | 重建表過程中若中斷 (斷電、殺掉 SPID)、或磁碟空間不足,可能導致資料不完整。 |
| 長時間鎖定 | 大表重建需 SCH-M 鎖定,封鎖所有存取,持續時間與資料量成正比。 |
| 索引/統計資料重建 | 重建表會導致所有索引、統計資料失效需重建,影響後續查詢效能。 |
| 外部鍵/觸發器/檢視相依 | 重建表可能導致相依物件失效,需手動重建/啟用。 |
ALTER TABLE ... SWITCH 分割表線上變更、或線上索引重建技巧)ADD NULLABLE COLUMN → 批次回填 → ALTER COLUMN NOT NULL (企業版線上)。SWITCH 瞬間切換 (企業版)。「無法儲存變更」是 SSMS 保護機制,關閉選項即可繞過,但生產環境應改用 T-SQL 腳本管控結構變更。理解重建表的風險 (鎖定、記錄檔、索引、相依物件),採用線上變更模式或維護視窗部署,才是資料庫架構演進的正確姿勢。