ODBC怎么连接远程数据库

时间:2021-10-02 21:53:58
大家好,我的程序使用了数据库,用的是SQL Server 2008 R2,在MFC工程中通过添加ODBC使用者类让VS自动生成了CRecordset类,默认的连接为:
return _T("DSN=RoadNetData;Trusted_Connection=Yes;
APP=Microsoft\x00ae Visual Studio\x00ae 2010;
WSID=LEIPENG-PC;DATABASE=RoadNetData;QuotedId=No");


现在我想把程序放在其他电脑上,远程访问数据库,例如访问我现在机子上的SQL Server,那么这个CString CPointTable::GetDefaultConnect()该怎么改呢?

我局域网的IP为:10.190.0.7,这样改了后我在其他电脑上可以操作此数据库。


return _T("ODBC;DSN=RoadNetData;Driver={SQL Server};Source=10.190.0.7;UID=sa;
PWD=aa;APP=Microsoft\x00ae Visual Studio\x00ae 2010;WSID=LEIPENG-PC;DATABASE=RoadNetData");


可是为什么我改成这样后提示无法连接,请问连接语句怎么写才能连接远程数据库呢?
我的SQL Server数据库名字是LEIPENG-PC,在数据库属性中查看的。我在我的电脑上配置了ODBC数据源DSN=RoadNetData,SQL Server中要连接的数据库名也是RoadNetData。

10 个解决方案

#2


引用 1 楼 VisualEleven 的回复:
http://bbs.csdn.net/topics/330065430
类似的帖子~


那个帖子我看了,可是那样写不知道为什么不能访问,所以没办法了,发贴求助。。。

#3


没人帮帮忙么???

#4


到这个网站找下对应的 连接字符串即可。

#5


连接字符串="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MachineTool;Data Source=10.7.1.119,1433";
在别的计算机上安装SQL SERVER客户端,用客户端连接服务器试试,能连上后再用你的程序试试,先关闭防火墙,不然访问不了,两台计算机都要关闭防火墙

#6


服务器不定期得运行侦听程序,客户端程序的端口号还得对,不能两台计算机都关闭这个端口号或被别的程序占用这个端口号

#7


引用 4 楼 zyq5945 的回复:
到这个网站找下对应的连接字符串即可。


我用的MFC,网站上给的是C#的连接字符串,没找到MFC的,那个可以直接用吗?另外,我本地机子上是用的ODBC数据源来访问的,那么我要在其他电脑上来访问的话是不是直接和本机的数据库直接连接就行,不用再通过ODBC?还是?不好意思,这块我不懂,还望指教!谢谢

#8


引用 5 楼 hdg3707 的回复:
连接字符串="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MachineTool;Data Source=10.7.1.119,1433";
在别的计算机上安装SQL SERVER客户端,用客户端连接服务器试试,能连上后再用你的程序试试,……


这样在不行呀!怎么写呢?我试了好多了,跪求大神帮忙!用MFC自动生成的ODBC使用者,默认生成的代码是:
CString CPointTable::GetDefaultConnect()
{
    return _T("DSN=RoadNetData;Trusted_Connection=Yes;APP=Microsoft\x00ae Visual Studio\x00ae 2010;WSID=LEIPENG-PC;DATABASE=RoadNetData;QuotedId=No");
}
CString CPointTable::GetDefaultSQL()
{
return _T("[dbo].[PointTable]");
}

用的是ODBC,现在我要让程序在其他机子上也能操作这个数据库,应该就只需要修改那个GetDefaultConnect()里的字符串吧,怎么改呢? 谢谢!!!

#9


自己解决了,原来加的多了,而且要在防火墙中增加新的入站规则,监测1433端口。

#10


请问楼主怎么解决的这个问题啊?

#1


#2


引用 1 楼 VisualEleven 的回复:
http://bbs.csdn.net/topics/330065430
类似的帖子~


那个帖子我看了,可是那样写不知道为什么不能访问,所以没办法了,发贴求助。。。

#3


没人帮帮忙么???

#4


到这个网站找下对应的 连接字符串即可。

#5


连接字符串="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MachineTool;Data Source=10.7.1.119,1433";
在别的计算机上安装SQL SERVER客户端,用客户端连接服务器试试,能连上后再用你的程序试试,先关闭防火墙,不然访问不了,两台计算机都要关闭防火墙

#6


服务器不定期得运行侦听程序,客户端程序的端口号还得对,不能两台计算机都关闭这个端口号或被别的程序占用这个端口号

#7


引用 4 楼 zyq5945 的回复:
到这个网站找下对应的连接字符串即可。


我用的MFC,网站上给的是C#的连接字符串,没找到MFC的,那个可以直接用吗?另外,我本地机子上是用的ODBC数据源来访问的,那么我要在其他电脑上来访问的话是不是直接和本机的数据库直接连接就行,不用再通过ODBC?还是?不好意思,这块我不懂,还望指教!谢谢

#8


引用 5 楼 hdg3707 的回复:
连接字符串="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MachineTool;Data Source=10.7.1.119,1433";
在别的计算机上安装SQL SERVER客户端,用客户端连接服务器试试,能连上后再用你的程序试试,……


这样在不行呀!怎么写呢?我试了好多了,跪求大神帮忙!用MFC自动生成的ODBC使用者,默认生成的代码是:
CString CPointTable::GetDefaultConnect()
{
    return _T("DSN=RoadNetData;Trusted_Connection=Yes;APP=Microsoft\x00ae Visual Studio\x00ae 2010;WSID=LEIPENG-PC;DATABASE=RoadNetData;QuotedId=No");
}
CString CPointTable::GetDefaultSQL()
{
return _T("[dbo].[PointTable]");
}

用的是ODBC,现在我要让程序在其他机子上也能操作这个数据库,应该就只需要修改那个GetDefaultConnect()里的字符串吧,怎么改呢? 谢谢!!!

#9


自己解决了,原来加的多了,而且要在防火墙中增加新的入站规则,监测1433端口。

#10


请问楼主怎么解决的这个问题啊?