The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

重建資料表時應注意 Management Studio 選項設定是否完整

上星期我們有台 SQL Server 出了一些狀況,有個資料庫其中一個資料表發生了一些問題,主要是發生分頁錯誤的情況,由於資料類型是記錄檔,不是一定需要存在線上,但筆數有三百多萬筆非常佔空間,當確認資料匯出後想要將目前的資料全數刪除,決定先 DROP TABLE 再 CREATE TABLE 比較快,但使用 Management Studio 在做重建表格時必須特別注意選項設定是否正確!

如果你使用 Management Studio 工具來編寫建立表格的指令碼,可以參考下圖的操作:

不過一不小心你可能就會遺漏該表格相關連的物件,像是索引、觸發程序之類的,在預設的情況下這兩類的物件是不會被建立的,所以當你重建表格之後,就很有可能也將這些物件給遺漏了!

為了解決此問題,建議各位先將預設的 [工具] > [選項] 修改一下,讓��過 Management Studio 產生指令碼時能夠產生較完整的 DDL ( Data Definition Language ) 出來,如下圖示:

[工具] > [選項]

在左側先點開 [SQL Server 物件總管] > [指令碼],然後將以下兩個選項設定修改為 True 即可:

  1. 編寫索引的指令碼
  2. 編寫觸發程序的指令碼

除此之外,還有另一個 [產生相依物件的指令碼] 設定或許有些時候用的到,當你需要產生一段指令碼能夠除了刪除要刪除的這張主表格外,還要連帶一併刪除其他與此表格相關連的物件,就可以用將此選項設定為 True,但一般來說比較少有機會用到此選項,使用時要小心。

image

如果你將 [產生相依物件的指令碼] 選項設定為 True,而你還試圖使用 Management Studio 來產生 [DROP 並 CREATE 至] 功能,就會出現以下錯誤訊息:

錯誤訊息是:不支援相依物件的 DROP 和 CREATE。在 [工具/選項/SQL Server 物件總管/指令碼] 中,變更 [產生相依物件的指令碼] 的設定,或是使用產生指令碼精靈。 

不支援相依物件的 DROP 和 CREATE。在 [工具/選項/SQL Server 物件總管/指令碼] 中,變更 [產生相依物件的指令碼] 的設定,或是使用產生指令碼精靈。

以上就是一個 SQL 管理實務的小提醒。

相關連結