設定
本頁包含設定頁的分類、預設值與刻意不做成設定的東西;變更 schema 先讀設定結構。
設定全部由 SSMS 22 的 Unified Settings 提供,沒有自訂設定檔。 按 Ctrl+,,或從 工具 → SqlAssist → 設定… 直接跳到 SqlAssist 分類。 改完立即生效,不必重開查詢視窗,並跟著 SSMS 的設定漫遊同步。
區塊選項見區塊配對,「通知與背景工作」一整頁見通知呈現與驗證, 其餘如下:
| 分類 | 設定 | 預設 |
|---|---|---|
| 一般 | 啟用 SqlAssist | true |
| 輸入時把 T-SQL 關鍵字轉成大寫 | true | |
| 自動補上成對的括號與引號 | true | |
| 啟動時檢查有沒有新版本 | true | |
| 播放介面動畫 | true | |
| 不受 Windows 動畫設定影響 | true | |
| 介面語言 | auto | |
| 建議清單 | 輸入時自動彈出建議清單 | true |
| 只使用 SqlAssist 的建議清單 | true | |
| 輸入幾個字元後才彈出清單 | 1 | |
| 在建議清單上方顯示分類篩選列 | true | |
| 列出程式碼片段(內建與自訂項目) | true | |
| 列出資料庫物件與欄位 | true | |
| 插入與展開 | 插入物件時補上結構描述名稱 | true |
| 插入物件時加上方括號 | false | |
| 按 Tab 把 SELECT * 展開成欄位清單 | true | |
| SELECT * 展開後的欄位排版 | oneLineWhenShort | |
| 在 ALTER 之後展開完整定義 | true | |
| 在 INSERT INTO 之後展開完整的欄位與 VALUES | true | |
| 在 MERGE INTO 之後展開完整的比對鍵與動作子句 | true | |
| 在 EXEC 之後展開完整的參數清單 | true | |
| EXEC 展開時包含選擇性參數 | true | |
| 選取自訂函式後補上括號 | true | |
| 括號裡填入引數預留值 | false | |
| 物件結構 | 滑鼠停留時顯示物件結構 | true |
| 滑鼠停留時顯示內建名稱的說明 | true | |
| 輸入函式引數時保持參數提示 | true | |
| 建議清單的結構預覽何時展開 | delay | |
| 自動展開前的停留毫秒數 | 220 | |
| 預覽視窗的字級 | 14 | |
| 產生指令碼的風格 | fidelity | |
| 指令碼包含資料行說明 | true | |
| 指令碼附上結構健檢的發現 | false | |
| 指令碼附上來源檔頭 | false | |
| SQL Memory | 啟用 SQL Memory | true |
| 擷取:執行過的查詢 | true | |
| 擷取:尚未執行的草稿 | true | |
| 擷取:未存檔內容(當機還原) | true | |
| 草稿:停止輸入幾秒後記下 | 5 | |
| 草稿:最密幾分鐘留一個版本 | 10 | |
| 保留:草稿天數 | 30 | |
| 保留:執行紀錄天數 | 180 | |
| 保留:無人使用的未存檔內容天數 | 7 | |
| 上限:執行紀錄筆數 | 10000 | |
| 上限:每個查詢視窗的自動版本數 | 50 | |
| 上限:每個收藏的編輯版本數 | 20 | |
| 儲存:容量上限 | mb512 | |
| 儲存:背景整理間隔 | 60 | |
| 診斷 | 寫入詳細診斷紀錄 | false |
moniker 一律是 sqlAssist.<分類>.<設定>,例如 sqlAssist.suggestions.triggerAfterCharacters。「通知與背景工作」那一頁是 sqlAssist.notifications.*,其中十二個種類開關不寫成 moniker 常數與屬性,改由 NotificationKindToggle.All 那張表驅動,新增一個種類只動註冊檔與那張表。 註冊檔在 src/SqlAssist.Ssms22/SqlAssist.registration.json, 它是設定清單的唯一權威來源;四處對應與守門測試見設定結構。
「啟用 SqlAssist」是總開關,關掉之後其他分類的功能全部停止運作,但設定頁上不會跟著變灰—— 原因見設定條件式。「插入與展開」那幾種另外 還需要「建議清單」開著——它們發生在提交建議時,同樣不會變灰。
「播放介面動畫」管全套件自製介面(通知、預覽淡入、SQL Memory 載入與停駐),各表面只問 SqlAssistChrome.MotionEnabled,不自行讀 Windows 偏好;高對比一律不播。
「介面語言」管 SqlAssist 自製的一切文字,auto 依 SSMS 介面語言挑(中文用繁中,其餘英文), 改了立即生效;設定頁與擴充功能清單不歸它管,固定跟隨 SSMS。各表面怎麼換見在地化。
「SQL Memory」整頁由「啟用 SQL Memory」管,關掉時連背景整理都不跑。它預設開啟——空的 SQL Memory 沒有人會去打開,功能的價值在它已經有資料;代價是不能安靜地開始記錄,所以 第一次真正擷取時會送一則通知說明資料在哪裡、怎麼關掉。標題用前綴分群(擷取/草稿/保留/ 上限/儲存),設定的 key 不隨標題改名——那是使用者資料的鍵。容量壓力下的保留分級不是設定, 取捨與接線見設定與擷取。
指令碼那四項同時管 F12 與預覽的指令碼分頁。其餘四十幾個開關不進設定頁, 理由見指令碼產生。
「插入物件時加上方括號」管的是資料庫物件的名稱。暫存資料表(#Loan)與資料表變數 (@rows)不在它的管轄內,開著也不會被包起來:[#Loan] 雖然合法卻不是任何人會手寫的 樣子,而 FROM [@rows] 會指到一張叫 @rows 的資料表。規則只有一份,在 Core/Parsing/SqlIdentifier.IsScriptScoped。寫在欄位前面的限定字反過來一定要包, 見插入文字。
五件刻意不是設定的東西
- 清單引擎:固定使用平台原生管線,舊的自製 WPF 清單已移除。
- 展開萬用字元的行寬:固定 120 個字元。排法本身是設定,這個分界點不是—— 感覺得到的是「一行還是好幾行」,落在 118 還是 124 沒有人會有意見。
- 清單最多顯示筆數:模糊比對後的截斷上限固定 300。效能保險而不是偏好—— 清單本來就要捲動,再多打一個字排名也整個重算。
- 預覽視窗的位置與寬高:固定擺在錨點上下、延伸到編輯器右側;要放在別處就釘住後拖過去, 要跨分頁留著就移到工具窗。 以前可以改成貼在清單側邊,但一百多欄的表在側邊只能橫向捲,退回上下時兩組尺寸還互相 污染,已移除。寬高是拖曳握把記下的視窗狀態而不是偏好,存 VS 的
WritableSettingsStore(SqlAssist\Preview):放進 Unified Settings 等於每放開一次滑鼠就提交一次設定變更並 廣播通知。記法與復原見預覽視窗。 - SQL Search 的比對方式:比對位置、大小寫與全字跨工作階段記得住,但走同一個狀態存放區 而不是設定頁——它們是工具列上隨手切的狀態,每按一下提交一次設定變更並不合理。 伺服器、資料庫與種類連記都不記,理由見SQL Search。
設定頁上的按鈕、工具 → SqlAssist 選單與「關於與診斷」見設定入口。