导致此SqlException的原因:从服务器接收结果时发生传输级错误

时间:2008-09-09 19:36:58

标签: sql-server unit-testing resharper vmware-tools

以下是完整错误:SqlException: A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 1 - I/O Error detected in read/write operation)

我已经开始间歇地看到我的应用程序中的一些单元测试(有超过1100个单元和系统测试)。我在ReSharper 4.1中使用了测试运行器。

另一件事:我的开发机器是VMWare虚拟机。

5 个答案:

答案 0 :(得分:5)

我在很多个月前遇到过这个问题。最重要的是,你的可用端口已经用完了。

首先确保您的呼叫应用程序具有连接池。

如果是,则检查SQL Server的可用端口数。

正在发生的事情是,如果池已关闭,则每次调用都需要一个端口,默认情况下需要4分钟才能使端口过期,并且您的端口用完了。

如果启用了池,则需要对SQL Server的所有端口进行概要分析,并确保已经足够并在必要时展开它们。

当我遇到此错误时,连接池已关闭,只要在网站上放置了不错的负载,就会导致此问题。我们没有看到它在开发中,因为最大负载是2或3人,但是一旦数量超过10,我们就会看到这个错误。我们转向汇集,并修复了它。

答案 1 :(得分:2)

我也遇到过这么多个月。但是,不要打折@ Longhorn213s的解释,但我们有完全相反的行为。我们收到了开发和测试中的错误,但显然负载不是很大。我们最终容忍发展中的问题,因为它是零星的,并没有实质性地减缓进展。我认为这个错误可能有几个原因,但我自己从来没有能够指出原因。

答案 2 :(得分:1)

我们也遇到了这个错误,并发现我们正在从数据库服务器中删除一个SQL服务器连接。客户端应用程序的印象是连接仍处于活动状态并尝试使用该连接,但由于终止而失败。

答案 3 :(得分:0)

我们在我们的环境中看到了这一点,并将其中的一部分追溯到我们查询中的“NOLOCK”提示。我们删除了NOLOCK提示并将我们的服务器设置为使用快照隔离模式,这些错误的频率降低了很多。

答案 4 :(得分:0)

我们已经看过几次这个错误并尝试了不同的分辨率并取得了不同的成功。一个常见的底层主题是提供错误的系统内存不足。如果托管Sql Server的服务器正在运行任何其他非操作系统进程,则尤其如此。默认情况下,SQL Server将获取它可以的任何内存,然后如果没有其他进程/驱动程序。这可能导致不稳定的行为和间歇性消息。最好将SQL Server配置为最大内存,留下一些空间是否有其他可能需要它的进程。示例:在同一台计算机上运行SQL Server开发人员版本副本的开发计算机上的Visual Studio。