我们有一些 Delphi 代码使用 BDE 通过 SQL Server Native Client ODBC 驱动程序(2005 版)访问 SQL Server 2008。我们的问题是我们在对多个表进行插入的循环中遇到了一些死锁问题。
整个循环在 [TDatabase].StartTransaction 中完成。查看 SQL Server Profiler,我们清楚地看到,在循环期间的某一时刻,SPID(会话 ID?)发生了变化,然后自然而然地以死锁告终。(两个 SPID 都对同一个表进行插入)
似乎 BDE 在某些时候会与 DB 进行第二次连接......
(虽然我很想跳过 BDE,但目前不可能。)
有经验的可以分享一下吗?