當您嘗試在 SQL Server 中儲存的資料表時,出現錯誤訊息: 「 儲存變更並不允許"

文章翻譯 文章翻譯
文章編號: 956176 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

當您用來修改資料表的資料定義語言 (DDL),然後嘗試儲存資料表 Microsoft SQL Server 2008年中時,您可能會收到下列訊息:
不允許儲存變更。您所做的變更需要卸除並重新建立下列的資料表。您已進行變更至資料表,且無法重新建立或啟用 [防止儲存變更] 選項時,需要重新建立資料表。

發生的原因

之所以發生這個問題時 防止儲存需要重新建立資料表的變更 選項已啟用,而且您對資料表的一或多個下列變更:
  • 您變更 允許空值 正在設定資料行。
  • 您重新排序資料表的資料行。
  • 您要變更的資料行資料型別。
  • 您新增新的資料行。
當您變更資料表,以便您變更中繼資料資料表的結構,然後在儲存資料表時,資料表必須是重新建立根據這些變更。在重新建立資料表時,這可能會造成中繼資料的遺失,並直接資料遺失。如果您啟用 防止儲存需要重新建立資料表的變更 在 [選項 設計工具 一節 SQL Server Management Studio (SSMS) 選項 視窗中,您會收到 「 徵狀 〉 一節所描述的錯誤訊息。

其他可行方案

若要解決這個問題,請使用異動性 SQL 陳述式來變更套用到資料表的中繼資料結構。如需詳細資訊,請參閱 SQL Server 線上叢書 》 中的下列主題:

http://msdn.microsoft.com/en-us/library/ms190273.aspx

比方說,若要變更MyDate資料行在資料表中的型別 datetime 的呼叫接受 NULL 值,您可以使用 [我的表格

alter table MyTable alter column MyDate7 datetime NULL

重要我們強烈建議您不要不暫時解決這個問題藉由關閉 [聽寫時防止儲存的變更,需要重新建立資料表] 選項。如需有關的風險,關閉這個選項的詳細資訊,請參閱 〈 其他資訊 〉 一節。

狀況說明

Microsoft 已確認這是"適用於 」 一節所列出的 Microsoft 產品中有錯誤。

其他相關資訊

若要變更 防止儲存需要重新建立資料表的變更 選項,請依照下列步驟執行:
  1. 開啟 SQL Server Management Studio (SSMS)。
  2. 在上 工具 功能表中,按一下 選項.
  3. 在瀏覽窗格中 選項 視窗中,按一下 設計工具.
  4. 選取或清除 防止儲存需要重新建立資料表的變更 核取方塊,然後再按一下 [確定].
附註如果您停用此選項,您會不警告您儲存資料表時,您所做的變更已變更資料表的中繼資料結構。如此一來,當您儲存資料表時,可能會遺失資料。

關閉 「 聽寫時防止儲存需要重新建立資料表的變更 」 選項的風險

雖然關閉這個選項可以幫助您避免重新建立資料表,它也會導致變更遺失。例如,假設您啟用 SQL Server 2008 來追蹤變更資料表中的 [追蹤修訂] 功能。當您執行的作業會導致重新建立資料表時,您會收到 「 徵狀 〉 一節所描述的錯誤訊息。不過,如果您關閉此選項時,現有的變更追蹤資訊將會刪除重新建立資料表時。因此,我們建議您不要不暫時解決這個問題所關閉的選項。

如果要判斷資料表是否已啟用 [追蹤修訂] 功能,請依照下列步驟執行:
  1. 在 SQL Server Management Studio,找出在物件總管中的資料表。
  2. 資料表中,按一下滑鼠右鍵,再按 [內容
  3. 在 [表格內容] 對話方塊中,按一下 [追蹤修訂]。
追蹤修訂的項目值為True,如果是資料表中啟用此選項。如果此值為False,則會停用此選項。

啟用變更追蹤功能時,使用異動性 SQL 陳述式來變更資料表的中繼資料結構。

如果要重現問題的步驟

  1. 在 SQL Server Management Studio,建立包含 「 資料表設計工具 」 工具中的主索引鍵的資料表。
  2. 包含此資料表,資料庫上按一下滑鼠右鍵,然後按一下 屬性.
  3. 資料庫屬性 對話方塊中,按一下 變更追蹤.
  4. 設定的值 變更追蹤 項目 本屬性為 true然後按一下 [確定].
  5. 資料表中,按一下滑鼠右鍵,然後按一下 屬性.
  6. 資料表屬性 對話方塊中,按一下 變更追蹤.
  7. 設定的值 變更追蹤 項目 本屬性為 true然後按一下 [確定].
  8. 在上 工具 功能表中,按一下 選項.
  9. 選項 對話方塊中,按一下 設計工具.
  10. 按一下以選取 防止儲存需要重新建立資料表的變更 核取方塊,然後再按一下 [確定]。
  11. 在 [資料表設計工具] 工具中,變更 允許空值 在 [現有的資料行上的設定值。
  12. 請試著將變更儲存至資料表。

屬性

文章編號: 956176 - 上次校閱: 2012年6月6日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
關鍵字:?
kbsqlsetup sql2008relnotetools sql2008relnote kbprb kbmt KB956176 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:956176
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com