none
江湖救急,数据库服务器配置问题??? Web访问不到。。。 RRS feed

  • 问题

  • A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    问题一:

    所用数据库为“SQLServer2008”

    站点在Web服务器上,而数据库在数据库服务器上,“Asp.Net”页面访问不到“数据库服务器上”数据库,提示了如上所示的错误,怎么回事???

    应该怎样修正???

    数据库配置如下:

    1、管道配置

    2、允许远程连接

    3、数据库服务器上的防火墙已经关闭

    问题二:还有Asp.net站点访问,还需要配置什么呢???     外围配置器吗,用的数据库是SqlServer2008???          

    问题三:Web服务器上的“SQL   Server  Management  Studio”客户端,远程联系数据库服务器是没有问题的。但是,Web网站访问就不行着,这是为什么呢??? 


    Science and technology is my lover.

    2012年9月28日 8:16

答案

全部回复

  • 数据库连接字符串:

    <connectionStrings>
    <add name="MyConnString" connectionString="server=192.168.168.3;database = Test;uid=sa;pwd=123456@abcd;" />
    </connectionStrings>

    问题四:是因为密码中有一个“@”字符吗???

    Science and technology is my lover.

    2012年9月28日 8:34
  • provider: Named Pipes Provider, error: 40

    好像是用NAMED PIPE连接的,你试过直接用TCP/IP连接吗? 另外直接用SSMS会不会报错?

    2012年9月28日 8:37
  • 第2个图中的 TCP 属性中看一下使用的端口,建议配置为固定端口(这个设置要重新启动服务)

    另外,你的连接,使用的是 ip ,还是计算机名,如果是计算机名,先 ping 一下,看能否 ping 通

    在你的 asp.net 服务器上,测试一下是否可以访问 sql 的端口(第2个图中的 tcp 属性中):

    telnet  服务器ip 端口

    如果这个能够通,那应该没有问题,如果不通,那么应该检查网络和服务器配置

    2012年9月28日 9:59
  • 因为在局域网中,SQL服务器默认优先使用命名管道,所以在web服务器使用SSMS可以成功连接数据库不出奇

    我之前做的一份总结,LZ可以参考一下:

    --TCP/IP协议连接失败检测

    --如果新添加TCP/IP协议,需要重启SQL才能生效。

    --如果SQL服务器的IP地址改变,重启SQL或者重启电脑就可以了

    --在配置管理器里默认的TCP/IP的端口号是1433。
    --你可以改变这个默认值为别的端口号,只要该端口号没有被系统或别的
    --应用程序占用即可。

    --使用netstat命令监听SQL监听的端口
    --netstat /ano
    --根据最后一列pid找到SQL的进程
    --列出系统中所有使用中的端口号

    --TCP:1433 是SQL服务自己侦听的  UDP:1434是SQL Browser侦听的

    ---------------------客户端的TCP/IP协议配置-----------------------------------------
    --cliconfg客户端网络实用工具配置启用TCP/IP协议
    --解决步骤:

    --1、是否监听TCP/IP  看SQL的errorlog
    --Server is listening on [ 'any' <ipv4> 1433].
    --如果没有监听,请运行sernetcn.exe确认是否配置好SQL监听TCP/IP协议

    --2、验证服务器监听的TCP/IP端口和客户端配置的默认值或别名中指定的值一致

    --3、检查网络连通性
    --要ping通IP地址  ping通SQL服务器的计算机名
    --如果ping计算机名有问题,说明DNS或者WINS服务器有问题


    --4、使用telnet命令检查SQL监听端口
    --telnet 192.168.1.100 1433
    --如果成功,那么结果是一个只有光标在闪的黑色屏幕。如果不成功,你会得到出错信息

    --5、检查登录用户SQL访问权限


    --6、TCP/IP端口绑定失败 
    --如果配置的静态端口被其他服务或应用程序占用,SQL将无法在该端口绑定监听。
    --在SQL日志中会有如下信息:
    --server  supersocket  info:bind  failed  on TCP port 1433

    --这时候可以指定其他静态端口,或者停止一些服务或应用程序后重启


    --7、检查连接使用的协议
    SELECT net_library,hostname,program_name,nt_domain,nt_username,loginame from sys.sysprocesses WHERE spid=@@SPID


    --8、访问防火墙后面的SQL
    --必须配置防火墙以允许从*ANY*到1433的通信,以及从1433到*ANY*的通信,其中*ANY*是大于1024的端口
    --*ANY*->1433
    --1433->*ANY*

    --如果SQL监听的不是1433端口,那么要把上面的端口做相应的变化,如果是命名实例并使用动态端口,
    --还必须打开UDP1434端口
    --*ANY*->1434
    --1434->*ANY*


    --9、在SSMS中指定连接的协议和端口
    --默认实例
    --tcp:MySQLServer,1433
    --命名实例
    --tcp:MYSQLServer\inst1,1433

    --10、最后一招
    --使用network monitor工具捕捉网络包分析。有些连接和认证问题常规手段不能解决
    --使用network monitor来分析问题的直接原因。


    给我写信: QQ我:点击这里给我发消息

    2012年9月28日 16:13
  • 谢谢各位大师,问题是因为“Sa账户没有映射到指定数据库”。

    但是,给“Sa”账户添加”数据库映射“的时候却出现了问题。

    问题一:什么叫做“无法使用特殊主体‘Sa’”???    为什么无法将数据库“GLLGCEMS”的映射加给“Sa”账户。

    问题二:“Sa”账户不是默认可以管理所有数据库的吗?   为什么没有映射所有数据库呢?


    Science and technology is my lover.

    2012年9月29日 1:54
  • sa has full rights in sql, don't need be in any db.
    2012年9月29日 1:58
  • sa默认已经有对所有数据库的访问权限,不需要画蛇添足地进行数据库映射

    给我写信: QQ我:点击这里给我发消息

    2012年9月29日 2:23