ACC2002: 손상된 Access 2002 데이터베이스 문제를 해결하고 복구하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 283849 - 이 문서가 적용되는 제품 보기.
초보자: 단일 사용자 컴퓨터의 사용자 인터페이스에 대한 지식이 필요합니다.

본 문서의 내용은 Microsoft Access 데이터베이스(.mdb)에만 적용됩니다.

모두 확대 | 모두 축소

이 페이지에서

요약

Access 내부와 외부에서 여러 가지 문제가 발생하여 데이터베이스 파일이 손상될 수 있습니다. 손상된 데이터베이스에는 특정 레코드에 #Deleted가 나타나거나 데이터베이스에 있는 개체 중 하나를 열 수 없거나 Access에서 데이터베이스 파일을 열지 못하는 현상이 발생할 수 있습니다. Microsoft Access의 복구 및 압축 유틸리티는 Microsoft Access 2002 데이터베이스 파일을 최적화하거나 복구하는 데 유용한 도구입니다. 이 문서에서는 이 Access 2002 유틸리티에 대해 설명하고 손상된 데이터베이스를 복구하는 또 다른 방법을 제공합니다. 또한 이 문서는 데이터베이스를 손상시키는 원인에 대한 정보를 제공합니다.

참고: Microsoft Access에 사용되는 데이터베이스 엔진인 Microsoft Jet는 파일 공유 데이터베이스 시스템입니다. Microsoft Jet를 다중 사용자 환경에 사용할 때는 복수의 클라이언트 프로세스가 공유 데이터베이스에 파일 읽기, 쓰기 및 잠금 작업을 수행할 수 있습니다. 복수의 클라이언트 프로세스가 동일한 데이터베이스를 읽고 쓰며 SQL Server와 같은 고급 데이터베이스 시스템에서 하는 것처럼 Jet는 트랜잭션 로그를 사용하지 않기 때문에 모든 데이터베이스 손상을 확실히 예방하는 것은 어렵습니다. 다중 사용자 환경에서 연중 무휴로 하루 24시간 실행하는 데이터베이스 시스템이 필요한 경우 Microsoft SQL Server와 같은 지속적인 트랜잭션을 지원하는 진정한 클라이언트/서버 데이터베이스 시스템을 사용하는 것이 좋습니다.

추가 정보

이 문서에 제시된 단계대로 수행하면 손상된 데이터베이스 파일을 대개 복구할 수 있지만 데이터를 보호하기 위해 가능한 한 자주 데이터베이스 파일의 백업 복사본을 만들어 두는 것이 좋습니다.

압축 및 복구 유틸리티 설명

데이터베이스 압축

데이터베이스를 압축하면 압축 프로세스는 데이터베이스에서 개체와 레코드가 삭제되어 생겨난 사용하지 않는 공간을 회수합니다. 새로운 대상 데이터베이스를 만들고 기존 데이터베이스에 있는 각 개체를 새로운 데이터베이스로 복사하여 빈 공간을 제거합니다. 데이터베이스를 새 데이터베이스 대신 원래 데이터베이스 이름으로 압축하는 경우, 압축 프로세스는 임시 데이터베이스를 만든 후 원래 데이터베이스의 모든 개체를 임시 데이터베이스로 내보내고 원래 데이터베이스를 제거한 다음, 임시 데이터베이스 이름을 원래 데이터베이스 이름으로 바꿉니다.

