none
VC6.0 ADO如何远程连接数据库(广域网) RRS feed

  • 问题

  • 比如远程的服务器地址是114.120.124.112,登录名是test,登录密码是test。数据库名字为testDatabase.这种情况如何用_ConnectPtr来连接?
    2010年12月20日 15:11

答案

  • 您好 Shaotine

    请问您是否有对服务器上的数据库进行配置让它可以远程登录。另外,您使用的是SQL数据库吗?以下的意见我都假设您使用的是SQL数据库,对SQL数据库进行配置使它可以远程登录。

           1.  确保服务器端数据库服务已经启动

             点击Windows中的开始->控制面板->管理者工具->服务,来查看相应的数据库服务是否启动。

    2.  Windows防火墙中打开SQL Server的端口号

    很多时候我们在对数据库服务器本身做了很多次设置后仍然无法成功建立远程连接,这时就要考虑是否是防火墙在作怪。默认情况下,许多端口号和服务都会被防火墙所禁止而不能远程访问或执行,SQL Server默认的端口号也不例外。我们应该重新设置Windows防火墙给SQL Server添加例外。除非人为修改,默认情况下SQL Server的端口号是1433,将该端口号添加到Windows防火墙中。如果SQL Server存在命名实例,那么也应该将SQL Server browser添加到Windows防火墙中。

    3.  确保在SQL Server管理器中启用远程连接

    默认设置中远程连接是被禁止的如果未启用数据库远程连接,数据库实例只允许在本地进行连接而不能被远程连接

    4.  启用SQL Server Browser服务 

    如果SQL Server在安装时不是用的默认实例名而是自定义的实例名,并且没有配置特定的TCP/IP端口号,那么按照我们前面的描述SQL Server仍然不能支持远程连接。但如果你启用的SQL Server Browser服务,便可以通过动态TCP/IP端口号进行远程SQL Server连接

    5.  在防火墙中为sqlbrowser.exe应用程序创建例外

    自定义命名的SQL Server实例要支持远程连接需要启用sqlbrowser服务,Windows防火墙可能会阻止该服务执行。因此,我们必须在Windows防火墙中给sqlbrowser服务添加例外。

    谢谢,

    Lucy

     


    Lucy Liu [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.

    • 已标记为答案 Shaotine 2010年12月23日 7:22
    2010年12月23日 6:02
    版主

全部回复

  • 只要IP地址是公网IP就可以直接通过连接字符串连接
    2010年12月21日 6:48
  • 你好,能说的清楚点吗??
    2010年12月21日 13:25
  • 您好 Shatine

    您可以使用以下方法实现VC++连接ADO数据库,进行远程数据库连接。假设您使用的是SQL数据库

    _ConnectionPtr m_pConnection;
    _RecordsetPtr m_pRecordsetPtr;

    ::CoInitialize(NULL);
    m_pConnection.CreateInstance(_uuidof(Connection)) ;
    m_pRecordsetPtr.CreateInstance("ADODB.Recordset");

    CString con ;
    con.Format("driver={SQL Server};Server=%s;DATABASE=%s;UID=%s;PWD=%s",IP
    地址,SQL数据库名,用户名,密码);

    m_pConnection->Open(_bstr_t(con),"","",adModeUnknown) ;

    如果您还有什么疑问,请让我知道,如果您解决了问题请把有用的回答标记为答案。

     

    谢谢,

    Lucy

     


    Lucy Liu [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.

    2010年12月22日 3:36
    版主
  • 你好 Lucy,

    谢谢你对我帖子的关注和热心的帮助,我用了你的方法,但是还是不行。我再把我的问题描述下,我想用ADO去连接不在同一个城市的数据库服务器,用的是VC6.0.第一次搞这个,不是很熟悉。服务器我能通过远程桌面去连接,连接的地址是114.120.124.112。连接后需要用登录名为shaotine\test,密码为test,登录该台服务器。该服务器上有数据库myDataBase,是以windows authentiacation登录模式,登录名为mytesst。查了很多资料,都没有得到解决!

    2010年12月22日 12:00
  • 您好 Shaotine

    请问您是否有对服务器上的数据库进行配置让它可以远程登录。另外,您使用的是SQL数据库吗?以下的意见我都假设您使用的是SQL数据库,对SQL数据库进行配置使它可以远程登录。

           1.  确保服务器端数据库服务已经启动

             点击Windows中的开始->控制面板->管理者工具->服务,来查看相应的数据库服务是否启动。

    2.  Windows防火墙中打开SQL Server的端口号

    很多时候我们在对数据库服务器本身做了很多次设置后仍然无法成功建立远程连接,这时就要考虑是否是防火墙在作怪。默认情况下,许多端口号和服务都会被防火墙所禁止而不能远程访问或执行,SQL Server默认的端口号也不例外。我们应该重新设置Windows防火墙给SQL Server添加例外。除非人为修改,默认情况下SQL Server的端口号是1433,将该端口号添加到Windows防火墙中。如果SQL Server存在命名实例,那么也应该将SQL Server browser添加到Windows防火墙中。

    3.  确保在SQL Server管理器中启用远程连接

    默认设置中远程连接是被禁止的如果未启用数据库远程连接,数据库实例只允许在本地进行连接而不能被远程连接

    4.  启用SQL Server Browser服务 

    如果SQL Server在安装时不是用的默认实例名而是自定义的实例名,并且没有配置特定的TCP/IP端口号,那么按照我们前面的描述SQL Server仍然不能支持远程连接。但如果你启用的SQL Server Browser服务,便可以通过动态TCP/IP端口号进行远程SQL Server连接

    5.  在防火墙中为sqlbrowser.exe应用程序创建例外

    自定义命名的SQL Server实例要支持远程连接需要启用sqlbrowser服务,Windows防火墙可能会阻止该服务执行。因此,我们必须在Windows防火墙中给sqlbrowser服务添加例外。

    谢谢,

    Lucy

     


    Lucy Liu [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.

    • 已标记为答案 Shaotine 2010年12月23日 7:22
    2010年12月23日 6:02
    版主
  • 谢谢Lucy!呵呵
    2010年12月23日 7:22