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