我有一个用 C# 编写的 ASP.NET Web 应用程序。它使用 SQL Server 2008 数据库。似乎某些 SQL 查询使 SQL Server 死锁,而且我的 SQL Server 性能也很差。为了找出哪个,我想添加一个诊断事件日志记录,但我不确定如何。如果我正在编写一个普通的 Windows 应用程序,我会使用 Windows 事件日志,或者只使用一个简单的文本文件。所以我很好奇,如何从 Web 应用程序中做同样的事情?
问问题
1182 次
3 回答
1
.NET从2.0版本开始就内置了功能丰富、配置灵活的登录系统。您可以从MSDN 上的这篇文章开始。 尽管出于某种原因,大多数人不使用它,而是更喜欢使用 Log4net 或 NLog 进行日志记录。首先是java日志工具的移植,其次是重新思考。我个人更喜欢将 TraceSource 与过滤器一起使用。ADO.NET 本身也支持它。
于 2013-03-01T21:59:20.117 回答
0
死锁发生在 SQL 端,ASP.NET 不可能了解全貌。
我建议检查您的查询是否有 WITH LOCK 语句,然后在删除它之前弄清楚它为什么会出现。
否则,如果您通过 SQL 服务器诊断管理器发现有问题的查询......或者如果您可以纯粹在 SQL 端重现死锁,请将 WITH NOLOCK 添加到该查询。吨
他是迄今为止最简单的解决方案,更好的解决方案首先要找到导致死锁发生的根本原因。
于 2013-03-01T22:21:56.057 回答