BDE를 사용하여 SQL Server Native Client ODBC 드라이버 (2005 버전)를 통해 SQL Server 2008에 액세스하는 일부 Delphi 코드가 있습니다. 우리의 문제는 여러 테이블에 삽입하는 루프에서 교착 상태 문제가 발생한다는 것입니다.BDE, Delphi, ODBC, SQL 네이티브 클라이언트 및 데드락
전체 루프가 [TDatabase] .StartTransaction 내에서 수행됩니다. SQL Server Profiler를 보면 루프 중 한 지점에서 SPID (Session ID?)가 변경된 다음 자연스럽게 교착 상태가 발생한다는 것을 알 수 있습니다. 나는 BDE를 건너 사랑하지만 (두 SPID가 같은 테이블에 삽입을하고)
그것은 어떤 점에서 BDE 것 같아, 그것은 현재 가능한 DB에 두 번째 연결 ...
(아니다 않는다 .)
누구나 공유 할 수있는 경험이 있습니까?
왜 ADO를 사용하지 않았습니까? –
코드베이스가 약 13 살이며 BDE에 크게 의존하기 때문입니다. 우리는 Interbase와 MSSQL을 모두 지원해야합니다. – EspenS
"스파이더 변경"이라고 말하면 조금 혼란 스럽습니다. 그건 아마 교착 상태의 원인입니다. 하나의 spid에서 트랜잭션을 시작하고 다른 트랜잭션에 삽입을 시도하거나 다른 트랜잭션에서 트랜잭션을 종료 할 수 없습니다. 어떻게 2 마리의 스파이더로 끝낼 지 알고 있니? 멀티 스레딩이 아니므로 두 번째 데이터베이스 연결을 만들 수 있습니까? –