我們討論的這個警告信息顯示如下,當我試著更改AdventureWorks數據庫< HumanResources.Department>表[GroupName]字段的"Allow Nulls"設置時,下面的警告產生了。
不允許保存更改。你所作的這些更改要求刪除並且重新創建下面的表。你只能對表進行不能重新創建的更改或者啟用這個選項來防止保存要求對表重新創建的更改。
圖一
我具有在這張表上執行DDL語句的權限,而在這張表上也沒有阻止它重新創建的鎖。因此唯一的原因應該是"or enabled the option Prevent Saving changes that require the table to be re-created"的信息部分。
因此讓我們看看這個選項,接著看看一些要求重新創建表並且與通過SSMS進行更改有關的潛在威脅類型。
從菜單中選擇“工具”然後選擇“選項…”
圖二
點擊頁面左邊的"Designers"
上面的標記選項在檢查時防止在SSIS中要求重新創建表的任何更改。默認情況下,這個選項是檢查的。如果它允許你通過要求對表重新建立的SSMS來做任何改變,那麼你可以不檢查它。一旦這個選項設為未檢查的,那麼你講不能得到一個要求表重新創建的更改以及執行你的更改的警告信息。
要求重新創建表的一些情況是:
修改一個字段的數據類型
在一張表的最後一個字段之前在任何一個地方插入一個字段
修改一個計算列的計算列表達式
修改一個計算列的persistence屬性
修改一個字段的identity屬性
修改一個字段的NULL屬性
對表中的字段重新排序
重要的是要了解通過SSMS進行更該會帶來一些後果。微軟強烈建議不要關閉這個選項。你可能會經歷與該表相關的信息缺失甚至在某些情況下會缺失數據。作為信息相關缺失的例子,微軟支持提出如果更改跟蹤功能可用的話,那麼可以使用與表相關的更改跟蹤。如果這張表也包含大量的數據,那麼重新創建表可能會導致超出操作時間從而無法完成該過程。
下一步
同時考慮到微軟的建議,您最好啟用這個選項。但是在某些情況下,禁用這個選項會使你更好地利用SSMS設計器進行工作。這些情況是:
你在測試環境中工作。
要求進行一些不能通過T-SQL的操作。例如,在其它字段的中間插入一個新的字段。在這樣的案例中,正確分析這些表的任何問題/損失作為重新創建表的結果。
你確定沒有相關的數據,例如與你任何一張表有關的更改跟蹤數據。
你確定硬件具有足夠的空間來避免任何超時的操作。