none
不同的连接字符串,数据库连接超时不同,为什么? RRS feed

  • 问题

  • 不好意思,这里的主题是ADO.NET,我使用的是ADO,但是还想问问各位有没有遇到过像我的情况。数据库使用SQL SERVER 2008 R2 Express。

    我在作断网测试时,发现:

    1) data source = "ip\\instance name", connecttimeout=5s, 连接很慢,尝试5次以上,每次连接时间30s以上;

    2) data source = "server name\\instance name",connecttimeout=5s, 第一次连接,很慢,但是以后发现,若是连接不上,基本上5s左右给出提示,

    不是很明白,使用ip 与 server name 的区别。有知道的朋友,帮忙解答下,谢谢。

    2011年8月30日 1:58

答案

  • 你好,一般情况下,客户端连接服务器是以IP地址与服务器相连的;但当某些特殊情况出现时,客户端会已“服务器名”进行查找,然后校验数据库类型,再进行连接。并且在有局域网存在的情况下,IP地址和服务器名称应该都会好用,但是在Internet上似乎只能用IP地址连接。

    SQL Server 2005/2008 Express安装以后,默认情况下是禁用远程连接的。如果需要远程访问,需要手动配置。

    打开防火墙设置。将SQLServr.exe(C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe)添加到允许的列表中。

    在SQL Server Configuration Manager中设置允许远程访问。这里需要注意:
    设置TCP/IP状态为允许(Enable)状态;
    打开TCP/IP属性,设置具体的IP地址为允许(Enable)状态; 删除TCP Dynamic Port的值;修改TCP Port:1433

    重启SQLServer实例。这样就可以远程连接了。

     

    希望能帮到你。


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月31日 6:07
    版主
  • 可能的原因:

    使用IP地址定位服务器,客户端就是以Ip地址进行查找服务器,也就是说在Internet上查找。影响其的因素可能是网速,或者其他不确定因素。

    使用服务器名定位服务器,就默认的认为是在局域网内查找服务器,在局域网中找肯定是要比在Internet上面要快很多。只是个人理解。希望对你有所帮助。

     

    谢谢


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月1日 7:52
    版主

全部回复

  • 你好,一般情况下,客户端连接服务器是以IP地址与服务器相连的;但当某些特殊情况出现时,客户端会已“服务器名”进行查找,然后校验数据库类型,再进行连接。并且在有局域网存在的情况下,IP地址和服务器名称应该都会好用,但是在Internet上似乎只能用IP地址连接。

    SQL Server 2005/2008 Express安装以后,默认情况下是禁用远程连接的。如果需要远程访问,需要手动配置。

    打开防火墙设置。将SQLServr.exe(C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe)添加到允许的列表中。

    在SQL Server Configuration Manager中设置允许远程访问。这里需要注意:
    设置TCP/IP状态为允许(Enable)状态;
    打开TCP/IP属性,设置具体的IP地址为允许(Enable)状态; 删除TCP Dynamic Port的值;修改TCP Port:1433

    重启SQLServer实例。这样就可以远程连接了。

     

    希望能帮到你。


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月31日 6:07
    版主
  • 感谢回复,TCP/IP协议已经启用,远程可以访问,但是对出现的现象不很明白。

    2011年8月31日 15:00
  • 可能的原因:

    使用IP地址定位服务器,客户端就是以Ip地址进行查找服务器,也就是说在Internet上查找。影响其的因素可能是网速,或者其他不确定因素。

    使用服务器名定位服务器,就默认的认为是在局域网内查找服务器,在局域网中找肯定是要比在Internet上面要快很多。只是个人理解。希望对你有所帮助。

     

    谢谢


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月1日 7:52
    版主
  • 感谢回复,我之前有在想是不是经过DNS解析的原因,导致这个现象。

    2011年9月1日 16:17
  • 也是有可能的。


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月2日 5:37
    版主
  • ip\\instance name,port

     

    加上个端口试试?

    测试端口是否正常通信用

    cmd > telnet 127.0.0.1 1433

    如果你的SQL端口非默认请将1433改为具体的值,然后去查看测试结果

    telnet测试图:

    telnet测试畅通会显示:

    sqlcmd测试图(继承安全验证模式):

    sqlcmd测试图

    MSDN好扣门...一天就能传2个图片...........2个图片..........2个......个.........2............


    Blog:http://www.cnblogs.com/highend/ - 天杀下来的BUG,不怕有我来挡!
    2011年9月2日 14:34
  • 楼上,谢谢耐心给图。SQL SERVER 2008 R2 EXPRESS, 安装完成后,都使用动态端口。有一事不明,端口不一样还有区别吗?在连接超时的问题上,应该是没有区别的吧。呃,这个理论分析啦。没有测试过。

    2011年9月7日 15:47
  • 你好,

    请你耐心~细心地按照我的回复去逐一进行排查错误检测~

    最后你再把你出现异常的结果告知我.我在帮你分析~

     

    如果实在是言语文字之间无法表达你的异常结果请与我取的QQ联系.我远程帮你排查错误(Free now!)

    联系方式在我的签名处的博客上有填写~感谢你的反馈.


    Blog:http://www.cnblogs.com/highend/ - 天杀下来的BUG,不怕有我来挡!
    2011年9月7日 15:54