gpt4 book ai didi

delphi - BDE、Delphi、ODBC、SQL Native Client 和死锁

转载 作者:行者123 更新时间:2023-12-03 15:57:31 25 4
gpt4 key购买 nike

我们有一些 Delphi 代码,它使用 BDE 通过 SQL Server Native Client ODBC 驱动程序(2005 版本)访问 SQL Server 2008。我们的问题是,我们在向多个表进行插入的循环中遇到了一些死锁问题。

整个循环是在 [TDatabase].StartTransaction 内完成的。查看 SQL Server Profiler,我们清楚地看到,在循环过程中的某个时刻,SPID( session ID?)发生了变化,然后我们自然会陷入死锁。 (两个 SPID 都对同一个表进行插入)

似乎 BDE 在某个时刻与数据库进行了第二次连接...

(虽然我很想跳过 BDE,但目前不可能。)

谁有经验可以分享吗?

最佳答案

如果您的应用程序是多线程的:BDE 不是线程安全的。您必须为每个线程使用单独的 BDE session (显式创建的 TSession 实例);为主线程自动创建的全局 Session 是不够的。此外,所有数据库访问组件(TDatabaseTQuery 等)只能在其对应的 TSession 实例所在的线程上下文中使用> 已创建。

关于delphi - BDE、Delphi、ODBC、SQL Native Client 和死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2506367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com