Sql-Server-2016

在查詢儲存中查找特定查詢

  • March 31, 2020

我在數據庫上啟用了查詢儲存。我有一個要跟踪的特定查詢。我有很多關於 sp_BlitzCache 查詢的詳細資訊(如 SQL 文本、SQL 句柄、SQL 雜湊、計劃記憶體句柄/雜湊等)。

我可以使用 sp_BlitzCache 中的資訊搜尋查詢儲存以追踪那裡的查詢嗎?我想強制執行特定的執行計劃,因為查詢遇到參數嗅探問題。

一種方法是直接查詢查詢儲存視圖以獲取您從計劃記憶體中獲得的資訊:

SELECT 
   qsq.query_id,
   qsq.last_execution_time,
   qsqt.query_sql_text
FROM sys.query_store_query qsq
   INNER JOIN sys.query_store_query_text qsqt
       ON qsq.query_text_id = qsqt.query_text_id
WHERE
   qsqt.query_sql_text LIKE '%your query text%';

sys.query_store_query表還有一些其他欄位(query_hashlast_compile_batch_sql_handlestatement_sql_handle等),它們可能會更可靠地找到您要查找的查詢。

基本上,這樣做的目的是在查詢儲存中找到“查詢 ID”,因為您需要它來找到它的計劃並強制執行。

拿到query_id手後,您可以轉到 SSMS 中的 UI 並使用“Tracked Queries”節點查找查詢:

跟踪查詢選項卡和文本框的螢幕截圖

從那裡您可以點擊所需的計劃,然後點擊“強制計劃”以強制執行:

部隊計劃按鈕截圖

引用自:https://dba.stackexchange.com/questions/263998