查詢分析器

Visual Studio Code MSSQL 擴充套件中的查詢分析器(Query Profiler)利用 擴展事件即時捕捉並監控資料庫活動。 你可以觀察即時 Transact-SQL(T-SQL)活動,辨識緩慢操作,並發現開發過程中的效能瓶頸。

查詢分析器支援 SQL Server(本地或雲端環境)、Azure SQL Database,以及 Microsoft Fabric 端點中的 SQL 資料庫。 你可以監控正在進行的工作階段、檢視執行細節,並了解應用程式在開發與測試期間如何與資料庫互動。

Visual Studio Code MSSQL 擴充功能中查詢分析器即時事件網格的截圖,顯示擷取到的資料庫活動。

Features

MSSQL 擴充中的查詢分析器提供以下功能:

  • 在即時事件網格中捕捉即時查詢與資料庫活動。
  • 配置新的分析會話,並使用範本選擇與會話命名功能。
  • 透過 啟動、 暫停、 繼續、 停止及 清除資料 等動作來控制會話生命週期。
  • 同時執行多個分析會話,並用會話選擇器在它們之間切換。
  • 可依文字、資料庫名稱、時長及其他欄位篩選捕捉事件。
  • 切換自動捲動以追蹤最新活動或檢視較舊的條目。
  • 匯出擷取事件為 CSV。
  • 開啟並查看只讀的 Profiler 網格中的現有 .xel 檔案。
  • 自動選擇 Azure SQL 資料庫目標Standard_Azure的適當範本()。
  • 可在 Windows、macOS 及 Linux 上,涵蓋所有支援的 Visual Studio Code 平台。

先決條件

  • 安裝最新版本 的 Visual Studio Code MSSQL 擴充功能。
  • 一個與支援的 SQL Server 實例或 Azure SQL 資料庫的主動連線。
  • 伺服器權限適當。 你需要取得 ALTER ANY EVENT SESSION 許可(或同等條件)才能開始分析會談。

啟動查詢分析器

你可以從 Connections 檢視或 指令面板啟動查詢分析器。

從連結的角度來看:

  1. 在 連線 檢視中,右鍵點擊 SQL Server 實例。

  2. 選擇 啟動查詢分析器。

    「連線」內容選單中「啟動查詢剖析器」選項的截圖。

來自命令面板:

  1. 打開指令面板(Ctrl+Shift+P 或 Cmd+Shift+P)。

  2. 選擇 MSSQL:啟動查詢分析器。

  3. 如果目前沒有連線,請在提示時選擇連線。

查詢分析器面板會打開,連結至所選連線。

建立一個分析會議

當查詢分析器面板開啟且沒有活動會話時,會顯示 新會話 畫面。

  1. 驗證或更改分析會話的 連線配置設定。

  2. 從下拉選單中選擇 範本 。 可用的範本取決於你的連結目標。

    SQL Server(本地端)範本:

    Template 所記錄的事件 Description
    Standard_OnPrem sql_batch_completed、sql_batch_starting、rpc_starting、rpc_completed、sp_statement_starting、sp_statement_completed、attention、existing_connection、login、logout 完整的剖析範本,能捕捉 SQL 批次與 RPC 活動、儲存程序語句層級事件及連線事件。 提供最詳細的伺服器活動視圖。
    TSQL_OnPrem sql_batch_completed、、 sql_batch_starting、 existing_connection、 login、 logout 輕量級範本專注於 T-SQL 批次執行。 擷取批次開始與完成事件,無需涉及儲存過程或 RPC 的細節,從而減少在僅需進行頂層查詢操作時的開銷。
    TSQL_Locks sql_batch_completed、sql_batch_starting、lock_acquired、lock_released、existing_connection、login、logout 擷取 T-SQL 批次事件,以及鎖定與解除鎖定事件。 有助於診斷阻塞、死結及鎖爭用問題。
    TSQL_Duration sql_batch_completed (濾波後:持續時間 >= 1000微秒)、 sql_batch_starting, existing_connection, login, logout 擷取 T-SQL 批次事件,但篩選 sql_batch_completed 只包含耗時 1 毫秒或更長的批次。 這對於辨識緩慢查詢同時降低快速執行語句的雜訊非常有用。

    Azure SQL 資料庫與 Fabric 範本中的 SQL 資料庫:

    Template 所記錄的事件 Description
    Standard_Azure sql_batch_completed、sql_batch_starting、rpc_starting、rpc_completed、attention、existing_connection、login、logout Azure SQL Database 的標準分析模板。 擷取 SQL 批次與 RPC 活動,包括連線事件。 類似於 Standard_OnPrem,但沒有儲存程序級的語句事件。
    TSQL_Azure sql_batch_completed、、 sql_batch_starting、 existing_connection、 login、 logout 輕量化的 T-SQL 剖析模板適用於 Azure SQL 資料庫。 擷取批次執行事件,無需 RPC 或儲存程序細節。

    備註

    Azure SQL 資料庫與 Fabric 範本中的 SQL 資料庫會建立針對資料庫(ON DATABASE)而非伺服器的會話。 這些連線無法使用鎖定和根據持續時間過濾的範本。

    顯示可用分析工具範本的模板選擇下拉式選單截圖。

  3. 輸入 一個會話名稱。 按 Enter 確認,按 Escape 取消。

    新查詢分析器會話名稱輸入提示的截圖。

面板會切換到即時事件視圖,並透過 SQL 工具服務建立一個 Profiler 會話。

監控現場活動

