您目前已離線,請等候您的網際網路重新連線

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

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:956176
徵狀
當您使用資料定義語言 (DDL) 來修改表格,接著嘗試在 Microsoft SQL Server 2008 中儲存資料表時,可能會收到下列訊息︰
不允許儲存變更。您所做的變更需要卸除並重新建立下列的資料表。您已進行至資料表,且無法重新建立或啟用 [防止儲存變更] 選項的變更需要重新建立資料表。
發生的原因
啟用 [防止儲存需要重新建立資料表的變更] 選項時,和您對資料表的一或多個下列的變更時,就會發生這個問題︰
  • 您變更資料行的 [允許 Null ] 設定。
  • 您重新排序資料表的資料行。
  • 您變更資料行資料型別。
  • 您新增新的資料行。
當您變更資料表,讓您變更資料表的中繼資料結構,然後在您儲存資料表時,資料表必須重新建立根據這些變更。重新建立資料表時,這可能會造成在中繼資料的損失和直接資料遺失。如果您啟用SQL Server Management Studio (SSMS) 選項視窗的 [設計工具] 區段中的 [防止儲存需要重新建立資料表的變更] 選項時,您會收到 < 徵狀 > 一節所述的錯誤訊息。
其他可行方案
若要解決這個問題,請使用考慮改用 SQL 陳述式,變更套用到資料表的中繼資料結構。如需詳細資訊,請參閱 SQL Server 線上叢書 》 中的下列主題︰

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

例如,若要變更在資料表中的型別 datetime 的MyDate資料行名接受 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. 在 [資料表設計工具] 工具中,變更現有的資料行上的 [允許 Null ] 設定。
  12. 嘗試將變更儲存至資料表。
sqlsvr12 sqlsvr2008 < SQL Server 2008年工具"SQL2008RelNoteTools"變更追蹤功能 >

內容

文章識別碼:956176 - 最後檢閱時間:07/04/2016 01:14:00 - 修訂: 3.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, Microsoft SQL Server 2012 Enterprise Core

  • kbtshoot kbsqlsetup sql2008relnotetools sql2008relnote kbprb kbmt KB956176 KbMtzh
意見反應