[SQL SERVER][Memo]別使用SSMS(UI)修改Big Table

[SQL SERVER][Memo]別使用SSMS(UI)修改Big Table

我舉個簡單例子來說明為什麼使用SSMS(UI)修改Big Table常常會TimeOut

假設我要修改某欄位為not null

查看變更令碼內容

image

相關警告訊息

image

前面會先drop相關Constraint後在建立中繼Table

image 

並加入原有Constraint後,執行Insert into中繼Table(資料轉換)

image

image 

最後刪除原有Table並將中繼Table rename後在建立PK。

image

挖勒!改個not null需要這麼多步驟,怪不得會TimeOut。

 

這時查看一下ALTER TABLE (Transact-SQL)可以發現其實只要一個步驟就搞定這需求。

alter table [dbo.autho] alter column [TYPE] nvarchar(12) not null;

image

這也是為什麼再修改Big Table常常會TimeOut原因(SSMS常繞遠路阿XD)。

 

SSMS Timeout問題,也可以修改查詢等候時間(調到最高,看個人喜好)。

image 查詢等候=-1

工具->選項

image 執行逾時=32000(最高)

 

如果你像我一樣常常忘記相關TSQL語法

這裡提供我自己的做法,如何去取得相關TSQL語法

 

假設我要修改CarrierTrackingNumber Defalut Value

1.開啟Table設計模式,預設值或繫結屬性輸入相關DF後,按滑鼠右鍵選擇"產生變更指令碼"

image

2.複製相關TSQL語法並關閉視窗(不要儲存變更喔)

image

這樣我就得到修改CarrierTrackingNumber Defalut Value的TSQL語法了。

 

參考

ALTER TABLE (Transact-SQL)