当前位置:主页>仓库管理软件> 列表

delphi的ado连接数据库问题 找库存管理软件

进销存软件版1楼: 各位大侠有没有碰到过这类事:
我用ADO连MS SQL2000数据库,服务器为win2003或win2000 server,为什么每次我的客户端连接服务器时,都要通过网上邻居先进入服务器,软件才能连得上呢?而且服务器一定要开共享才行!不知各位大侠有没有碰到过类似的情况.我试过用我的客户端软件连远程(即公网)服务器,当客户端平台为win2003或xp的SP2时没问题.但如果是win2000就不行.郁闷啊!
ADO可真是垃圾呀,我起先考滤是ado版本的问题,但升级了ado以后还是不行,后来想了个笨办法就是在win2000的客户端上装一个SQL2000,再卸掉,这样就可以了.或者装一下delphi7再卸掉,这样也可以连得上了.唉,我的ADO呀!请各位大侠帮忙解决此问题,本人不胜感激!

2楼: win2000默认是管道进入,而win2003/xp是tcp/ip进入的,而用管道进入的时候需要先建立好连接,你可以在连接数据库之前,指定用tcp/ip进入 如免费的仓库管理软件

3楼: logout你把设为false

4楼: TO:windlin
怎么指定用TCP/IP呢?

5楼: win2000 装一下 IPX/SPX/NetBios 网络协议三

6楼: 问题还没有解决,哪位大哥肯帮忙!

进销存软件版7楼: 开始菜单中,打开sql server 的服务端网络试用工具,选择协议tcp/ip
你的客户端也需要这样就可以访问

8楼: 问题是我的客户端并没有装SQL2000呀,所以没有"客户端网络试用工具"这个东西呀.

9楼: 更改您的服务器端口设定。不使用这个端口。
服务器的权限分配可能有问题。

10楼: 我升级了ADO,然后把DELPHI7.0里面的关于数据库连接的DLL都COPY到了system32下面,然后再在服务器上开了个空密码的guest帐户,这样就可以了,但是如果把guest帐户禁用,又不行了.唉!哪位能想出好办法呀!

11楼: TO wutianlong:在win2000的客户端上装一个SQL2000,再卸掉,这样就可以了.或者装一下delphi7再卸掉,这样也可以连得上。
重装改变了什么?
1。注册表项。
2。所需文件。
3。重装以后的默认设置。
可能你需要监控软件追踪一下!

12楼: 我觉得可能是你的服务器端的SQL SERVER 的登陆方式设为WINDOWS登陆了吧,SQL有两种方式,你选用那SQL 自己的用户登陆方式,就是用sa的那种 如管家婆免费软件下载

13楼: TO:sytgoodluck
你的方法我早用过了,这样是可以,不过维护起来不方便,总不可能在软件卖给客户的时候,也给客户的每个客户端来一下这样的操作吧.
mynetlife:SQL的登陆方式我早就改过来了;这样也不行;


另外我有人新发现,就是我在服务器上开个IIS这样再加上我原来提到过的方法就可以了.
不过这样还是很麻烦.这算不算是微软的SQL的一个大BUG呀!

进销存软件版14楼: 没碰上过,确定几个问题:
1、你的网络环境。是不是已经建立好域?有无 Wins 或 DNS?如果在不同的域之间访问,是否建立好信任关系?
2、登陆服务器的方式。你使用机器名还是 IP 地址连接?直接在浏览器中用相同的方法连接服务器试试。
3、你的 ADO Connection 通过什么与 SQL Server 连接?机器名?IP?SQL Account?Windows Account?

15楼: 我現在也跟你一樣
我的也是只有裝了SQL的就可以找到別的就要手動輸入服務器IP地址才行...
樓主有沒有好的方法,到時記得通知我~

16楼: 你用ADO连接时候有什么条件吗?是不是没有把ADO默认的LOG验证取掉呢?

17楼: 默认就是RPC管道连接的,但是到了互联网就可以直接能过TCP/IP连接使用!

18楼: 连接这样写就可以了

dmskh.ADOConnection1.ConnectionString := ''Provider=SQLOLEDB.1;Password=skh_jwl2kk346p#2;''
+''Persist Security Info=True;User ID=skh;''
+''Initial Catalog=skh;Data Source=''+ipstring+'';''


+''Use Procedure for Prepare=1;Auto Translate=True;''
+''Packet Size=4096;''
+''Use Encryption for Data=False;''
+''Tag with column collation when possible=False'';

19楼: 嗯,又可能是连接字符串的问题。

20楼: procedure TForm6.FormCreate(Sender: TObject);
var
SQLServer: Variant;
ServerList: Variant;
i, iServers: integer;
begin
{查找本網絡裡的SQL Server服務器,並添加到SrvList裡}
SQLServer := CreateOleObject(''SQLDMO.Application'');
ServerList := SQLServer.ListAvailableSQLServers;
iServers := ServerList.Count;
for i := 1 to iServers do
begin
combobox1.items.Add(ServerList.Item(i));
end;
SQLServer := NULL;
serverList := NULL;
end;
// {查找本網絡裡的SQL Server服務器,並添加到SrvList裡}如果沒有裝SQL的電腦,一用就會出現找不到class字串.....