다음은 압축 프로세스가 수행하는 작업입니다.
  • 테이블의 페이지가 인접한 데이터베이스 페이지에 있도록 다시 구성합니다. 이렇게 하면 테이블이 데이터베이스에서 더 이상 조각나지 않기 때문에 성능이 향상됩니다.
  • 개체 및 레코드가 삭제되어 생겨난 사용하지 않는 공간을 회수합니다. 개체나 레코드를 데이터베이스에서 삭제하면 이들이 점유하던 공간은 데이터베이스에 추가하는 데 사용할 수 있는 것으로 표시됩니다. 그러나 데이터베이스의 크기는 데이터베이스를 압축하지 않으면 절대 축소되지 않습니다. 개체와 레코드를 자주 추가, 삭제 및 업데이트하는 데이터베이스의 경우 자주 압축해 주어야 합니다.
  • 일련 번호 필드를 다시 설정하여 다음으로 할당되는 값이 나머지 레코드에서 가장 높은 값보다 하나 이상 큰 값이 되도록 합니다. 예를 들어, 데이터베이스에 있는 모든 레코드가 삭제되면 데이터베이스를 압축한 후 다음 레코드를 추가할 때 일련 번호 필드의 값은 1이 됩니다. 데이터베이스에서 가장 높은 일련 번호 값이 50일 경우 데이터베이스를 압축한 후 다음 레코드를 추가할 때 일련 번호 필드의 값은 51이 됩니다. 이것은 50 이상의 값이 포함된 레코드를 이전에 추가했지만 압축하기 전에 삭제한 경우에도 적용됩니다.
  • 쿼리 최적화 프로세스에서 사용되는 테이블 통계를 다시 생성합니다. 이러한 통계는 시간이 지나면 쓸모 없어질 수 있습니다. 이 문제는 트랜잭션을 롤백하거나, 예상하지 못한 정전으로 인해 데이터베이스가 제대로 닫히지 않았거나 또는 Microsoft Jet를 사용하는 프로그램이 변경을 완벽하게 저장하기 전에 컴퓨터를 끈 경우 일반적으로 발생합니다.
  • 모든 쿼리에 플래그를 설정하여 다음에 쿼리를 실행할 때 다시 컴파일되도록 합니다. 데이터베이스 통계가 변경될 수 있으며 이전에 컴파일한 쿼리에 잘못된 쿼리 계획이 있을 수 있으므로 이 작업은 중요합니다.
데이터베이스 복구

복구 프로세스는 데이터베이스에서 테이블, 쿼리 및 인덱스만 복구합니다. 손상된 폼, 보고서, 매크로 또는 모듈은 복구하지 않습니다.

압축 및 복구 유틸리티를 실행하기 전에 확인할 사항

데이터베이스에서 압축 및 복구 유틸리티를 실행하기 전에 다음을 확인하십시오.
  • Access 데이터베이스의 원본과 압축된 버전 모두에 대해 하드 디스크에 충분한 여유 공간이 있는지 확인하십시오. 즉, 해당 드라이브에는 적어도 Access 데이터베이스 크기의 2배 이상이 되는 충분한 여유 공간이 있어야 합니다. 일부 공간을 확보해야 하는 경우 해당 드라이브에서 불필요한 파일을 삭제하거나 가능하면 Access 데이터베이스를 더 많은 여유 공간이 있는 드라이브로 이동시킵니다.
  • 사용자에게 Access 데이터베이스에 대한 열기/실행 및 단독으로 열기 권한이 있어야 합니다. 데이터베이스를 소유한 경우 반드시 이 권한을 설정하십시오. 데이터베이스를 소유하고 있지 않은 경우 소유자에게 연락하여 이러한 권한을 얻을 수 있는지 확인하십시오.
  • Access 데이터베이스를 연 사용자가 없는지 확인하십시오.
  • Access 데이터베이스가 읽기 전용 네트워크 공유에 없는지 또는 파일 특성이 읽기 전용으로 설정되어 있는지 확인하십시오.

손상된 데이터베이스를 복구하는 단계

