难难难!出200分求教数据库高手:在SQL SERVER大型数据库BDE连接时的LOOKUP字段的问题。(100分)

  • 主题发起人 ZergWang
  • 开始时间
Z

ZergWang

Unregistered / Unconfirmed
GUEST, unregistred user!
出200分请教数据库高手,一定要帮帮忙。事后给200分。一定!!!!
问题是:在SQL SERVER大型数据库,BDE连接数据库时,后台数据库一切正常。在1000条数据的情况下没问题。
在1000条以上,会出现QUERY控件出不了数而锁死的情况,具体情况已经知道,因为LOOKUP字段太多大概有30个。
当没有LOOKUP字段时,QUERY连接一切正常。但一有LOOKUP字段时,就出问题了,
几乎出现死机状态。
请高手回答!!!!!!希望能遇上真正的高手了。。。。。。
 
试着调整一下:TDS PACKET SIZE改大些,SQLQRYMODE设为服务器端,如果有BLOB类型的字段,要考虑和
BLOB相差的几个参数的配置。别处,TIMEOUT,CONNECT TIMEOUT的对数据查询有影响。
但这也只能在一定范围内有有,BDE的特性决定了它在大数据量上有局限性。
 
因为有了LOOKUP字段,对应的DATASET“指针”随QUERY记录的移动而移动,有锁是必然的,
所以这样的用法不可取,换别的方式吧,比如多表连接的QUERY(SQL)、存储过程等等。
 
To All:
谢谢你们的回答。
To cszk4:
你的做法我早已经试过了。我把TDS PACKET SIZE改为32768都没用。SQLRYMODE设为SERVER也是一样的。死机!
你说BDE在取数方面有局限性,但程序已经完成,只有这个小问题而已,没可能做大手术了。希望还能有更好的办法。
To smallbs:
我不知道自己是否正确理解了你的意思,但是,你说的多表连接应该是指在SQL里JOIN出几个表来,
这样的话就不能修改这个QUERY里的内容了。存储过程方法更不可取,因为一定不能修改。
或者你有更好的办法,而是我理解错误?请举例或详细说明。
再说:
这个程序已经是在使用中,不可能改为ADO或其它什么了,而且程序的基类窗体也定好。
只能在BDE上想办法了,:(,不知道各位还有没有更好的办法。在此谢谢你们的关注!
 
'在1000条以上'你还敢用lookup,而且‘LOOKUP字段太多’,还不止一个!
效率当然很低。
不用不行吗?
lookupcache=true 试一下吧。GODBLESSYOU.
 
//在SQL里JOIN出几个表来,这样的话就不能修改这个QUERY里的内容了
这可不一定啊, 加一个UpdateSQL控件试试看:
Query.UpdateObject:=Updatesql;
Query.CachUpdate:=true;
Query.Requestlive:=true;
.... 请查看UpdateSQL的使用文档
 
to aaa:
我一早就有这个想法了。我善长的是ADO三层结构数据库,但在这个公司的底层开发程序
是基于BDE的。所以你说的不行,不能做。谢谢你,还有其它方法吗?
to smallbs:
如果BDE不用UpdateSQL控件,那什么都做不了。所以这个控件我也是很熟的了,
但是这个窗体比较特殊,唉……总之一言难尽,只能在LOOKUP字段上想办法来提高效率了。
:(,谢谢你!还有其它办法吗?
[:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(][:(]
 
我对BDE不熟!
帮你提前!
 
你们说的方法我曾经试过。在看到后又试了,可惜还是一样的结果。
呵呵,谢谢你们的关注!!!!问题虽然没有解决,不过,
能和大家讨论已是一件快乐的事。我不想解决了,我想没什么办法解决,
只能另想办法了。希望能给公司的底层程序做个大手术了。:)放分。。。。
 
将所有的Query和table 的CachUpdate属性均设置为true
 
顶部