본문 바로가기
DB(sql)

MSSQL 서버에서 msmdctr90.DLL 엑세스 거부 오류 해결 방법

by doran365 2024. 8. 7.

MSSQL 서버를 운영하는 중에 발생할 수 있는 다양한 문제 중, Generate Activation Context와 관련된 오류 메시지는 시스템 이벤트 로그에 종종 나타납니다. 이 오류는 특히 MSSQL 2005가 설치된 서버에서 자주 발생하며, 그 해결 방법에 대해 상세히 알아보겠습니다.

증상

MSSQL 2005가 설치된 서버의 시스템 이벤트 로그에 다음과 같은 엑세스 거부 오류 메시지가 발생할 경우, 이는 msmdctr90.DLL 파일에 대한 액세스 권한 문제로 인해 발생합니다.

오류 메시지 예시:

Generate Activation Context이(가) C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\msmdctr90.DLL에 실패했습니다. 참조 오류 메시지: 액세스가 거부되었습니다.

또는

Generate Activation Context이(가) C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\msmdctr90.DLL에 실패했습니다. 참조 오류 메시지: 액세스가 거부되었습니다.

 

이와 같은 메시지는 SQL 서버가 특정 DLL 파일에 접근하는 과정에서 권한 문제가 발생했음을 의미합니다.

조치 방법

이 문제를 해결하기 위해서는 MSSQL 서버가 설치된 디렉토리에 적절한 사용자 권한을 추가해 주어야 합니다. 다음은 구체적인 해결 방법입니다.

1. 권한 추가

MSSQL 서버가 설치된 경로의 다음 디렉토리에 Performance Log Users 사용자 권한을 추가합니다:

  1. MSSQL 서버 경로 확인
    • 기본적으로 MSSQL 서버는 C:\Program Files\Microsoft SQL Server 경로에 설치됩니다. MSSQL 인스턴스에 따라 경로가 달라질 수 있으므로, 설치된 경로를 정확히 확인합니다.
  2. 권한 추가
    • 다음 디렉토리에 Performance Log Users 사용자 권한을 추가합니다:
      • C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
      • C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin

권한 추가 방법은 다음과 같습니다:

  1. 해당 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  2. 보안 탭을 클릭하고 편집 버튼을 누릅니다.
  3. 추가 버튼을 클릭하여 Performance Log Users를 추가하고, 필요한 권한(읽기 및 실행, 폴더 내용 읽기, 읽기 등)을 부여합니다.

2. 시스템 재부팅

권한을 추가한 후에는 시스템을 재부팅하여 변경 사항이 적용되도록 합니다. 시스템 재부팅 후, 오류 메시지가 더 이상 발생하지 않는지 확인합니다.

3. 이벤트 로그 확인

시스템 이벤트 로그를 다시 확인하여 동일한 오류 메시지가 발생하지 않는지 모니터링합니다. 만약 문제가 계속 발생한다면, 권한 설정을 다시 확인하고 필요시 추가적인 트러블슈팅을 진행합니다.

추가 참고 사항

이 오류는 MSSQL 2005 뿐만 아니라 다른 버전의 MSSQL 서버에서도 발생할 수 있습니다. 따라서, 위와 같은 권한 설정 방법은 다른 버전에서도 적용 가능하며, 유사한 문제를 해결하는 데 도움이 될 수 있습니다.

또한, 권한 설정 외에도 MSSQL 서버의 설정 파일이나 기타 시스템 구성 요소와의 충돌이 원인일 수 있으므로, 문제 발생 시 다양한 원인을 고려하여 점검하는 것이 좋습니다.

결론

MSSQL 서버에서 발생할 수 있는 msmdctr90.DLL 엑세스 거부 오류는 권한 설정을 통해 해결할 수 있습니다. 또한, MSSQL 서버의 성능을 최적화하기 위해 인덱스와 쿼리 최적화, 하드웨어 최적화, 데이터베이스 유지보수 등의 방법을 적용하는 것이 중요합니다. 이러한 조치를 통해 MSSQL 서버의 안정성과 성능을 유지하고, 효율적인 데이터베이스 운영을 달성할 수 있습니다.