다음 단계는 손상된 데이터베이스를 복구하는 데 사용할 수 있는 일반적인 방법을 설명합니다.
  1. 손상된 데이터베이스(.mdb) 파일의 복사본을 만들어 백업합니다.
  2. .ldb 파일이 있으면 삭제합니다. .ldb 파일을 삭제하기 전에 해당 .mdb 파일을 닫아야 합니다.

    .ldb 파일은 공유 데이터베이스에서 어떤 레코드가 잠겨 있고 이를 누가 잠갔는지 확인하는 데 사용됩니다. 데이터베이스가 공유용으로 열려 있는 경우 해당 데이터베이스(.mdb)와 동일한 이름의 .ldb 파일이 만들어집니다. 예를 들어, C:\Msoffice\Access 폴더의 Northwind.mdb 예제 데이터베이스를 공유하기 위해 열면 동일한 폴더에 자동으로 Northwind.ldb 파일이 만들어집니다. 마지막 사용자가 해당 데이터베이스를 종료하면 마지막 사용자에게 해당 .mdb 파일이 포함된 폴더에 대한 삭제 권한이 없거나 데이터베이스가 손상된 경우를 제외하고 .ldb 파일이 자동으로 삭제됩니다. .ldb 파일에는 해당 데이터베이스를 연 사용자의 목록이 포함되어 있습니다.
  3. 압축 및 복구 유틸리티를 실행합니다. 실행하려면 다음 단계를 수행하십시오.
    1. 데이터베이스가 열려 있으면 닫습니다.
    2. 도구 메뉴에서 데이터베이스 유틸리티를 가리킨 다음 데이터베이스 압축 및 복구를 누릅니다.
    3. 압축할 데이터베이스 대화 상자에서 압축할 파일을 선택한 다음 압축을 누릅니다.
    4. 데이터베이스 압축 대화 상자에서 새 파일 이름을 입력하고 저장을 누릅니다.

      압축 및 복구 작업이 실패하면 작업이 실패했음을 나타내는 메시지가 나타납니다. 이는 심하게 손상되어 복구할 수 없음을 나타냅니다.
  4. 앞의 단계에서 손상된 데이터베이스가 복구되지 않으면 새 데이터베이스를 만들고 기존 데이터베이스에서 새 데이터베이스로 개체를 하나씩 가져옵니다. 그 다음 관계를 다시 만듭니다. 이러한 방법을 사용하면 데이터베이스에 있는 손상된 시스템 테이블의 문제가 해결됩니다.

    참고: 가져오기 마법사를 사용하여 데이터 액세스 페이지를 가져올 수 없습니다. 대신 새 데이터베이스에서 기존 데이터 액세스 페이지를 엽니다. 이렇게 하려면 다음 단계를 수행하십시오.
    1. 데이터베이스 창의 개체에서 페이지를 누릅니다.
    2. 새로 만들기를 누릅니다.
    3. 새 데이터 액세스 페이지 대화 상자에서 기존 웹 페이지를 누른 다음 확인을 누릅니다.
    4. 웹 페이지 위치 지정 창에서 데이터 액세스 페이지 위치를 찾습니다.
  5. 테이블이 손상되었으며 이전 단계에서 복구하지 못한 경우 다음을 시도하십시오.
    1. Microsoft Access 2002에서 테이블을 ASCII(구분된 텍스트) 파일로 내보냅니다. 이 항목에 대한 자세한 내용은 Microsoft Access 도움말 색인을 사용하여 "구획"을 검색한 다음 "데이터/데이터베이스 개체 내보내기" 항목을 보십시오.
    2. 이 테이블과 관련된 관계를 삭제한 다음 데이터베이스에서 테이블을 삭제합니다.
    3. 데이터베이스를 압축합니다.
    4. 테이블과 관계를 다시 만듭니다.
    5. 워드 프로세서를 사용하여 ASCII 파일에 잘못되었거나 이상한 데이터가 있는지 검사하고 해당 레코드를 제거합니다. 파일을 ASCII 텍스트 파일 형식으로 저장합니다.
    6. ASCII 파일을 새로 만든 테이블로 다시 가져옵니다. 이 항목에 대한 자세한 내용은 Microsoft Access 도움말 색인을 사용하여 "구획"을 검색한 다음 "데이터와 개체 가져오기/연결" 항목을 보십시오.
    7. 강제로 삭제한 레코드를 다시 입력합니다.
  6. 폼이나 보고서가 손상된 경우 양식이나 보고서 자체가 손상되었거나 폼이나 보고서에서 하나 이상의 컨트롤이 손상되었을 수 있습니다. 해당 폼이나 보고서를 삭제하고 해당 데이터베이스의 백업 복사본에서 가져오거나 다음 옵션 중 하나를 사용할 수 있습니다.
    • 폼이나 보고서 자체가 손상된 경우 새로운 폼이나 보고서를 만든 다음 원본 폼이나 보고서에서 해당 컨트롤을 복사해 옵니다.
    • 폼이나 보고서에 있는 컨트롤이 손상된 경우 새로운 폼이나 보고서를 만든 다음 새로운 폼이나 보고서에서 해당 컨트롤을 다시 만듭니다. 어떤 컨트롤이 손상되었는지 구분할 방법이 없기 때문에 모든 컨트롤을 다시 만드는 것이 좋습니다.
  7. 매크로나 모듈이 손상된 경우 매크로나 모듈 자체가 손상되거나 매크로나 모듈의 내용이 손상되었을 수 있습니다. 해당 매크로나 모듈을 삭제하고 해당 데이터베이스의 백업 복사본에서 가져오거나 다음 옵션 중 하나를 사용할 수 있습니다.
    • 매크로나 모듈 자체가 손상된 경우 새로운 매크로나 모듈을 만든 다음 원본 매크로나 모듈의 내용을 복사해 옵니다.
    • 모듈에 비ASCII 문자가 포함되는 손상이 발생할 수도 있습니다. 모듈을 텍스트 파일로 저장하고 잘못되었거나 이상한 데이터를 제거한 다음 텍스트 파일을 새 모듈로 다시 로드합니다.
    • 매크로나 모듈의 내용이 손상된 경우 새 매크로나 모듈을 만든 다음 원래 매크로나 모듈의 내용을 다시 만들어야 합니다.
이러한 단계를 사용하더라도 데이터베이스를 복구할 수 없는 경우에는 해당 데이터베이스가 복구할 수 없게 손상된 것입니다. 이런 경우 마지막 백업 데이터베이스를 복원하거나 데이터베이스를 다시 만들어야 합니다.

마지막 방법으로 몇몇 전문가로부터 Microsoft Access 데이터베이스 복구 서비스를 제공받을 수도 있습니다. 매우 특수한 서비스이므로 이러한 전문가를 찾으려면 다음 뉴스 그룹 주소의 Microsoft Access "Third Party and User Groups" 인터넷 뉴스 그룹에 메시지를 게시하는 것이 가장 효과적인 방법입니다.
microsoft.public.access.3rdpartyusrgrp
Microsoft Access 인터넷 뉴스 그룹에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
287756 ACC2002: 데이터베이스를 압축한 후 일련 번호 필드가 재설정되지 않는다

.mdb 파일이 손상되는 원인

.mdb 파일이 손상될 수 있는 세 가지 주요 원인은 다음과 같습니다.
  • 쓰기 작업 중단
  • 네트워킹 하드웨어 결함
  • 다른 프로그램에서 .mdb 파일 열기 및 저장

쓰기 작업 중단

파일 메뉴에서 끝내기 또는 닫기를 눌러 항상 Access를 적절히 종료해야 합니다. 데이터베이스가 열려 있고 Access가 비정상적으로 종료되었을 때 데이터를 쓰는 중이면 Jet 데이터베이스 엔진이 데이터베이스를 의심/손상으로 표시할 수 있습니다. 이 현상은 Windows를 먼저 종료하지 않고 컴퓨터를 수동으로 끄거나 정전된 경우 발생할 수 있습니다. 이 밖의 다른 상황에서는 데이터베이스가 열려 있는 동안 Jet가 디스크에 데이터를 쓰는 것을 방해할 수 있어도 Access가 종료되는 일은 발생하지 않습니다. 예를 들어, 네트워크에 데이터 충돌이나 디스크 드라이브 고장이 일어난 경우 이러한 현상이 발생할 수 있습니다. 이런 중단이 발생하면 Jet는 데이터베이스를 손상 가능성이 있는 것으로 표시할 수 있습니다.

Jet는 쓰기 작업을 시작할 때 플래그를 설정하고 작업이 완료되면 플래그를 다시 설정합니다. 쓰기 작업이 중단되면 플래그는 설정된 대로 유지됩니다. 데이터베이스를 다시 열려고 시도하면 Jet는 플래그가 설정된 것을 확인하고 데이터베이스가 손상되었다고 보고합니다. 대부분 데이터베이스의 데이터는 실제로 손상되지 않았지만 설정된 플래그는 손상이 발생했을 수 있다고 Jet에 경고합니다. 이런 경우에 데이터베이스를 압축하거나 복구하면 대개 데이터베이스를 복원할 수 있습니다. 다행히도 어떤 사용자와 워크스테이션이 파일을 의심으로 표시했는지 확인할 수 있는 방법이 있습니다. Access 2002에서 Microsoft Visual Basic for Applications을 사용하면 특정 데이터베이스에 로그온한 사용자의 목록을 표시할 수 있습니다.
208449 인터넷에서 사용 가능한 Microsoft Access 뉴스 그룹
이렇게 하는 방법에 대한 자세한 내용은 본 문서 뒷부분의 "어떤 사용자/워크스테이션이 파일을 의심으로 표시했는지 확인하는 방법" 절을 참조하십시오.

네트워킹 하드웨어 결함

Jet 데이터베이스 엔진이 관련되지 않고도 때때로 손상이 발생할 수 있습니다. 예를 들어, 네트워킹 하드웨어 결함으로 인해 파일이 손상될 수 있습니다. 데이터베이스가 있는 컴퓨터와 데이터베이스가 열려 있는 컴퓨터 간의 하드웨어 체인에 있는 하나 이상의 연결이 원인일 수 있습니다. 여기에는 네트워크 인터페이스 카드, 네트워크 케이블, 라우터 및 허브가 포함되지만 이에 국한되지는 않습니다.

하드웨어 기반 손상은 일반적으로 압축, 복구 또는 Jetcomp를 사용하여 복원할 수 없는 .mdb 파일에서 나타납니다. 하드웨어 손상은 일반적으로 해당 하드웨어가 복구되거나 교체되어야만 다시 발생하지 않습니다.

다른 프로그램에서 .mdb 파일 열기 및 저장

다른 프로그램에서 열고 저장한 .mdb 파일을 복구하는 방법은 없습니다. 예를 들어, Microsoft Word에서 .mdb 파일을 열고 저장할 수 있지만 그렇게 할 경우 백업 복사본을 제외하고는 .mdb 파일을 절대 복구할 수 없습니다. 실수로 다른 프로그램에서 .mdb 파일을 열었으면 저장하지 마십시오. 다른 응용 프로그램에서 .mdb 파일을 열면 의미 없는 문자만 나타나므로 사실 다른 응용 프로그램에서 이 파일을 열 경우는 없습니다.

손상을 예방하기 위한 단계

데이터베이스 손상을 예방하려면 다음과 같이 하십시오.
  • 데이터베이스에 쓰는 동안 전원이 꺼지지 않도록 합니다. 데이터베이스에 쓰는 동안 전원이 꺼지면 해당 데이터베이스가 의심 상태로 남아 있을 수 있습니다.
  • 네트워크 연결이 끊어지지 않도록 합니다.
  • Microsoft Jet 연결이 비정상적으로 종료(정전, 수동 종료, 작업 관리자를 통한 응용 프로그램 종료 등)되지 않도록 합니다.
  • 프로그래밍할 때는 열어 놓은 DAO 및 ADO 개체를 모두 닫습니다. 이러한 개체로는 Recordset, QueryDef, TableDefDatabase 개체 등이 있습니다.
  • 치명적인 시스템 오류는 거의 항상 비정상적인 종료의 원인이 됩니다. 데이터베이스에 치명적인 오류가 자주 발생하면 데이터베이스가 심하게 손상되어 열거나 복구할 수 없게 되므로 그 전에 오류를 해결해야 합니다.이 작업을 수행하는 방법에 대한 자세한 내용과 사용할 수 있는 예제 코드는 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    285822 HOWTO: Access 2002에서 Microsoft Jet UserRoster를 사용하여 데이터베이스에 로그온한 사람 확인
    치명적인 시스템 오류에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    294301 ACC2002: Microsoft Windows 2000에서 실행되는 Access 2002의 치명적인 시스템 오류 문제를 해결하는 방법
  • 데이터베이스를 자주 압축합니다.
  • 네트워크상에 Jet 데이터베이스가 있고 IPX/SPX가 설치된 Microsoft Windows 95가 클라이언트인 Microsoft Windows NT Server에서는 IPX를 실행하지 마십시오. 대신 Windows NT Server에서는 TCP-IP를 실행하고 Windows 95 클라이언트에서는 IPX와 TCP-IP의 이중 프로토콜 스택을 실행하십시오. Windows NT와 IPX/SPX가 설치된 Windows NT 간에는 문제가 없으며 Novell과 모든 클라이언트 간에도 문제가 없습니다.
  • 연속적으로 열고 닫는 작업을 너무 많이 하지 않도록 합니다. 이러한 작업을 40,000번 이상 연속적으로 수행하면 손상을 일으킬 수 있습니다.

변환된 데이터베이스에 대한 주의 사항

Access 2002 이전 버전의 Access에서는 데이터베이스를 최신 버전으로 변환하는 동안 오류가 발생하는 경우 어느 개체가 영향을 받았으며 심각하게 손상되었는지 쉽게 확인할 방법이 없습니다.

Microsoft Access 2002에서 Access 파일을 변환하는 동안 오류가 발생하면 새 Access 파일에서 변환 오류 테이블을 열어 이러한 오류에 대한 요약을 볼 수 있습니다. 변환 오류 테이블에는 다음과 같은 열이 포함되어 있습니다.

개체 유형: Access에서 오류가 발생한 데이터베이스 개체 유형 또는 Access에 특정 개체 유형과 관련이 없는 오류가 발생한 경우 "데이터베이스"

개체 이름: Access에서 오류가 발생한 개체 이름. 그러나 변환하는 동안 Access에 컴파일 오류가 발생하는 경우 오류가 발생한 모듈 이름은 지정되지 않습니다.

오류 설명: 필요할 경우 Shift+F2를 눌러 오류에 대한 전체 설명을 봅니다.

참조

284152 ACC2002: Windows ME에서 실행하는 Access 2002의 치명적 시스템 오류 문제를 해결하는 방법

데이터베이스 복구에 대한 자세한 내용은 도움말 메뉴에서 Microsoft Access 도움말을 누르고 Office 길잡이나 도움말 마법사에서 복구를 입력한 다음 찾기를 눌러서 나타나는 항목을 참조하십시오.
Access의 이전 버전에서 데이터베이스 문제를 해결하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
209137 ACC2000: 손상된 Jet 4.0 데이터베이스 문제 해결/복구 방법
279334 ACC97: 손상된 Jet 3.5 데이터베이스 복구 방법
109953 ACC: 손상된 Jet 3.0 및 이전 데이터베이스 문제 해결/복구 방법




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 283849 - 마지막 검토: 2003년 11월 12일 수요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Access 2002 Standard Edition
키워드:?
kbhowto KB283849

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com