一个软件,连接时出现
An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)。 我是已经将软件打包好的。可以运行setup.exe安装的,这个软件已经正常运行很久了,但最近拿到另外一台机上面去安装,安装完连接数据库时出现这个错误我在其他机器试连接了,是可以正常使用的,服务器也正常。就是那台机才会出现这个问题。请教各位达人,是什么原因呢?

解决方案 »

  1.   

    provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接 provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接 在 建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 解决方法:开始->所有程序->Ms Sql Server->配置工具->sql server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine 节点,先择"远程连接",接下建议选择"同时使用TCP/IP和named pipes",确定后,重启数据库服务就可以了. 
      

  2.   

    那台电脑可以上网的。是正常的。还有,我打包软件肯定不可能把整个SQL SERVER放进去的,我只打包了客户端连接必须的DLL。所以客户端是没有SQL SERVER的
      

  3.   

    一、网络连不上
    二、权限不足
    三、程序里面用的什么方式连接的?是不是得安装SQLSERVER 客户端?
    四、不知道了
      

  4.   

    To 2楼开始->所有程序->Ms Sql Server->配置工具->sql server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine 节点,先择"远程连接",接下建议选择"同时使用TCP/IP和named pipes",确定后,重启数据库服务就可以了. 客户端没有sql server客户端,只有连接必须的DLL。远程数据服务器是正常的。因为其他电脑可以连接到服务器这一客户端已经运行很长一段时间了,第一次遇到这问题。
      

  5.   

    1.检查你的sqlserver,是使用tcp/IP的连接吗?
    2.检查端口
    3.检查连接字符串
      

  6.   

    this.ConnString = "Data Source=IP Address;User ID=name;Password=pwd;DataBase=db";连接字符串
      

  7.   

    To 8楼
    是用TCP/IP的这一软件不是第一次运行,此前已经在多台电脑安装过,都没有出现过这问题。现在我在其他电脑运行,仍然正常。
      

  8.   

    我看那台客户机上安装了很多软件,比如证券软件,企业管理软件等,我知道某此软件安装的时候是会在本地安装SQL Server的。但我没找到。初步怀疑是与其他软件所安装的Sql server有冲突。以前安装过的电脑上面都比较干净,没有这些软件。客户去买新电脑了,等待新电脑验证。
     可以说:服务器是没有问题的。因为其他电脑的客户端都可以正常连接到服务器,使用正常。
      

  9.   

    SQL Server 是不是你SETUP安装的,如果不是请检查其配置。
      

  10.   

    To 13楼我所打包的软件是没有Sql Server的客户端的,里面只有连接Sql server所必须的DLL。好像有一个专有名词来的,我忘了叫什么。我所打包安装的软件是不会带有SQL SERVER客户端的
      

  11.   

    话说如果是自己打包的Setup.exe,那应该会手动配置才对。另外如果是软件冲突,多数在JAVA里会遇到,因为不同版本的JAVA执行会有不同的效果。你也可以检查系统环境变量里的Path变量。
      

  12.   

    一、其他电脑可以连接SQLSERVER?如果是,应该不是程序和server配置问题
    二、你装个简易的SQL客户端工具直接连接试试。多台机器测试下,确定是否是机器问题。
      

  13.   

    To 15楼我打包时没有放入整个Sql server安装程序,我是用IS打包的,里面只有我的软件,.net framework2跟sql server连接服务器的几个DLL。不明白你所说的手动配置是什么。安装过程中,如果系统没有安装framework会提示安装,另就是只有选择安装路径,你所说的配置是sql server的配置?这个没有。
    这个打包好的软件以前已经在多台客户端运行安装过,是没有问题的。呵呵,所以我觉得setup.exe是没有什么问题的。在这台出问题的电脑安装过程也正常
      

  14.   

    To 19是的。现在那客户去买新电脑了。我目前怀疑是因为现在那台机安装了太多的软件,什么企业管理呀,证券软件杂七杂八的,我不敢保证那些软件没有在机子上面安装Sql server。不过我在添加/删除程序里面也没有找到。有可能是冲突
      

  15.   

    最后给一点提示,你从他客户机ping服务器和从服务器ping客户机都能通吗?特别是如果他本机的SERVER服务被关闭的话,ping只能单项通,服务器到他是不通的。还有网卡中的协议是否多出来了第三方过滤协议等。
      

  16.   

    .net的程序,是不被允许连接远程数据库的,只能连接本机或局域网的数据库。
    所以,建议你在远程的数据库服务器上,或其局域网内部署一个webservice来供你的远程调用。
      

  17.   

    本地.net程序连接远程数据库,其实这在部署上也是存在问题的。
    所以,你需要按照我上面说的,优化你们的部署架构。
    其实这样是在强调应用服务器和数据库服务器一定要“近”。