1

我有一个用 C# 编写的 ASP.NET Web 应用程序。它使用 SQL Server 2008 数据库。似乎某些 SQL 查询使 SQL Server 死锁,而且我的 SQL Server 性能也很差。为了找出哪个,我想添加一个诊断事件日志记录,但我不确定如何。如果我正在编写一个普通的 Windows 应用程序,我会使用 Windows 事件日志,或者只使用一个简单的文本文件。所以我很好奇,如何从 Web 应用程序中做同样的事情?

4

3 回答 3

3

从 ASP.Net Web 应用程序进行日志记录有很多选项。

NLog是值得考虑的一个,因为它性能良好,并根据严重性提供了广泛的日志目标,包括文本文件、数据库、电子邮件或 GUI 日志查看器,如Sentinel

话虽如此,应用程序级日志记录可能不是专门诊断 SQL Server 死锁的最佳方法。我建议从 SQL Server Profiler 开始执行该任务

使用 SQL Server Profiler 分析死锁

于 2013-03-01T21:55:43.600 回答
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 回答