BDE,Delphi,ODBC,SQL Native Client&死锁
我们有一些Delphi代码,它使用BDE通过SQL Server Native Client ODBC驱动程序访问SQL Server 2008(2005版)。我们的问题是我们在循环中遇到一些死锁问题,这些问题是插入到多个表中的。
整个循环在[TDatabase] .StartTransaction中完成。看一下SQL Server Profiler,我们清楚地看到,在循环过程中,SPID(会话ID?)发生了变化,然后我们自然会遇到死锁。 (两个SPID对同一个表执行插入操作)
似乎BDE在某个时刻与DB的第二个连接...
(虽然我很想跳过BDE,但目前还不行。)
有经验的人分享?
没有找到相关结果
已邀请:
3 个回复
芭隘的盘石
实例);自动为主线程创建的全局
是不够的。此外,所有数据库访问组件(
,
等)只能在创建了相应的
实例的线程的上下文中使用。
芦歉竭皑
肉簧咸缮
,
......)。 之后,“spid change”应该消失,因此死锁。 找到该组件的一些提示: 在锁定期间,执行以下语句(例如,使用Management Studio):
。 查看列
。被阻止的连接中有一个数字。 此编号是阻塞连接的
(服务器进程ID)。 然后执行
。 在列
中,您将找到程序发出的sql语句。 有了这些信息,您应该能够找到导致您麻烦的BDE组件。