﻿# 解決 Management Studio 管理工具無法變更表格結構的問題

這陣子經常在台中教書，每次換到不同班的學生就會遇到一次這個問題，因為從 SQL Server 2008 開始 Management Studio 管理工具預設會**防止儲存需要資料表重建的變更**(Prevent saving changes that require table re-creation)，意思是說，當你在修改資料庫表格結構時，當修正的幅度過大，例如移除欄位、變更欄位順序、變更欄位型態、變更欄位長度、變更是否允許 NULL等狀況，預設都會拒絕你變更資料表結構，導致按下儲存按鈕之後並沒有真正的變更資料結構(Schema)，這個預設設定對剛踏入 IT 屆小白兔來說實在有點挫折，不過這點安全控制也保護了資料庫遺失資料的風險。

首先，我們先來看一下 Management Studio 裡面設計資料表的畫面，假設我們如下圖的 Email 原本是不允許 Null 的欄位，但我們變更為允許 Null，這時按下 **Ctrl+S** 儲存本次變更：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9f3d03e8330fc4fa9cf7-image_1704.png)

在完全沒有修改過 Management Studio 選項設定的情況下，預設會出現以下儲存警告訊息，雖然寫的都是中文字，但我發現許多人其實從來不看錯誤訊息，看到任何對話方塊第一件事是先尋找【確認】、【取消】、【是】或【否】等按鈕，然後以為已經設定成功。這是非常不好的習慣，建議還是養成習慣查看錯誤訊息，如果看不懂，也要拿這些錯誤訊息上網查詢關鍵字，通常都會順利找到答案。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6d55f4315534a469366c-SNAGHTML9fff08a.png)

解決此問題的方法就是去變更 **SQL Server Management Studio** (**SSMS**) 的**選項**設定，步驟如下：

1\. 開啟「工具」→「選項」

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e13d140a3a6aa99d20c3-image_1705.png)

2\. 切換到「設計師」類別，將「**防止儲存需要資料表重建的變更**」的核取項目**取消勾選**即可，並按下**確定**按鈕即可。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5ff219bc39fb45f1aad4-SNAGHTMLa19f673.png)

設定完成後，我們直接回到表格設計畫面，按下 Ctrl + S 儲存資料表變更，能夠正確儲存的畫面如下，你至少需要看到【是】這個按鈕，並按下【是】按鈕，這才能真正儲存本次資料表結構變更。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/24d5b8d5a1203165df13-SNAGHTMLa1f5b6d.png)

**相關連結**

-   [選項 (設計師/資料表和資料庫設計工具頁面)](http://msdn.microsoft.com/zh-tw/library/ms188490.aspx)
-   [儲存 (不允許) 對話方塊](http://technet.microsoft.com/zh-tw/library/bb895146.aspx)
-   [善用 SQL Server Management Studio 選項設定DB作業環境](/post/2009/08/05/SQL-Server-Management-Studio-SSMS-Options-configuration.aspx)
