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

Chu*_*way 161 sql-server-2008

我收到一个SQL Server错误:

从服务器接收结果时发生传输级错误.(提供者:共享内存提供者,错误:0 - 句柄无效.)

我正在运行Sql Server 2008 SP1,Windows 2008 Standard 64位.

这是一个.Net 4.0 Web应用程序.它发生在向服务器发出请求时.这是间歇性的.知道我怎么解决它?

小智 92

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

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

  • 在我的特殊情况下,我在连接字符串中设置了“ MultipleActiveResultSets = True”设置,导致相同的错误。 (2认同)

Sim*_*mmo 17

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

netsh interface tcp set global autotuning=disabled
Run Code Online (Sandbox Code Playgroud)

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

  • 你能提供一些关于实际工作的细节吗?是否有任何理由反对在全球设定这样的价值? (20认同)

pir*_*ris 14

我有同样的问题.我重新启动Visual Studio并修复了问题


jth*_*_92 12

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


Mis*_*ish 7

您所需要的只是停止ASP.NET Development Server并再次运行该项目


Rah*_*thi 7

查看MSDN 博客,其中详细说明了此错误:

\n\n
\n

删除连接

\n\n

连接池程序会在连接长时间空闲后,或者连接池程序检测到与服务器的连接已断开时,将其从池中删除。

\n\n

请注意,只有在尝试与服务器通信后才能检测到断开的连接。如果发现连接不再连接到服务器,则会将其标记为无效。

\n\n

仅当无效连接被关闭或回收时,才会从连接池中删除它们。

\n\n

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

\n\n

之所以出现这种情况,是因为检查连接是否仍然有效的开销会导致另一次与服务器的往返,从而消除池化器的好处。

\n\n

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

\n\n

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

\n\n

从连接池中获取连接,应用程序不知道物理连接已消失,尝试使用它是在假设物理连接仍然存在的情况下进行的。

\n\n

你得到了例外。

\n\n

造成这种情况有几个常见原因。

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

在这种情况下,请查看 SQL Server 日志,通常位于:\n C:\\Program Files\\Microsoft SQL Server\\\\MSSQL\\LOG

\n\n

如果启动时间戳非常近,那么我们可以怀疑这就是导致错误的原因。尝试将此时间戳与异常时间相关联。

\n\n

2009-04-16 11:32:15.62 服务器在文件\n \xe2\x80\x98C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\LOG\\ERRORLOG\ 中记录 SQL Server 消息xe2\x80\x99。

\n\n
    \n
  1. 有人或某物杀死了正在使用的 SPID。
  2. \n
\n\n

再次查看 SQL Server 日志。如果您发现了杀戮,请尝试将此时间戳与异常时间相关联。

\n\n

2009-04-16 11:34:09.57 spidXX 进程 ID XX 被主机名 xxxxx、主机进程 ID XXXX 杀死。

\n\n
    \n
  1. 再次发生故障转移(例如在镜像设置中),请查看 SQL Server 日志。
  2. \n
\n\n

如果存在故障转移,请尝试将此时间戳与异常时间相关联。\n

\n\n

2009-04-16 11:35:12.93 spidXX 镜像数据库 \xe2\x80\x9c\xe2\x80\x9d 正在将角色从 \xe2\x80\x9cPRINCIPAL\xe2\x80\x9d 更改为 \xe2\x80\x9cMIRROR\ xe2\x80\x9d 由于\n 故障转移。

\n
\n


NG.*_*NG. 6

传输级别错误通常与到sql server的连接断开有关……通常是网络连接。

通常,当SQL查询运行时间过长时,将引发Timeout Expired。

很少有这样的选择:

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


小智 5

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