2015-08-23 38 views
2

我需要搜索並刪除許多存儲過程中的隱式轉換。但是,通過執行計劃來查看存儲過程中的每條語句都需要太多時間來查找隱式轉換。我如何檢測SQ​​L Server中的隱式轉換

請指教我如何有效地檢測SQL Server數據庫中可用的所有存儲過程中的隱式轉換。

+0

嘗試檢查計劃緩存和搜索隱式轉換,如[here](http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/01/08/finding-implicit-column-conversions-in-the-plan-cache.aspx)。當然,它只會找到執行和緩存的內容。或者執行您的存儲過程,保存計劃緩存並搜索隱式轉換。 – lad2025

+0

您不需要手動檢查每個執行計劃,使用DMV並查詢它。 – lad2025

+0

另一個解決方案[使用擴展事件](https://sqlserverfunctions.wordpress.com/2014/09/29/get-told-about-explicit-implicit-conversions-in-sql-2012-using-extended-events/) ,SP必須先執行。 – lad2025

回答

1

可能的解決方案:

  1. 查詢DMV Cache Plans
  2. 使用Extended Events(SQL服務器2012+)
  3. 工具能完成的代碼分析(展鵬/ ApexSql)
+0

謝謝@ lad2025,非常感謝您的幫助。但我仍然在搜索這種類型的工具而不是dmv /擴展事件/計劃緩存。 – Mahendra

+0

在我看來,你不會找到完全自動爲你工作的工具。如果我是你,我會參加擴展活動,設置鬧鐘並搜索每一個隱含的CAST。我知道這需要時間,首先要做很多事情。只要想一想Dynamic-SQL,如果沒有執行查詢,該工具就會知道鑄造問題? – lad2025

+0

很好的解釋。非常感謝。 – Mahendra