當您執行剖析會話時,事件網格會依時間順序顯示捕捉到的事件。 網格會根據所選範本顯示以下欄位:

  • EventClass:捕捉的事件類型,例如 sql_batch_starting 或 rpc_completed。
  • TextData:T-SQL 語句或事件文本。
  • ApplicationName:產生事件的應用程式。
  • 登入名稱:與活動相關的登入帳號。
  • ClientProcessID:用戶端程序識別碼。
  • SPID:伺服器程序 ID。
  • 開始時間:事件的時間戳記。
  • CPU:CPU 時間消耗。
  • 閱讀:邏輯閱讀次數。
  • 寫入次數:邏輯寫入次數。
  • 持續時間:事件執行時間。
  • DatabaseName:事件發生的資料庫。
  • HostName:產生事件的主機。

工具列動作

工具欄提供以下活動會話的控制選項:

動作 Description
新會期 開啟新的會話流程以建立另一個分析會話。
開始 恢復暫停或停止的會話之事件串流。
停止 這會結束了剖析會議。 不會有新事件到來,但捕獲的事件仍可檢視、篩選和匯出。
暫停 暫時停止更新網格。 介面 顯示暫停指示 。
清晰資料 清除當前會話網格中的所有行。 如果會話仍在進行中,新的事件會持續填滿格子。
清除所有過濾器 移除所有活躍欄位過濾器,並恢復完整的事件視圖。
快速篩選所有欄位...... 跨欄搜尋,快速找到匹配事件。
匯出成 CSV 將當前會話擷取的事件匯出成 CSV 檔案。
自動捲動 切換格子是否在新事件出現時捲動到最新一列。 新會話自動捲動功能預設為開啟。

篩選事件

使用欄位篩選器縮小事件範圍,聚焦於相關活動。 每個欄位標頭都包含一個篩選圖示,可開啟該欄位資料型態專屬的篩選器。

以欄位值篩選(例如, DatabaseName 或 ApplicationName)

  1. 選擇欄位標頭上的篩選器圖示,例如 DatabaseName。

  2. 在篩選下拉選單中,使用搜尋框尋找數值,或從勾選框中選擇與取消特定項目。

  3. 選擇 套用 以篩選格子。 選擇 清除 以移除該欄位的篩選條件。

    DatabaseName 欄位篩選器的截圖,顯示可用資料庫的勾選框清單。

以數值篩選(例如, Duration)

  1. 選擇數字欄位上的篩選圖示,例如 Duration。

  2. 選擇一個比較運算子(例如, =、 >, <)並輸入一個數值閾值。

  3. 選擇 套用 以篩選格子。

    Duration 欄位過濾器的截圖,包含數值比較運算子和值輸入。

當一個或多個篩選器啟用時,工具列下方會出現篩選晶片,顯示哪些欄位被篩選。 選擇晶片上的 X 來移除該過濾器,或在工具列中選擇 「清除所有過濾器 」來一次重置所有過濾器。

顯示已套用 DatabaseName 和 ApplicationName 篩選條件的主動過濾器晶片截圖。

備註

過濾器會對當前顯示的事件以及會話期間串流的新事件在用戶端套用。

管理多個會話

查詢分析器支援同時執行多個剖析會話,每個會話都有自己的連線、範本和事件緩衝區。

  1. 從工具列選擇 新會話 以建立另一個會話。 新的會話可以針對相同或不同的連線。

  2. 使用 會話選擇器 下拉選單來切換會話。 每個會話會顯示其狀態(執行中、已暫停或已停止),並以視覺化的方式呈現。

  3. 當你切換療程時:

    • 事件網格會更新,顯示所選會話捕捉到的事件。
    • 工具列動作會對所選擇的會話進行處理。

匯出捕獲事件

你可以將從分析會話中擷取的事件匯出成 CSV 檔案,方便離線審查或分享。

  1. 從工具列選擇 匯出成 CSV 。 無論會話正在執行、暫停或停止,匯出功能皆可使用。

  2. 選擇 CSV 檔案的位置和檔名。

匯出檔案包含目前在會話網格中可見的事件。

開啟現有的 XEL 檔案

你可以在查詢分析器網格中開啟並檢視先前擷取的擴展事件追蹤檔案(.xel)。

  1. 打開 指令面板 (Ctrl+Shift+P 或 Cmd+Shift+P)。

  2. 選擇 MSSQL:開啟 Profiler XEL 檔案...。

  3. 瀏覽並選擇 .xel 你想開啟的檔案。

檔案會在唯讀的 Profiler 面板中開啟。 事件會載入並顯示在同一網格中,並具備過濾功能。 因為檔案不是即時會話,所以無法使用開始、暫停和停止的控制項。

支援的案例

查詢分析器可支援以下 SQL Server 及 Azure SQL 目標:

標的 支援範本
SQL Server(本地、虛擬機、容器) Standard_OnPrem,TSQL_OnPrem,TSQL_Locks,TSQL_Duration
Azure SQL Database Standard_Azure,TSQL_Azure
Fabric 中的 SQL 資料庫 Standard_Azure,TSQL_Azure

備註

如果你選擇不支援的範本或嘗試在 Azure SQL 資料庫進行伺服器層級的會話,查詢分析器會顯示針對性的錯誤訊息並建議合適的範本。

局限性

  • 目前沒有 AI 或 GitHub Copilot 整合。
  • 除了 Extended Events 和現有範本所提供的,沒有跨資料庫或跨伺服器的關聯。
  • 沒有儲存或載入濾波器預設。
  • 無法重播追踪或從捕捉事件中生成腳本。
  • 沒有現有 .xel 檔案或連線,無法離線分析。
  • Azure SQL 受管理實例端點目前並不保證會被支援。

意見反應與支援

如果您有想法、反饋或想與社區互動,請加入討論 https://aka.ms/vscode-mssql-discussions。 若要回報錯誤,請造訪 https://aka.ms/vscode-mssql-bug。 若要要求新功能,請移至 https://aka.ms/vscode-mssql-feature-request。