2011-05-12 26 views
9

是否有可能以編程方式獲取LINQ to SQL或ADO.NET Query的執行計劃以顯示調試信息?如果是這樣,怎麼樣?如何使用LINQ to SQL/ADO.NET獲得執行計劃

+0

我不知道LINQ的具體情況,但這是一個以編程方式獲取查詢計劃的解決方案。要爲LINQ做同樣的事情,似乎你必須大量修改生成的文件。應該可行,複雜但可行。 http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/aaf5e9c9-a222-414a-baed-5c0adcc329e2 – RThomas 2011-05-12 15:57:12

+1

你完成了嗎?如果您可以在某個時候發佈帖子,我很樂意看到解決方案。 – RThomas 2011-05-14 05:42:33

回答

3

當然,有2件事情你需要。

定製實現DbConnection,DbCommandDbDataReader。你可以使用它來攔截所有發送到數據庫的SQL。你基本上已經設置好了,所以你有一個記錄所有運行的SQL的層。 (我們計劃在未來幾個月內在此領域開源,敬請關注)

一種顯示數據構成方式的方法,這種情況在此處是開源的:http://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i(請參閱包含執行計劃選項)


另一種方法是通過查看proc緩存來做事後診斷。 sys.dm_exec_query_stats包含可以擴展的緩存計劃句柄。

+0

爲開源exec計劃顯示提供鏈接? – 2011-05-15 02:50:15

+2

@Chad肯定... http://data.stackexchange.com/about – 2011-05-15 04:54:47

+0

謝謝,很有幫助。 :d – 2011-05-15 14:08:39