从服务器接收结果时发生了传输级错误

我收到一个 SQLServer 错误:

发生了传输级错误 当接获环境监察及审核委员会的审核结果时 (提供者: 共享内存) 提供程序,错误: 0-句柄是 无效)

我正在运行 SqlServer2008SP1,Windows2008Standard64位。

这是一个。Net 4.0 web 应用程序。当向服务器发出请求时会发生这种情况。间歇性的。知道我该怎么解决吗?

334204 次浏览

在命令提示符下尝试以下命令:

netsh interface tcp set global autotuning=disabled

这将关闭网络堆栈的自动伸缩功能

如果你通过 Microsoft SQL Server 管理连接到你的数据库,关闭所有连接并重试。 连接到另一个 Azure 数据库时出现这个错误,关闭它时为我工作。 还是不知道为什么. 。

当脚本使 SQLService 由于某些原因停止时,您会收到此消息。因此,如果您再次启动 SQL 服务,也许您的问题将得到解决。

传输级错误通常与到中断的 sql 服务器的连接有关... ... 通常是网络。

当 sql 查询运行时间过长时,通常会引发 TimeoutExpered。

因此,几乎没有什么选择可以是:

  1. 检查 VPN (如果使用)或任何其他工具中的连接
  2. 重新启动 IIS
  3. 重启机器
  4. 优化 sql 查询。

对于那些不使用 IIS 的用户,我在使用 VisualStudio2010进行调试时遇到了这个问题。我结束了所有的调试器进程: WebDev。WebServer40.EXE 解决了这个问题。

数据库连接由数据库服务器关闭。连接在应用程序的连接池中仍然有效; 因此,当您拾取共享连接字符串并尝试执行它时,无法到达数据库。如果您正在开发 VisualStudio,只需关闭任务栏上的临时 Web 服务器即可。

如果它发生在生产中,重置您的网站应用程序池应该回收连接池。

我在 VisualStudion2012开发环境中得到了相同的错误,停止了 IISExpress 并重新运行应用程序,它开始工作了。

我也遇到过同样的问题,我解决了它,截断了 SQL Server 的日志。 检查这样做,然后告诉我们,如果这个解决方案帮助你。

您所需要的只是停止 ASP.NET 开发服务器并再次运行该项目

我也有同样的问题。我重新启动了 VisualStudio,解决了这个问题

对于我来说,答案是升级的操作系统从2008R2到2012R2,解决方案的 iisreet 或重新启动 apppool 不适合我。 我还试图关闭 TCP Chimney Offload 设置,但是我没有重新启动服务器,因为它是一个生产服务器,它也不能工作。

我知道这可能不会帮助每个人(谁知道呢,也许是的) ,但是我也有同样的问题,过了一段时间,我们意识到原因是代码本身之外的东西。

计算机试图到达服务器,在另一个网络,连接可以建立,但随后中断。

我们过去解决这个问题的方法,是给计算机添加一个静态路由,允许直接访问服务器,而不必通过防火墙。

route add –p YourServerNetwork mask NetworkMask Router

样本:

route add –p 172.16.12.0 mask 255.255.255.0 192.168.11.2

我希望这能帮到某人,最好能有这个,至少作为一个线索,所以如果你面对它,你知道如何解决它。

总是在手术5分钟后拿到这个。调查发现,e1iExpress 的警告总是在故障发生之前发生。这显然是与某些 TCP/IP 适配器有关的错误。但是从 WiFi 改为硬连接并没有影响到它。

所以尝试了 B 计划并重新启动了 Visual Studio,然后它工作得很好。

在进一步的研究中,我注意到,当正确工作时,消息 The Thread '<No Name>' has exited with code 0发生的时间几乎正好是前几次尝试中运行崩溃的时间。一些谷歌搜索显示,当服务器正在整理线程池时(还有其他一些事情) ,这条消息就会出现。

据推测,线程池中存在一个假线程,每次服务器试图“修剪”线程时,它都会关闭应用程序。

对我来说,解决办法完全不同。

在我的例子中,我有一个 objectsource,它需要一个 datetimeamp 参数。即使 ODS 参数 ConvertEmptyStringToNull 为 true 1/1/0001也被传递给 SelectMethod。这反过来又会在将该 datetime 传递给 sql 服务器时导致 sql datetime 溢出异常。

