[SQL SERVER][Memo]別使用SSMS(UI)修改Big Table
我舉個簡單例子來說明為什麼使用SSMS(UI)修改Big Table常常會TimeOut
假設我要修改某欄位為not null
查看變更令碼內容
相關警告訊息
前面會先drop相關Constraint後在建立中繼Table
並加入原有Constraint後,執行Insert into中繼Table(資料轉換)
最後刪除原有Table並將中繼Table rename後在建立PK。
挖勒!改個not null需要這麼多步驟,怪不得會TimeOut。
這時查看一下ALTER TABLE (Transact-SQL)可以發現其實只要一個步驟就搞定這需求。
alter table [dbo.autho] alter column [TYPE] nvarchar(12) not null;
這也是為什麼再修改Big Table常常會TimeOut原因(SSMS常繞遠路阿XD)。
SSMS Timeout問題,也可以修改查詢等候時間(調到最高,看個人喜好)。
工具->選項
如果你像我一樣常常忘記相關TSQL語法
這裡提供我自己的做法,如何去取得相關TSQL語法
假設我要修改CarrierTrackingNumber Defalut Value
1.開啟Table設計模式,預設值或繫結屬性輸入相關DF後,按滑鼠右鍵選擇"產生變更指令碼"
2.複製相關TSQL語法並關閉視窗(不要儲存變更喔)
這樣我就得到修改CarrierTrackingNumber Defalut Value的TSQL語法了。
參考