2013-03-01 76 views
1

我有用C#編寫的ASP.NET Web應用程序。它使用SQL Server 2008數據庫。似乎有些SQL查詢會使SQL服務器死鎖,並且我也遇到了不好的SQL Server性能。爲了找出哪個,我想添加一個診斷事件記錄,但我不知道如何。如果我正在編寫一個普通的Windows應用程序,那麼我會使用Windows事件日誌,或僅使用一個簡單的文本文件。所以我很好奇,如何從Web應用程序做同樣的事情?如何爲ASP.NET Web應用程序實現事件記錄器?

+1

爲死鎖的問題,這可能會幫助你[http://stackoverflow.com/questions/12422986/sql-query-to-get-the-deadlocks-in-sql-server-2008][1] [1]:http://stackoverflow.com/questions/12422986/sql-query-to-get-the-deadlocks-in-sql-server-2008 – Singleton 2013-03-01 22:01:03

+0

添加一個SQL Server標記爲您服務。 – RandomUs1r 2013-03-01 22:23:18

回答

3

從ASP.Net Web應用程序登錄有很多選項。

NLog是值得考慮的問題之一,因爲它表現良好,並提供廣泛的基於嚴重性,包括文本文件,數據庫,電子郵件,或作爲一個Sentinel GUI日誌查看器這樣的日誌目標。

話雖如此,應用程序級日誌記錄可能不是診斷特定SQL Server死鎖的最佳方法。我會建議從SQL Server事件探查該任務

Analyzing Deadlocks with SQL Server Profiler

+0

我同意@ErikJ NLog和Log4Net都是很棒的解決方案。 – Jeremy 2013-03-01 22:24:37

1

.NET具有豐富的功能和靈活的配置洛系統建設自2.0版本。 您可以從this article on MSDN 開始由於某些原因,大多數人不會使用它,並且首選Log4net或NLog進行日誌記錄。首先是Java日誌工具的端口,其次是重新考慮它。 我個人更喜歡使用TraceSource和過濾器。本地支持ADO.NET也是如此。

+0

好交易。內置日誌保存在哪裏 - 文件系統文件或數據庫? – c00000fd 2013-03-01 22:01:02

+0

@ c00000fd無論您將其配置爲保存。這裏是聽衆的信息http://msdn.microsoft.com/en-us/library/4y5y10s7.aspx – vittore 2013-03-01 22:02:25

+0

恕我直言,內置的日誌記錄框架缺乏像NLog或Log4Net的解決方案的完整性。 – 2013-03-01 22:20:52

0

死鎖發生在SQL端,ASP.NET不可能知道完整的圖片。

我建議檢查您的查詢WITH LOCK語句,並在刪除它之前找出它爲什麼開始。否則,如果通過SQL server診斷管理器發現有問題的查詢...或者如果純粹在SQL端重新生成死鎖,請將WITH NOLOCK添加到該查詢中。 T

他是迄今爲止最簡單的解決方案,更好的解決方案涉及找到爲什麼僵局首先發生的根本原因。

相關問題