文章目錄
SQL Server 無法修改資料表定義?!
沒辦法直接修改 SQL Server 資料表定義的問題,說常見也不是很常見,但也不算罕見,畢竟通常只需要設定一次,剛好我常常安裝新的測試用 SQL Server 所以遇過好幾次,這次隔比較久,就花了比較多時間才找到設定,特別筆記一下
錯誤訊息
訊息內容
Saving changes is not permitted.The changes you have made reuire the following tables to be dropped and re-created.You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.
錯誤截圖
不允許儲存變更,因為您所做的變更需要卸除及重新建立所列出的資料表
可能需要重新建立資料表的操作
- 將新 column 插入 table 的中間
- 移除 column
- 改動 column 的 Null 屬性
- 改變 column 的順序
- 改變 column 的資料類型
發生原因
異動資料表的中繼資料結構時,因為 table 可能需要重建。而重建 table 時,可能會造成中繼資料的異常和資料遺失,所以預設不允許會造成 table 重建的 table 異動
如何關閉
SSMS 主選單上的 Tools –> Options…
Designers –> 取消勾選 Prevent saving changes that require the table to be re-created
建議作法
直接從 table desginer 異動 table design 有造成資料遺失的風險,官方建議採用 SQL statement 來異動 table
範例:將 table column 改為允許 NULL
alter table MyTable alter column CreateDate datetime NULL
心得
我自己通常是在開發階段需要反覆地修改 table design,所以會刻意關關以便於開發階段的調整,加上開發環境的資料重要性較低也較少,如果出現問題影響有限,至於其他環境 是否要關閉請自行衡量實際情況(雖然我沒有真的發生資料遺失的情形,但官方都說有風險,請不要鐵齒~~)
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-26
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。