none
不知道大家有没有遇到这种情况 RRS feed

  • 常规讨论

  • SQL2005企业版,Windows2003企业版

    数据库跟我们的程序都在同一台电脑,我们的程序使用包含两个系统,一个系统使用delphi开发(使用odbc连接数据库),

    一个系统使用C#开发(使用sqlclient连接数据库)

    ODBC的连接使用local


    然后客户那边使用的是局域网,当重启路由器的时候,delphi那个系统就断开了数据库链接

    听经理说,delphi系统是程序一打开就open 数据库连接直到程序关闭不像C#那样open -》执行数据库操作-》close

    现在把odbc配置那里 改为127.0.0.1就没有出现这种情况了

    但是之前我们一直都是使用local来连接数据库的,怎麽到现在才出现这个问题呢?

    初步估计是,当电脑的ip地址改动了之后,他就会数据库连接失败,例如重启路由器,会使电脑的ip地址改动或者重新获取

    使用local的话,估计SQLSERVER使用了操作系统的dnsclient服务来询问ip地址,而127.0.0.1无论怎麽改他都不变的


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

    2013年1月13日 7:21

全部回复

  • 由于不在客户那里,截图先用自己个人电脑的了,我自己的电脑是Windows7

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

    2013年1月13日 7:22
  • 可以使用机器名称啊,这样IP变就不会有问题了。另外数据库服务器的IP也使用动态的?
    2013年1月13日 8:26
  • 电脑的网卡的ip设置为 自动获取

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

    2013年1月13日 10:13
  • 服务器的地址都应该为静态的,否则的话很容易出问题。 
    2013年1月13日 12:38
  • 静态IP也是一个思路,但是如果局域网里的网段改变了还是不能解决问题比如设置静态ip是:192.168.1.80,那么如果客户更改了路由器的网段比如:192.168.2.1,他要在别的机器查询我们系统的数据就要改电脑的ip地址,而且也有可能会造成ip冲突因为路由器不知道已经有ip地址是192.168.1.80的电脑,他从地址池里随便拿一个ip地址分配给局域网里的电脑

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


    2013年1月13日 13:17
  • Why don't just use sql instance name? Works as long as sql browser service is running.
    2013年1月13日 18:46
  • 安装的时候使用的是默认实例 不是命名实例

    现在只是使用过(local) 没有使用计算机名 或者.

    我觉得就算使用计算机名 或者 一个点 .

    计算机名也是要查询的可能查询wins服务

    而一个点没有测试过


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




    2013年1月14日 2:17
  • 考虑过用命名管道来连接数据库,但是经理说改动的地方太多

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


    2013年1月14日 2:40