为什么刚刚安装操作系统的机器,用我的程序连接局域网内的另一机器内的SQL数据库时,
总是连接失败!用ODBC连接一下就可以了!好象是必须有一次数据连接,才可以正常连接。
我用的连接串是:
Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;
User ID=用户;Initial Catalog=数据库;Data Source=服务器不知道大家有没有碰到这种情况!

解决方案 »

  1.   

    Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;
    User ID=用户;Initial Catalog=数据库;Data Source=服务器IP  //Use IP
      

  2.   

    检查计算机名称,看看对方数据服务器的安全性是选用的什么登陆方式,再看看你的 user id 是不是对方数据库的登陆用户
      

  3.   

    问题在于,只要我用 ODBC 数据源连接一下,就可以用我的程序成功连接。并且,在此以后,总能正常连接。
      

  4.   

    检查一下你的SQL 服务器检证方式
      

  5.   

    Data Source=服务器名 也可以
      

  6.   

    大家好象没有理解我的意思!我的连接串没有问题,
    问题在于我第一次连接数据库时连接不成功,
    而通过控制面板中的 ODBC 数据源连接一下数据库,
    再用我的程序就可以连接成功,而我并没有通过 ODBC 建立的数据源连接数据库。
    在此期间,我的程序没有做任何变动。是不是很怪的问题。
      

  7.   

    你试过先不用通过odbc数据源先建立连接 而是先通过网上邻居访问另一个有sql的机器然后在运行一下你的程序是否成功?
      

  8.   

    如果是ADO的连接方式,应该刷新一下SQL服务器
    如果是BDE的连接方式,应该首先设置BDE别名
      

  9.   

    应该 是 连接 服务器 超时 所至直接 使用 Data Source= IP 可以 减少 网络连接的延时
      

  10.   

    Conn.ConnectionString :='Provider=SQLOLEDB;Persist Security Info=true;User '
                            +'ID='+strUserID+';Initial Catalog='
                            +strBName+';Data Source='
                            +strIP+','+strPort+';Network Library=dbmssocn ';  
                            //加上这句Network Library=dbmssocn 
      Conn.LoginPrompt:= false ;
      Conn.ConnectionTimeout:=60;
      Conn.Open(strUserID,strPass);
      

  11.   

    这可能客户端连接SQL Server默认采用Named pipes连接而不是采用TCP/IP连接。当在ODBC数据源中更改为TCP/IP连接后就工作正常!
      

  12.   

    同意: Jumpi(Delphiing)  兄弟的说法,就是这个原因
      

  13.   

    我也碰到过,只要安装mdac,现在最新是2.8,就ok了
      

  14.   

    大哥们,我前几天也遇到了同样的问题.
    你先确认:Server是否采用Windows验证,
    现象:用IP地址也不能联上服务器(用计算机名更不行),在ODBC里测试一下就行了,或者在ADOConnection编辑字符串时测试一下也就通了,但是重新启机后问题依旧.
    解决方法:客户端用一个服务端的合法用户登录客户端(也就是服务端也有一个同样的用户名和密码的用户).