1

我刚刚在我的开发盒上移动到 Windows 8,我遇到了所有外部SqlConnection.Open()命令都需要 2 秒以上的问题(连接到本地没有开销)。这与 SQL Server 版本(2005、2008 或 2012)无关,并且不存在其他网络问题。我尝试了许多可能的解决方案(重新安装 .net、SQL Server、Visual Studio 等)。有哪些诊断工具可以追查这个问题,或者社区有什么想法?

PS - All SqlCommand.ExecuteNonQuery(), SqlCommand.ExecuteReader(), etc 调用也0.5 秒的开销。我能够通过将Encrypt = true和添加TrustServerCertificate = trueSqlConnectionStringBuilder.

4

2 回答 2

0

我确实使用了 Windows 的事件跟踪,并没有什么让我跳出来的。我也使用了dotTrace,再次,什么都没有。

最终,一位正在使用 PerfMon 的同事注意到该日志被趋势科技通知发送到垃圾邮件中。为了抑制噪音,他停止了服务(使用 SA 工具),性能问题就消失了。事实证明,Windows 8 和 Windows Server 2012 上的趋势科技会对 SQL Server 连接产生负面影响。此外,它非常阴险,并没有在任何日志记录或分析工具中显示为罪魁祸首。呸。

于 2013-11-20T22:21:13.403 回答
0

Sql server 网络库具有与 ETW(Windows 事件跟踪)框架相关的大量可用跟踪。通过使用此跟踪功能,您将能够确定连接的哪个部分导致了 2 秒的延迟。

Windows 事件跟踪

ETW 框架是一个重量非常轻、速度非常快的事件记录系统,每秒可以以最小的开销捕获数万个事件。它内置在 Windows 核心中,由发布事件的“提供者”组成。例如,IE、sql 客户端库、.net 框架和大多数 Windows 系统驱动程序都会公开事件。

订阅者注册他们感兴趣的事件,仅此而已。如果没有人在监听一个事件,它就会变成一个最小开销的无操作。仅供参考,ETW 驱动从 windows vista 开始的所有版本的事件日志(当他们引入了应用程序、安全性和系统之外的所有额外 windows 事件日志时)

Sql 客户端库中的数据访问跟踪

http://www.sqlskills.com的Bob Beauchemin写了一篇关于该主题的优秀论文, 可在 msdn 上找到。去阅读它并为“ETW 跟踪”、“BID 跟踪 Sql 客户端”等做一些谷歌搜索。不幸的是,它需要一些工作来绕开你的脑袋,但它非常强大。

这个过程将相当简单。配置跟踪、捕获活动、停止和查看跟踪。它将有详细的时序,您也可以捕获堆栈跟踪,因此您应该能够清楚地看到延迟并进一步调查它。您还可以混合用于 dns 查找、加密、活动目录访问、网络活动等的事件,因此如果遇到死胡同,请尝试添加相关事件。这将是一个迭代过程,您最终可能会更多地了解 System.Data.SqlClient 的内部结构,然后您更愿意这样做。

祝你好运,如果您需要额外的帮助来理解跟踪文件,请更新您的问题,我们将解决它。

于 2013-07-07T03:08:35.483 回答