我收到了SQL Server错误:
发生了传输级错误 从接收结果时 服务器。 (提供者:共享记忆 提供者,错误:0 - 句柄是 无效。)
我正在运行Sql Server 2008 SP1,Windows 2008 Standard 64位。
这是一个.Net 4.0 Web应用程序。它发生在向服务器发出请求时。这是间歇性的。知道如何解决它吗?
答案 0 :(得分:90)
数据库连接由数据库服务器关闭。该连接在您的应用的连接池中仍然有效;因此,当您拾取共享连接字符串并尝试执行它时,无法访问数据库。如果您正在开发Visual Studio,只需关闭任务栏上的临时Web服务器即可。
如果它在生产中发生,重置您的网站的应用程序池应该回收连接池。
答案 1 :(得分:14)
在命令提示符处尝试以下命令:
netsh interface tcp set global autotuning=disabled
这会关闭网络堆栈的自动缩放功能
答案 2 :(得分:13)
我遇到了同样的问题。我重新启动Visual Studio并修复了问题
答案 3 :(得分:12)
对于那些不使用IIS的人,我在使用Visual Studio 2010进行调试时遇到了这个问题。我结束了所有调试器进程:WebDev.WebServer40.EXE解决了这个问题。
答案 4 :(得分:7)
您只需要停止ASP.NET Development Server并再次运行该项目
答案 5 :(得分:5)
传输级别错误通常与正在断开的sql server的连接有关...通常是网络。
当sql查询运行时间过长时,通常会抛出超时过期。
这么少的选择可能是:
答案 6 :(得分:4)
如果您通过Microsoft SQL Server Management连接到数据库,请关闭所有连接并重试。 连接到另一个Azure数据库时出现此错误,并在关闭时为我工作。 还是不知道为什么..
答案 7 :(得分:4)
查看详细说明此错误的MSDN blog:
删除连接
连接池在拥有后从池中删除连接 已经空闲了很长时间,或者如果小便者检测到了 与服务器的连接已被切断。
请注意,只有在尝试后才能检测到切断的连接 与服务器通信。如果发现连接为否 更长时间连接到服务器,它被标记为无效。
仅当连接池中的连接无效时才会从连接池中删除 它们被关闭或回收。
如果已经消失的服务器存在连接,请执行此操作 即使连接较小,也可以从池中获取连接 未检测到切断的连接并将其标记为无效。
这是因为检查连接的开销 仍然有效将消除有一个pooler的好处 导致另一次往返服务器。
发生这种情况时,将首先尝试使用该连接 连接已被切断,并抛出异常。
基本上你所看到的是最后一句中的异常。
从连接池获取连接,应用程序执行连接 不知道物理连接已经消失,尝试使用它是 在假设物理连接仍然存在的情况下完成。
你得到了例外。
这有几个常见的原因。
- 服务器已重新启动,这将关闭现有连接。
醇>在这种情况下,请查看SQL Server日志,通常位于: C:\ Program Files \ Microsoft SQL Server \\ MSSQL \ LOG
如果启动的时间戳是最近的,那么我们可以怀疑 这是导致错误的原因。尝试将此时间戳与 例外的时间。
2009-04-16 11:32:15.62服务器在文件中记录SQL Server消息 'C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG'。
- 某人或某事杀死了正在使用的SPID。
醇>再次,看看SQL Server日志。如果你发现了杀人,试着去 将此时间戳与例外时间相关联。
2009-04-16 11:34:09.57 spidXX进程ID XX被杀死了 主机名xxxxx,主机进程ID XXXX。
- 再次进行故障转移(例如在镜像设置中),查看SQL Server日志。
醇>如果存在故障转移,请尝试将此时间戳与时间关联 例外。
2009-04-16 11:35:12.93 spidXX镜像数据库“”正在将角色从“PRINCIPAL”更改为“MIRROR” 故障转移。
答案 8 :(得分:4)
得到这个,总是在大约5分钟的操作之后。调查并发现e1iexpress始终在失败前发出警告。这显然是与某些TCP / IP适配器有关的错误。但是从WiFi变为硬连线并没有影响它。
所以尝试了Plan B并重新启动了Visual Studio。然后它工作正常。
仔细研究后,我注意到,当工作正常时,消息The Thread '<No Name>' has exited with code 0
几乎恰好在之前的尝试中崩溃时发生。一些谷歌搜索显示,当服务器修剪线程池(等等)时,会出现该消息。
据推测,线程池中存在虚假线程,每次服务器试图“修剪”它都会导致应用程序崩溃。
答案 9 :(得分:3)
我知道这可能对每个人都没有帮助(谁知道,也许是的),但我遇到了同样的问题,经过一段时间后,我们意识到原因是代码本身的原因。
尝试访问服务器的计算机位于另一个网络中,可以建立连接但随后丢弃。
我们用来修复它的方法是向计算机添加静态路由,允许直接访问服务器而不通过防火墙。
route add –p YourServerNetwork mask NetworkMask Router
样品:
route add –p 172.16.12.0 mask 255.255.255.0 192.168.11.2
我希望它对某人有所帮助,最好有这个,至少作为线索,所以如果你面对它,你就知道如何解决它。
答案 10 :(得分:3)
当脚本因某些原因停止SQL服务时,会收到此消息。因此,如果再次启动SQL Service,可能会解决您的问题。
答案 11 :(得分:2)
我在Visual Studio 2012开发环境中遇到了同样的错误,停止了IIS Express并重新运行了应用程序,它开始工作。
答案 12 :(得分:2)
答案 13 :(得分:1)
我有同样的问题。我解决了它,截断了SQL Server LOG。 检查一下,然后告诉我们,这个解决方案是否对您有所帮助。
答案 14 :(得分:1)
对我来说,答案是将操作系统从2008R2升级到2012R2,iisreset或重启apppool的解决方案对我来说并不起作用。 我也试图改变TCP烟囱卸载设置,但我没有重新启动服务器,因为它是一个生产服务器,它也没有工作。
答案 15 :(得分:1)
对我而言,解决方案完全不同。
在我的情况下,我有一个需要datetimestamp参数的objectsource。即使ODS参数ConvertEmptyStringToNull为真,也将1/1/0001传递给SelectMethod。当该日期时间传递给sql server时,这反过来导致sql datetime溢出异常。
添加了对datetime.year!= 0001的额外检查,并为我解决了这个问题。
很奇怪它会抛出传输级别错误而不是日期时间溢出错误。 不管怎么说..
答案 16 :(得分:1)
我们最近在业务服务器和数据库服务器之间遇到此错误。 我们的解决方案是禁用&#34; IP Offloading&#34;在网络接口上。 然后错误就消失了。
答案 17 :(得分:1)
我发现此错误的原因之一是连接字符串中的“数据包大小= xxxxx ”。如果xxxx的值太大,我们将看到此错误。删除此值并让SQL服务器处理它或保持低值,具体取决于网络功能。
答案 18 :(得分:1)
答案 19 :(得分:1)
这种情况发生在数据库被删除并重新创建时,某些共享资源仍然在考虑数据库是否仍然存在,因此当您重新运行执行查询以在重新创建数据库后创建表时,错误将不会显示再次显示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查询时,只需忽略此错误即可。
答案 20 :(得分:0)
我最近遇到了同样的问题,但我无法在谷歌得到答案。 所以想在这里分享它,以便它可以在将来帮助某人。
错误:
执行查询时,查询将提供少量输出,然后它将抛出以下错误。
&#34;从接收输出时发生传输级别错误 服务器(TCP:提供程序,错误:0-指定的网络名称不再是 可用&#34;
解决方案: