2013-09-05 2 views
0

ASEOLEDB를 사용하여 Sybase 12.5 데이터베이스 서버에 연결하는 Sybase 15를 사용하는 C++ .NET 2003 클라이언트 응용 프로그램이 있습니다. 클라이언트 코드는 연결 문자열을 작성하고 the Microsoft library function CCommand::Open을 호출하여 저장 프로 시저를 실행합니다.ASEOLEDB 클라이언트 연결이 간헐적으로 실패합니다.

대부분의 경우 CCommand :: Open은 S_OK를 반환하고 코드가 계속됩니다. 그러나 무작위로 보아도 E_FAIL이 반환되기 시작합니다. 데이터베이스, 저장 프로 시저 및 입력은 모두 동일합니다. 이것은 20-30 분 동안 지속되고, 그 후에 겉으로보기에는 결심하고 다시 일하기 시작합니다.

문제가 발생하면 Toad for Sybase를 사용하여 같은 입력을 가진 저장 프로 시저를 문제없이 실행할 수 있습니다. 문제가없는 Sybase 11을 사용하는 클라이언트 응용 프로그램의 구형 빌드를 사용할 수도 있습니다. 또한 성공적으로 실행되는 동일한 Sybase 15 연결 문자열을 사용하여 PowerShell에서 스크립트를 실행할 수도 있습니다.

Sybase 11과 Sybase 15 클라이언트 코드 사이의 연결 풀링 차이점이 의심 스럽지만 문제를 증명하는 방법을 모르거나 그 원인을 더 이상 밝혀 내지 못했습니다.

가능한 관련 질문 : Intermittent Oledb connection error “Cannot open database ''.”

답변

0

나는 문제가 우리가 사용했던베이스 OLE DB 드라이버 (sybdrvoledb.dll 버전 15.0.0.356)를 알게되었다. Sybase/DataAccess/OLEDB/dll 폴더를 Sybase 15.7 버전의 dll 폴더로 교체하면 문제가 발생하지 않습니다. Sybase 15.7.0.80과 15.7.0.1000에서 DLL 파일을 사용했는데 둘 다이 문제를 해결할 것입니다.

관련 문제