2013-03-01 43 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

他是迄今为止最简单的解决方案,更好的解决方案涉及找到为什么僵局首先发生的根本原因。

相关问题