增加了对 datetime.year! = 0001的额外检查,这为我解决了问题。

奇怪的是,它会抛出传输级错误而不是日期时间溢出错误。 不管怎样。

我们最近在业务服务器和数据库服务器之间遇到了这个错误。 我们的解决方案是在网络接口上禁用“ IP 卸载”。 然后错误就消失了。

我发现这个错误的原因之一是连接字符串中的“ 数据包大小 = xxxxx”。如果 xxxx 的值太大,我们将看到这个错误。根据网络功能的不同,可以删除此值并让 SQL 服务器处理它,也可以保持较低的值。

我最近也遇到了同样的问题,但是我无法在谷歌上找到答案。 所以想在这里分享它,以便将来可以帮助别人。

错误:

当执行查询时,查询只提供很少的输出,然后它将抛出以下错误。

”接收来自 服务器(TCP: 提供程序,错误: 0指定的网络名不再 可供选择”

解决方案:

  1. 检查链接服务器的提供程序
  2. 在该提供程序属性中,为该特定提供程序启用“ Allowinprocess”选项以修复问题。

当我试图恢复一个 SQL 数据库并在 Options选项卡中选中“复选框”时,发生了这种情况,

enter image description here

因为它是一个独立的数据库服务器只是关闭 SSMS 和重新打开它为我解决了这个问题。

在我的情况下,“ SQLServer”服务器服务停止。当我重新启动使我能够运行查询并消除错误的服务时。

检查您的查询以查明为什么该查询使此服务停止也是一个好主意

enter image description here

当数据库被删除并且重新创建一些共享资源时,考虑到数据库仍然存在,这种情况就会发生,所以当重新创建数据库后重新运行执行查询以在数据库中创建表时,错误将不会再次显示,并且将显示 Command(s) completed successfully.消息而不是错误消息 Msg 233, Level 20, State 0, Line 0 A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

在删除和重新创建数据库并重新执行 DDL 查询时,只需忽略此错误。

看看 MSDN 博客,它详细说明了这个错误:

删除连接

连接池在连接具有 长时间处于空闲状态,或者如果池程序检测到 与服务器的连接已被切断。

请注意,只有在尝试之后才能检测到断开的连接 与服务器通信。如果找到连接,则表示没有 连接到服务器的时间越长,它就被标记为无效。

只有在下列情况下才从连接池中删除无效连接 它们被关闭或回收。

如果存在到消失的服务器的连接,则此 即使连接池也可以从池中绘制连接 未检测到断开的连接并将其标记为无效。

这是因为检查连接的开销 是否仍然有效将消除拥有一个 pooler 的好处 导致到服务器的另一个往返行程发生。

发生这种情况时,第一次尝试使用该连接将检测到 连接已被切断,并引发异常。

基本上你看到的就是最后一句中的异常。

从连接池获取连接,则由应用程序执行 不知道物理连接已经消失,尝试使用它是 假设物理连接仍然存在。

你得到了你的例外。

这里有一些常见的原因。

  1. 服务器已重新启动,这将关闭现有的连接。

在这种情况下,查看 SQLServer 日志,通常可以在以下位置找到: C: Microsoft SQL Server MSSQL 日志的程序文件

如果启动的时间戳是最近的,那么我们可以怀疑 这就是导致错误的原因。尝试将这个时间戳与 例外的时间。

2009-04-1611:32:15.62 Server 在文件中记录 SQL Server 消息 “ c: 程序文件 Microsoft SQL Server 为 MSSQL. 1 MSSQL 日志错误日志”。

  1. 有人或者有东西杀死了正在使用的 SPID。

再次查看 SQLServer 日志 将此时间戳与异常时间相关联。

2009-04-1611:34:09.57 spidXX 进程 ID XX 被 主机名 xxxxx,主机进程 ID XXXX。

  1. 再次出现故障转移(例如在镜像设置中) ,请查看 SQLServer 日志。

如果存在故障转移,请尝试将此时间戳与时间相关联 例外。

2009-04-1611:35:12.93 spidXX 镜像数据库“”由于 故障转移。