积极答复者
VC6.0 ADO如何远程连接数据库(广域网)

问题
答案
-
您好 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
全部回复
-
您好 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.
-
您好 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