delphi中如何正确连接微软的sql server 6.5?(100分)

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

zhurui

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:

在delphi中使用bde的mssql配置连接微软的sql server 6.5数据库,
多个用户同在时使用过程中会出现说不清楚的互锁(死锁?)。
查其原因,发现在程序中打开一个表后,使用数据库的储存过程sp_lock()
查看表的加锁情况,其结果为:
spid locktype table_id page dbname
---------------------------------------------------------------------------------
23 Sh_intent 1872009700 0 ff_data
23 Sh_page 1872009700 1272 ff_data
| |
(打开的表) (库名)
这是为什么?如何解决?
zhurui@public.cta.cq.cn
 
用ODBC的DSN挺好。
 
你做了什么操作呢?BDE应该不会烂到这程度
 
在程序中使用Database组件,并设其KeepConnection属性为False,
这个属性表示是否一直与SQLServer保持连接状态,设为False可以只在需要时
连接。另外可以使用SQL Enterprise Manager选Server/SQL Server/Configure
/Configuration表中有一项user connections 可以设大一些这样也可保证不致
在连接过多是死锁!100分可以给我了吧?
 
这个问题这里也在讨论,<http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=109365>请看.</a>
 
<a href="http://www.gislab.ecnu.edu.cn/delphibbs/dispq.asp?LID=109365">是这里</a>
 
比较简单的方法是:
SQL查询语句:
select * from Table1 NOLOCK where 条件
~~~~~~ 加上此项关键字, 可以使SQL Server不
对Table1的记录进行加锁,

我对只是进行浏览操作的查询, 都采用NOLOCK处理. 减少冲突.

至于Cached Updates和 Update SQL 的使用我想你应该见过Delphi提供的
例子Db/Cacheup.

 
请继续讨论
 
多人接受答案了。
 
后退
顶部