首页 > 代码库 > 在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。

在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。

作者:卿笃军

原文地址:http://blog.csdn.net/qingdujun/article/details/36425825


SQL Server 2008 + VS2010 用C#编写的代码,进行数据库还原的时候,出错:

错误内容:

在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。

解决方法:

将SQL链接语句构造成如下:

string strLink = @"server=.;database=DataBaseName;uid=sa;pwd=123456;pooling=false";
前面的还是一样的,只是在后面添加一个pooling=false;不使用连接池。



————————————————————————————————————————

分析说明:

其实我们一直在使用SqlServer的连接池。在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用。


  与连接池相关的两个重要参数是 Min Pool Size和 Max Pool Size ,分别是池中的最小连接数和池中的最大连接数,默认值分别是0和100。


  在我们创建一个连接的实例,并调用Open()方法时,连接池管理程序会在连接池中找到一个可用的连接;当调用Close()方法时,连接池管理程序又将连接返回到连接池中,以供下一次调用Open()方法时使用。


  另外,连接字符串中的 Connection Lifetime 为连接池中的连接设置了生命周期。它的默认值为0。当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。 这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。零(0)值将使连接池具有最大的连接超时。


通过上面的了解,我们可以看出,即使是最简单的连接字符串,也在使用连接池。



参考文献:百度知道.在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何[CP/OL].http://zhidao.baidu.com/question/1573456795577498260.html,2013-09-27/2014-07-02.

Qi Fei‘s Blog.Sql Server 连接池及其用法[CP/OL].http://www.cnblogs.com/youring2/archive/2011/06/18/2084442.html,2011-06-18/2014-07-02.