Share via


MSSQLSERVER_5120

적용 대상:SQL Server

세부 사항

attribute
제품 이름 SQL Server
이벤트 ID 5120
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 DSK_FCB_FAILURE
메시지 텍스트 테이블 오류: 실제 파일 "%.*ls"을(를) 열 수 없습니다. 운영 체제 오류 %d: "%ls".

설명

SQL Server에서 데이터베이스 파일을 열 수 없습니다. 메시지에 제공된 운영 체제 오류는 오류에 대한 보다 구체적인 기본 이유를 가리킵니다. 이 오류는 일반적으로 17204 또는 17207과 같은 다른 오류와 함께 표시할 수 있습니다.

사용자 작업

운영 체제 오류를 진단하고 수정한 다음 작업을 다시 시도합니다. Microsoft에서 해당 영역이 발생하는 제품의 영역을 좁히는 데 도움이 되는 여러 상태가 있습니다.

액세스 거부됨

운영 체제 오류 = 5가 Access is Denied 발생하는 경우 다음 방법을 고려합니다.

  • Windows 탐색기에서 파일의 속성을 확인하여 파일 집합의 사용 권한을 확인합니다. SQL Server는 Windows 그룹을 사용하여 다양한 파일 리소스에 대한 Access Control을 프로비전합니다. [SQLServerMSSQLUser$ComputerName$MSSQLSERVER 또는 SQLServerMSSQLUser$ComputerName$InstanceName과 같은 이름을 가진] 적절한 그룹에 오류 메시지에 언급된 데이터베이스 파일에 필요한 권한이 있는지 확인합니다. 자세한 내용은 데이터베이스 엔진 액세스에 대한 파일 시스템 권한 구성을 검토하세요. Windows 그룹에 SQL Server 서비스 시작 계정 또는 서비스 SID가 실제로 포함되어 있는지 확인합니다.

  • SQL Server 서비스가 현재 실행 중인 사용자 계정을 검토합니다. Windows 작업 관리자를 사용하여 이 정보를 가져올 수 있습니다. 실행 파일 "sqlservr.exe"의 "사용자 이름" 값을 찾습니다. 또한 최근에 SQL Server 서비스 계정을 변경한 경우 이 작업을 수행하는 지원되는 방법은 SQL Server Configuration Manager 유틸리티를 사용하는 것입니다.

  • 작업 유형(서버 시작 시 데이터베이스 열기, 데이터베이스 연결, 데이터베이스 복원 등)에 따라 가장과 데이터베이스 파일 액세스에 사용되는 계정이 다를 수 있습니다. 데이터 및 로그 파일 보안 항목을 검토하여 어떤 작업이 어떤 사용 권한과 어떤 계정을 설정하는지 이해합니다. Windows SysInternals 프로세스 모니터와 같은 도구를 사용하여 파일 액세스가 SQL Server 인스턴스 서비스 시작 계정(또는 서비스 SID) 또는 가장된 계정의 보안 컨텍스트에서 일어나는지 확인합니다.

    SQL Server가 ALTER DATABASE 또는 CREATE DATABASE 작업을 실행하는 로그인의 사용자 자격 증명을 가장하는 경우 프로세스 모니터 도구(예)에서 다음 정보를 확인할 수 있습니다.

    Date & Time:      3/27/2010 8:26:08 PM
    Event Class:        File System
    Operation:          CreateFile
    Result:                ACCESS DENIED
    Path:                  C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\DATA\attach_test.mdf
    TID:                   4288
    Duration:             0.0000366
    Desired Access:Generic Read/Write
    Disposition:        Open
    Options:            Synchronous IO Non-Alert, Non-Directory File, Open No Recall
    Attributes:          N
    ShareMode:       Read
    AllocationSize:   n/a
    Impersonating: DomainName\UserName
    

네트워크 연결 스토리지에 있는 파일 첨부

네트워크 연결 스토리지에 있는 데이터베이스를 다시 연결할 수 없는 경우 애플리케이션 로그에 다음과 같은 메시지가 기록될 수 있습니다.

Msg 5120, Level 16, State 101, Line 1 Unable to open the physical file "\\servername\sharename\filename.mdf". Operating system error 5: (Access is denied.).

이 문제는 데이터베이스를 분리할 때 SQL Server가 파일 권한을 다시 설정하기 때문에 발생합니다. 데이터베이스를 다시 연결하려고 하면 제한된 공유 권한으로 인해 오류가 발생합니다.

해결하려면 다음 단계를 수행합니다.

  1. -T 시작 옵션을 사용하여 SQL Server를 시작합니다. 이 시작 옵션을 사용하여 SQL Server 구성 관리자에서 추적 플래그 1802를 켭니다(1802에 대한 자세한 내용은 추적 플래그 참조). 시작 매개 변수를 변경하는 방법에 대한 자세한 내용은 데이터베이스 엔진 서비스 시작 옵션을 참조 하세요.

  2. 다음 명령을 사용하여 데이터베이스를 분리합니다.

     exec sp_detach_db DatabaseName
     go 
    
  3. 다음 명령을 사용하여 데이터베이스를 다시 연결합니다.

    exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf'
    go