代码之家  ›  专栏  ›  技术社区  ›  Scott Lawrence

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

  •  6
  • Scott Lawrence  · 技术社区  · 17 年前

    以下是完整的错误: 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 回复  |  直到 10 年前
        1
  •  5
  •   David Basarab    15 年前

    我很久以前就遇到过这个。底线是你的可用端口快用完了。

    首先确保调用应用程序已启用连接池。

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

    发生的情况是,如果池关闭,那么每次调用都会占用一个端口,默认情况下,端口过期需要4分钟,而您的端口即将用完。

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

    当我遇到这个错误时,连接池关闭了,每当在网站上加载一个合适的负载时,它就会导致这个问题。我们没有看到它在开发中,因为最大负载是2或3个人,但一旦数字增长到10以上,我们就会看到这个错误。我们启用了池,它解决了这个问题。

        2
  •  2
  •   JasonS    17 年前

    我以前也遇到过这样的月亮。不过,对于@longhorn213的解释并不打折,但我们却有着完全相反的行为。我们在开发和测试中收到了错误,但在明显负载更大的生产中没有收到错误。我们最终容忍了发展中的这个问题,因为它是零星的,并没有实质性地减缓进展。我认为这个错误可能有几个原因,但我自己始终无法找出原因。

        3
  •  1
  •   Sir Rippov the Maple    17 年前

    我们还遇到了这个错误,并发现我们正在终止来自数据库服务器的SQL server连接。客户端应用程序认为连接仍然处于活动状态,并尝试使用该连接,但由于连接已终止而失败。

        4
  •  0
  •   Jay Mooney    17 年前

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

        5
  •  0
  •   Jim Reineri    14 年前

    我们已经多次看到这一错误,并尝试了不同的解决方案,取得了不同的成功。一个常见的基本主题是,出现错误的系统内存不足。如果承载Sql server的服务器正在运行任何其他非OS进程,则尤其如此。默认情况下,如果留给其他进程/驱动程序的内存很少,SQL Server将获取它所能获取的任何内存。这可能会导致不稳定的行为和断断续续的消息。将SQL Server配置为最大内存,这是一个很好的做法,这就留下了一些余地,还有其他可能需要它的进程。示例:在同一台计算机上运行SQL Server developers版本副本的开发人员计算机上的Visual Studio。

    推荐文章