进销存软件版21楼: 我去年遇到过。这是一个网络访问权限的问题,你在服务器端建一个包含客户端衣帐户,权限设为超级用户即可。这样就不必先从网上邻居上了。

22楼: 那為什麼裝過SQL的電腦就可以(就算刪除後還是可以) 如库存管理软件

23楼: 我使用的是动态连接,字符串为:
Provider=SQLOLEDB.1;Password=''''''+sPwd+'''''';Persist Security Info=True;User ID=''''''+sUser+'''''';Initial Catalog=''''''+sDbnaem+'''''';Data Source=''''''+sSvrname+'''''';Use Procedure for Prepare=1;''+''Auto Translate=True;Packet Size=4096;Workstation ID=''''''+sSvrname+'''''';Use Encryption for Data=False;Tag with column collation when possible=False;
这样还是不行呀

24楼: 最重要是以上所有办法我都试过了,还是不行,我看过网络,也没问题,用PB写的程序可以,但DELPHI的就不行,我的天啊!不知道有哪位用过用原生ADO连数据库的,好像挺麻烦的,我试了一下用原生ADO好像只能连本地的数据库.远程的不行!有哪位大侠用过,给个例子,感谢之致!

25楼: 應該不是代碼的問題。。只要裝了SQL的電腦都正常運行。可能是安裝SQL的時候增加了什麼。。這個就不太清楚了

26楼: 在安装 SQL Server 2000 的时候会自动更新 MDAC 2.7, 你独立安装一下 MDAC2.8 试试

27楼: 这还不简单啊,你装个MSSQL的客户端就行了啊。然后在MSSQL客户端上建立一个远程服务器不就可以了。

进销存软件版28楼: 安装文件没做好

29楼: 对啊,WIN2K的系统安装MDAC2.7\2.6就可以了,WINXP\WIN2003就不用了

30楼: 怪了。。不过我没有遇到过,只遇到过98上是这样。。

31楼: 在客户端上安装SQL客户端那当然是可以的,可是这样做太麻烦了吧,如果软件发布的时候告诉客户每台客户端都要安装那不成了笑话.我看这个问题是没办法解决啦,什么方法我都试过了,除非不用ADO连接.唉!

32楼: WINXP,Win2000都不行。裝MDAC2.8也沒用
不知道是啥原因

33楼: 在连接串中强制使用tcp/ip连接吧

ADOConnection1.ConnectionString := ''Provider=SQLOLEDB.1;Password=sa密码;Persist Security Info=True;User ID=sa;Initial Catalog=连接的数据库名;Data Source=服务器IP;Network Library=DBMSSOCN''

如果服务器是winxp需要将SQLServer加上sp3

34楼: 不是連接的問題,是找不到SQL服務器。如果指定輸入IP地址可以連接,但是用查詢SQL服務器就不行。只有裝過SQL客戶端的才可以搜索到。。。。

进销存软件版35楼: SQLServer := CreateOleObject(''SQLDMO.Application'');
没装SQL,你让它到哪去找SQLDMO

36楼: 哦。。。
原來是這樣。。有沒有別的方法可以得到SQL服務器名

37楼: 頂!

38楼: TO:0738
Network Library=DBMSSOCN 是什么意思;
加上这个好像更加不行,我本来还连的上的,加上你这个,连客户端是win2003的都连不上了

39楼: Network Library=DBMSSOCN 表示连接时强制使用TCP/IP连接,如果连接不上,你可能需要
检查以下几点:
1、服务器使用TCP/IP连接时的端口号,如果不是1433,你需要在连接串中指定
Data Source=服务器IP,端口号
2、确认SQL2000打上了sp3的补丁,否则在xp,2003的服务器上,SQL2000没有检测1433端口
这时你可以用Network Library=DBNETLIB代替,但是win98下面就连不上了,因为98下
面没有DBNETLIB
3、你使用的是sa连接,如果是别的用户,可能是其他原因了

如果你还是连不上,那就将你完整的连接串贴出来,让大伙看看就好了

40楼: TO:0738
我安照你的方法将连接字符串改成:
Provider=SQLOLEDB.1;Password=''''''+sPwd+'''''';Persist Security Info=True;User ID=''''''+sUser+'''''';Initial Catalog=''''''+sDbnaem+'''''';Data Source=''''''+sSvrname+'''''',1433;Use Procedure for Prepare=1;''+''Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Network Library=DBMSSOCN;
可是系统提示连接字符串无效;
这是为什么;
我试了好像是data source=服务器名,端口号 这种好像不符合连接字符串的要求

41楼: 你把你连接的参数都贴出来吧,参数不同时,连接串也可能不一样,例如sa没有密码时
Persist Security Info=False
另外,所有参数都不需要加引号

进销存软件版42楼: 我用0738试过可以联数据库,但不知能否按你说的可以连上2003上的SQL2000,因为我也出现此问题,服务器是WIN2003在客户端也是这样,急死人了!不知0738真能解决.如行,我要真谢了

43楼: 绝对可以,我有个用户的服务器就是2003,客户端有98,xp,2000和2003,他们用这种连接
方式都没问题