方法一:使用 SSMS 圖形介面(適用於 SQL Server 2005 及以上)
- 在「物件總管」展開資料庫 → 資料表。
- 右鍵目標資料表 → 選擇 設計(Design)。
- 在設計格線中直接修改 資料行名稱 欄位。
- 按 Ctrl+S 儲存,或關閉視窗時提示儲存。
提示:若 SSMS 阻止儲存(提示「防止儲存需要重建資料表的變更」),請至 工具 → 選項 → 設計工具 → 資料表與資料庫設計工具,取消勾選 防止儲存需要重建資料表的變更。
方法二:使用 T-SQL 指令 sp_rename
-- 語法
EXEC sp_rename 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
-- 範例:將 dbo.Customer 的 Phone 欄位改為 MobilePhone
EXEC sp_rename 'dbo.Customer.Phone', 'MobilePhone', 'COLUMN';
執行後必須同步更新的物件
- 預存程序、函數、視圖、觸發器中引用該欄位的程式碼。
- 應用程式端(ORM 映射、SQL 字串、報表查詢)。
- 索引、統計資料、檢查約束、預設約束若包含欄位名稱,通常會自動同步,但建議檢查
sys.sql_expression_dependencies。
常見錯誤與解決
| 錯誤訊息 | 原因 | 解決 |
| No item by the name of '...' could be found in the current database... | 拼寫錯誤、Schema 名稱遺漏、欄位不存在 | 確認三段式名稱 Schema.Table.Column |
| The object '...' is dependent on column '...'. | 有預設值、檢查約束、計算欄位相依 | 先卸除相依物件,改名後重建 |
| Cannot rename '...' because it participates in a full-text index. | 欄位屬於全文檢索索引 | 先移除全文索引,改名後重建 |
最佳實務
- 採用 命名慣例(如 PascalCase、無縮寫),減少事後改名需求。
- 變更前先執行
sp_rename 於測試環境,並執行完整回歸測試。
- 使用版本控管管理資料庫結構變更腳本,確保可追溯、可回滾。