我正在尋找一個有很多LINQ to SQL查詢的應用程序。這基本上是Silverlight應用程序與MVC。一些數據加載需要相當長的時間。我想知道在SQL服務器上觸發的確切查詢。有沒有將生成的T-SQL語句存儲到某種日誌文件的方法?Linq to SQL:如何將最終查詢保存到日誌文件?
請推薦一些其他可能的方法。
我正在尋找一個有很多LINQ to SQL查詢的應用程序。這基本上是Silverlight應用程序與MVC。一些數據加載需要相當長的時間。我想知道在SQL服務器上觸發的確切查詢。有沒有將生成的T-SQL語句存儲到某種日誌文件的方法?Linq to SQL:如何將最終查詢保存到日誌文件?
請推薦一些其他可能的方法。
LINQ to SQL datacontexts有一個屬性Log
,它擁有對所有生成的SQL查詢的文本進行寫入的TextWriter
的引用。例如,您可以爲磁盤文件打開StreamWriter
,然後將其分配給datacontext的Log屬性。看到這裏的一些很好的例子:http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
你最好打賭是使用SQL Server Profiler。這會將所有查詢記錄到跟蹤文件,您可以在跟蹤後加載查看查詢需要多長時間等。
看看這個介紹。 http://msdn.microsoft.com/en-us/library/ff650699.aspx
確保您選擇了正確的事件,例如Statement Completed。
看到這個職位作進一步參考
+1,儘管OP對於日誌的要求,SQL Server profiler確實也是一個好東西解決方案並沒有涉及編碼 – Pleun
是的,那是真的。我現在正在探索SQL Server Profiler。非常感謝。通過編碼,我可以非常具體地記錄特定的查詢。對於SQL Server Profiler,它適用於事件並傾向於記錄所有內容。可能是我將不得不學習過濾等。 – Kangkan
@Kangkan - 我通常使用sql server profiler與調試器一起使用。我在我想跟蹤的事物之前放置一個breakboint,打開配置文件,跨越我想要跟蹤的部分並再次切換它。由於我使用的是sql server express,我使用的是AnjLab分析器,而不是來自MS的分析器 – Pleun
對不起,我是在LINQ天真,無法找到日誌屬性。我們使用MVC,我無法看到日誌屬性。 – Kangkan
「Log」是DataContext類的一個屬性。在這裏看到:http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.log.aspx – Konamiman