在向server发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的还有一端上无不论什么进程。

时间:2023-03-05 17:24:37

作者:卿笃军

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

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

错误内容:

在向server发送请求时发生传输级错误。

(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 指定的值。该连接就会被销毁。 这在聚集配置中非常实用(用于强制执行执行中的server和刚置于联机状态的server之间的负载平衡)。零(0)值将使连接池具有最大的连接超时。





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

參考文献:百度知道.在向server发送请求时发生传输级错误。 (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.