2021-12-18
當在SQL 2008中建好一張表后,如果要在 中修改表結構,十有八九會彈出“阻止保存要求重新創建表的更改”,惱人得很。根據我的使用,除了改列名或者刪除列才有可能不彈出該提示,其它很多情況都會跳出這個該死的提示,樣子如圖:
解決的方法其實也很簡單:在 里找菜單欄上的“工具”然后點擊下面的選項,在出現的下面的這個界面中展開“設計器”項,選中“表設計器和數據庫設計器”,然后去掉“ 阻止保存要求重新創建表的更改”前面的勾就行了,如圖:
究其原因,應該是某些DDL會改變存儲的物理結構,因此需要重新構建該表。SQL 在改變物理結構都變動的表結構時會先將數據移到暫存表中,然后Drop掉原先的表,再建立一張新的符合要求的表,之后又把剛才暫存表中的數據復制回來,最后再刪除暫存表。由此可見,這個過程極有可能會十分耗時sql阻止保存要求重新創建表的更改,這將會導致該表長時間不能被訪問,的守候將會超時出錯。為了避免出現這種錯誤,微軟的做法就是在默認的情況下不允許表的物理結構發生變動。
看來應該是微軟一時半載也想不出如何解決這個問題,于是就用“砍腳趾避沙蟲”的愚蠢方法將就著解決這個問題。其實微軟為什么不能人性化點,如果變動的表是空表或者是少于100條記錄的表就不再提示那不好些么?我想,會改動表結構的情況一般是在開發的時候,真正生產了就算改動也會編程用ALERT TABLE語句sql阻止保存要求重新創建表的更改,所以人性化點不會有太大的壞處。
分類:
技術點:
相關文章: