Skip to content

通知提示 ​

本頁包含通知來源、三個動詞、提醒、合併與工作階段統計;三軸與可見度見可見度, 通知島與實機驗收見呈現與驗證,文案見通知訊息。

計數與來源 ​

  • Core/Notifications/NotificationCenter 保存執行中與近期完成的不可變快照。
  • 成功才計入「已完成」;失敗另列數字,降級與取消在明細標示。項目到期時分子、分母一起扣除。
  • SqlMetadataCatalog.TryLoad 在實際查詢入口追蹤,涵蓋預載、快取更新、各層按需載入、 系統物件與執行個體名單。等待共享閘與退避不另計數;同步巢狀查詢合併至外層工作。 快取命中以 Trace 記錄,只進統計不上畫面。
  • SqlAssistPlatformGuard.Begin 追蹤一般背景工作,三軸由呼叫端明寫;初始化與 F12 在原有 錯誤處理內接線。BeginProbe 不整批追蹤,避免週期性連線探測與無工作的預載呼叫反覆閃現 提示——「重新確認連線」那一則由該處自己開,不改 BeginProbe 的行為。
  • 按鍵、游標停手就跑一次的判斷走 SqlAssistPlatformGuard.RunAsync,不開通知:多半的結論是 什麼都不做,包成 Begin 會每停一次手冒一列「已完成」,看起來像一直在跑重的東西。 判斷之後真的做了事,由那一段自己回報;已經發生的結果用 Post。
  • Run 一族攔下的未預期例外經 Core/Notifications/UnexpectedFailureNotice 送一則失敗(Unclassified、 不帶操作名稱與例外),只寫紀錄檔的話使用者只看到功能安靜地不作用。同一操作 60 秒一次,送出途中 同執行緒再失敗不送:按鍵處理常式與通知島重畫壞掉時都會連續失敗。
  • 標題與完成後的敘述只有 Core/Notifications/NotificationCatalog 一份出處,呼叫端不組字串。
  • Document 與 Source 保存啟動時的名稱,不隨焦點更新;無檔名時 Document 用穩定編輯區 編號,中繼資料層只填得出 Source。不保存完整路徑、SQL、認證或例外內容。
  • 最近結果最多 100 項,不截掉執行中的工作;最近 30 項失敗可從「關於與診斷 → 通知失敗」 回看。紀錄只存在記憶體,重開診斷視窗更新列表。
  • Activity 一詞只剩「最近活動」(SqlAssistActivity,記錄使用者最後做了什麼),與通知無關。

三個動詞與提醒 ​

動詞用在怎麼結束
Begin有執行期間的工作範圍釋放寫回結果,依保留期限淡出
Post當下已經發生的事件以完成狀態入列,依保留期限淡出
Prompt需要使用者決定的事使用者按按鈕或叉號,呼叫 Resolve

前兩種是活動;NotificationItem.Actions 不是空的就是提醒,不另加一軸:沒有按鈕的提醒 只能等叉號,有按鈕卻會到期則是使用者還沒看到就消失的決定。

  • Post 給擷取被丟棄、容量越過警戒這類沒有執行期間的事:不經過 Running,不成為環境父工作, 也不被 joinParent 接手。借 Begin 開了立刻關會先冒出一列執行中再改寫、讓同一刻的巢狀查詢 併進來,耗時也只是雜訊。完成後的帳由 Finish 與 Post 共用同一條路徑,新增紀錄不會漏掉事件。 Status 只收已完成的結果,傳 Running 擲例外;三軸與 Status 都沒有預設值。
  • 提醒內容只來自目錄建好的 NotificationPrompt(鍵、標題、訊息、嚴重度、按鈕),三軸照舊由呼叫端明寫。
  • 按鈕是 NotificationAction:NotificationActionIds 的穩定識別字、標籤、Primary/Secondary 與參數, 每則最多一個 Primary。存識別字而不存委派:快照才能比對,「略過這一版」這類決定才能由呼叫端落地保存。
  • 同一個 (Kind、Key) 取代舊的那一則並換新身分;被取代的不算處理。
  • Resolve(itemId, actionId) 的 actionId 為 null 是叉號,語意是「稍後」:只在這次工作階段收起, 同鍵的新提醒也不再出現,下次啟動照常送出;真正的拒絕由按鈕表達。來源是 User 的提醒不理會 「稍後」並解除它:使用者自己按「檢查更新」得到的答案不能安靜地消失。
  • 按鈕由 Notifications/NotificationActionRouter 派送:套件初始化時登記識別字對應的處理常式, 按下時先 TryResolve 收掉那一則、拿到按鈕與參數,再在 Guard 裡派送。
  • 提醒不逾時、不合併、不受活動的叉號影響;上限 20 則(丟最舊),不跟最近 100 項搶位置, 不進工作階段統計、最近失敗與逐次完成紀錄。詳細診斷在處理時寫 id/kind/key/action,不寫文字。

合併與工作階段統計 ​

合併收攏畫面,統計回答「哪些動作在重複」。合併只影響畫面,每一次呼叫仍逐次計入統計與詳細診斷。

Core/Notifications/NotificationMerge 依 (Kind、Title、Subject、Document、Source) 合併, 提醒原樣保留,只合併已完成且結果相同的項目:執行中的各自成列才保得住進度感,失敗與降級不併入成功。 代表列沿用群組中最早那一項的 Id、位置與耗時;換成最新的那一項,每重複一次就換一個身分, 畫面又回到每次重畫一列。NotificationItem.Repeat 是這一列代表幾次呼叫,畫面上是 ×N 徽章。 抬頭的「N 項工作 · 成功數/總數」與進度條都以合併後的列數計算:三次相同的成功是 1/1,不是 3/3。

Core/Notifications/NotificationDigest 依 (Kind、Title、Subject) 累計呼叫次數、 總耗時、平均、最大、失敗數與降級數。統計不受可見度影響:隱藏的種類、Trace 與快取命中 一樣計入,否則預設隱藏的四個高頻種類正是最需要回答的那幾類。鍵數上限 200,之後的新鍵 併進「其他」一列。合併的巢狀查詢不另計一次,與抬頭計數的口徑相同。只留次數與耗時。

畫面入口與排序見設定入口。

以 Apache-2.0 授權條款發布 · 專為 SSMS 22 設計