2010-02-26 2 views

답변

0

로그 복구는 자동으로 연결되지 않은 트랜잭션을 롤백하는 JetInit 호출에 의해 자동으로 수행됩니다. JetInit을 작동 시키려면 로그 파일을 찾아야합니다. 따라서

  • 로그 파일을 삭제했습니다. 그러지 마.
  • 로그 파일 경로를 올바르게 설정하지 않았습니다. ESE가 로그를 찾을 수 있도록 초기화 할 때 항상 동일한 로그 파일 경로를 설정하십시오.
  • 데이터베이스를 이동했습니다. 로그에는 데이터베이스에 하드 코딩 된 경로가 있으므로 데이터베이스를 이동하면 복구가 중단됩니다. 이를 처리하기 위해 대체 복구 경로 시스템 매개 변수를 데이터베이스가있는 디렉토리로 설정할 수 있습니다.
  • +0

    그러나 로그 파일이 없으면 어떻게됩니까? 나는 어떻게 든 "esentutl/p ...."를 실행하는 것처럼 데이터베이스에서 코드를 복구해야합니다. –

    0

    JetCreateInstance()와 JetInit() 전에 다음을 추가하여 응용 프로그램이 "더티 셧다운"을 자동으로 시도하도록 구성 할 수 있습니다. 예이 일의 순서가 중요하다

    Api.JetSetSystemParameter(instance, JET_SESID.Nil, Server2003Param.AlternateDatabaseRecoveryPath, 0, Path.GetDirectoryName(databasePath)); 
    

    (샘플은 C#으로,하지만 당신은 ... 요점을 파악 위)

    마지막 매개 변수는 복구 된 데이터베이스를하고자하는 위치 표시 될 가능성이 높기 때문에 더티 데이터베이스 파일과 동일한 디렉토리가됩니다.

    관련 문제