我有一个用C#编写的ASP.NET Web应用程序。它使用SQL Server 2008数据库。似乎有些SQL查询会使SQL服务器死锁,而且我也遇到了错误的SQL Server性能。为了找出哪个,我想添加一个诊断事件记录,但我不知道如何。如果我正在编写一个普通的Windows应用程序,我会使用Windows事件日志或仅使用简单的文本文件。所以我很好奇,如何从Web应用程序中做同样的事情?
答案 0 :(得分:3)
从ASP.Net Web应用程序进行日志记录有很多选项。
NLog值得考虑,因为它表现良好,并根据严重程度提供各种日志目标,包括文本文件,数据库,电子邮件或GUI日志查看器,如Sentinel。< / p>
话虽如此,应用程序级日志记录可能不是诊断SQL Server死锁的最佳方法。我建议从SQL Server Profiler开始执行该任务
答案 1 :(得分:1)
.NET已经构建了自2.0版以来具有丰富功能和灵活配置的登录系统。 你可以从this article on MSDN开始 由于某些原因,大多数人不使用它,而更喜欢使用Log4net或NLog进行日志记录。首先是java日志工具的端口,其次是重新思考它。 我个人更喜欢使用TraceSource和过滤器。 ADO.NET本身也支持它。
答案 2 :(得分:0)
在SQL端发生死锁,ASP.NET无法了解完整情况。
我建议您检查查询是否有一个WITH LOCK语句,然后再删除它,找出它为何开始。
否则,如果您通过SQL Server诊断管理器找到有问题的查询...或者您可以完全在SQL端重现死锁,请将WITH NOLOCK添加到该查询。 Ť
他是迄今为止最简单的解决方案,更好的解决方案包括首先找到导致死锁发生的根本原因。