Sql-Server-2016
在查詢儲存中查找特定查詢
我在數據庫上啟用了查詢儲存。我有一個要跟踪的特定查詢。我有很多關於 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_hash
、last_compile_batch_sql_handle
、statement_sql_handle
等),它們可能會更可靠地找到您要查找的查詢。基本上,這樣做的目的是在查詢儲存中找到“查詢 ID”,因為您需要它來找到它的計劃並強制執行。
拿到
query_id
手後,您可以轉到 SSMS 中的 UI 並使用“Tracked Queries”節點查找查詢:從那裡您可以點擊所需的計劃,然後點擊“強制計劃”以強制執行: