Sql-Server

這段程式碼有什麼作用?

  • August 1, 2012

我發現我的一個查詢被以下程式碼覆蓋:

SELECT 
   cp.objtype AS ObjectType,
   OBJECT_NAME(st.objectid,st.dbid) AS ObjectName,
   cp.usecounts AS ExecutionCount,
   st.TEXT AS QueryText,
   qp.query_plan AS QueryPlan
FROM 
   sys.dm_exec_cached_plans AS cp 
CROSS APPLY 
   sys.dm_exec_query_plan(cp.plan_handle) AS qp 
CROSS APPLY 
   sys.dm_exec_sql_text(cp.plan_handle) AS st 
WHERE 
   st.text LIKE  '%StatRiskPrem_udf%' 

我相信也許其中一位管理員可能不小心這樣做了,因為我不記得寫過這段程式碼。事實上,我什至不知道程式碼是做什麼的,但我可能從某個地方複製了它,然後自己錯誤地粘貼並保存了它。在我去問管理員他們是否覆蓋了我的原始查詢之前,這裡有沒有人知道這段程式碼似乎試圖做什麼?如果我知道程式碼試圖做什麼,那麼我可能會記得我自己是否這樣做。謝謝!

該查詢在過程記憶體中查找包含文本的記憶體計劃StatRiskPrem_udf。結果集將包含以下內容:

  • 記憶體的對像類型
  • 記憶體的對象名稱
  • 計劃的使用次數
  • 記憶體的SQL 文本
  • 記憶體的查詢計劃

我猜目標是找出 UDF 被引用了多少次。不過,我不會說這非常準確,因為過程記憶體是一扇旋轉門,尤其是在記憶體壓力下。但這就是查詢的要點。

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