티스토리 뷰

카테고리 없음

파일 서버의 엑셀 문서가 계속 사용 중으로 표시될 때 SMB 세션 확인

생각방 2026. 10. 30. 09:59

목차


    파일 서버의 엑셀 문서가 계속 사용 중으로 표시될 때 SMB 세션 확인

    파일서버의 파일 사용 선점

    공유 폴더의 엑셀 문서를 닫았는데도 다른 PC에서 ‘사용 중’이라고 표시될 수 있습니다. 이때 연결을 일괄 종료하면 같은 사용자가 작업하던 다른 문서까지 영향을 받을 수 있습니다. 먼저 해당 파일을 열고 있는 연결과 접속 사용자를 확인하고, 저장 상태를 확인한 뒤 필요한 범위만 해제해야 합니다.
    집에서 노트북에 공유폴더를 설정해서 다른방의 가족과 같이 처리하던 중 한쪽의 세션이 종료되면서 저장했던 파일의 데이터가 기존의 데이터로 보였던 경험이 있었습니다. 누락 분 업데이트에 시간이 제법 걸렸던걸로 기억이 납니다.

    사용 중 표시와 실제 열린 파일을 구분

    SMB는 네트워크에서 파일과 폴더를 공유하는 프로토콜입니다. 세션은 서버와 클라이언트 사이의 접속 맥락이고, 열린 파일 항목은 그 접속을 통해 열어 둔 개별 파일을 가리킵니다. 따라서 세션이 있다는 사실만으로 특정 엑셀 문서의 잠금 원인이 확인되지는 않습니다.

    Microsoft는 다른 기기에 문서가 열려 있거나 이전 실행이 정상 종료되지 않은 경우에도 잠금이 표시될 수 있다고 설명합니다. 먼저 사용자에게 다른 PC와 원격 접속 환경까지 확인하도록 요청하고, 저장 후 문서를 정상 종료한 다음 잠시 기다려 재시도합니다. Excel 잠금 안내에 따르면 일반적인 SMB 서버 경로는 Microsoft 365의 공동 작성 지원 위치에도 해당하지 않습니다.

    이 글의 명령은 Windows 파일 서버의 SmbShare 모듈을 기준으로 합니다. NAS나 Samba 서버는 해당 장비의 관리 도구로 열린 파일과 연결을 확인해야 합니다. OneDrive·SharePoint 문서의 공동 작성 문제도 이 절차와 구분합니다.

    요약: 파일의 실제 저장 위치와 정상 사용 여부를 먼저 확인해야 해제 대상을 좁힐 수 있습니다.

    2. 파일 경로에서 사용자와 세션을 추적

    파일을 실제로 제공하는 Windows 서버에서 관리 권한으로 PowerShell을 실행합니다. 아래는 가상의 경로를 사용하는 조회 예제입니다. 클라이언트의 공유 경로가 아니라 서버 내부의 실제 파일 경로로 바꾸고, 조회 결과가 없다고 즉시 잠금이 없다고 판단하지 않습니다.

    Get-SmbOpenFile은 클라이언트가 열어 둔 파일 정보를 반환합니다. Path로 문서를 찾은 뒤 FileId, SessionId, ClientComputerName, ClientUserName을 함께 확인합니다. 같은 이름의 다른 문서를 잘못 해제하지 않도록 전체 경로를 대조합니다.

    $targetPath = 'D:\Shares\Team\Monthly.xlsx'
    $openFiles = @(Get-SmbOpenFile | Where-Object {
        $_.Path -eq $targetPath
    })
    $openFiles | Format-List FileId, SessionId, Path,
        ClientComputerName, ClientUserName
    
    $openFiles.SessionId | Sort-Object -Unique |
        ForEach-Object { Get-SmbSession -SessionId $_ } |
        Format-List SessionId, ClientComputerName,
            ClientUserName, NumOpens

    Get-SmbSession으로 같은 SessionId의 접속 정보를 대조합니다. NumOpens는 해당 세션의 열린 항목 수이므로, 문제 문서의 편집자 수로 해석하면 안 됩니다. 서버에 표시된 접속 계정과 PC를 실제 작업자에게 확인하되, 그 정보만으로 엑셀 화면의 작성자 표시까지 같다고 단정하지 않습니다.

    조회 결과는 그 시점의 상태입니다. 접속이 바뀔 수 있으므로 해제 직전 다시 조회해야 합니다. 결과가 없다면 접속한 서버와 경로가 맞는지부터 확인하고, 서버 내부에서 직접 파일을 연 프로그램 등 SMB 조회 범위 밖의 가능성도 별도로 살펴봅니다.

    요약: 전체 경로 → FileId → SessionId → 접속 PC·계정 순서로 대조합니다.

    조회 정보를 서로 연결해 해제 대상을 식별

    저장 확인 후 파일 단위 해제를 검토

    작업자가 편집 중이면 정상적인 사용 상태일 수 있습니다. 먼저 저장과 종료를 요청하고 서버에서 해당 항목이 사라지는지 확인합니다. 작업자와 연락되지 않거나 저장 여부가 불명확하면 즉시 종료하지 말고 업무 담당자와 처리 시점 및 복구 수단을 정합니다.

    정상 종료 후에도 항목이 남고 강제 해제가 필요하다고 판단한 경우에만 Close-SmbOpenFile을 검토합니다. 이 명령은 파일을 강제로 닫으며, 클라이언트의 변경 내용이 서버에 모두 기록되지 않았다면 데이터가 손실될 수 있습니다. 백업이 있더라도 아직 저장하지 않은 편집 내용까지 복구된다고 볼 수 없습니다.

    # 직전 조회에서 확인한 FileId를 입력합니다.
    $fileId = [UInt64](Read-Host '확인한 FileId 입력')
    Get-SmbOpenFile -FileId $fileId |
        Format-List FileId, SessionId, Path,
            ClientComputerName, ClientUserName
    
    # 출력 내용을 대조한 뒤 실행 범위를 미리 확인합니다.
    Close-SmbOpenFile -FileId $fileId -WhatIf
    
    # 저장·종료 및 대상 재확인 후 필요한 경우에만 실행합니다.
    Close-SmbOpenFile -FileId $fileId -Confirm

    -WhatIf는 실행될 작업을 미리 보여주는 옵션이며 저장 완료 여부나 해제의 안전성을 검사하지 않습니다. 실제 실행에는 확인 절차를 남기고, 확인을 생략하는 -Force를 기본값으로 사용하지 않습니다. 파일 하나의 문제라면 세션 전체를 종료하는 조치로 범위를 넓히지 않는 편이 적절합니다.

    요약: 강제 해제 여부는 잠금 표시가 아니라 저장 상태와 업무 영향 범위를 기준으로 결정합니다.

    사용 파일의 연결 해제, 전체 세션 종료

    다시 열기와 저장까지 확인

    해제 후에는 같은 경로의 열린 파일 목록을 다시 조회하고, 작업자가 문서를 다시 열어 필요한 편집과 저장이 가능한지 확인합니다. 항목이 사라졌다는 사실만으로 문서 내용의 정상 여부까지 확인된 것은 아닙니다. 중요 문서는 마지막 저장 내용과 필요한 시트도 함께 대조합니다.

    곧바로 같은 PC·계정의 항목이 다시 나타난다면 해당 환경에서 문서를 다시 여는 동작이 있는지 조사합니다. 다른 계정으로 나타나면 그 계정의 작업을 먼저 확인합니다. 반복 발생 기록에는 발생 시각, 전체 경로, 접속 PC·계정, 해제 전후 상태를 남기되 외부 공유 시에는 내부 식별정보를 가립니다.

    SMB 항목이 보이지 않는데 경고가 계속되면 서버와 경로를 재확인한 뒤 클라이언트의 엑셀 실행 상태와 경고 내용을 나누어 조사합니다. 원인이 확인되지 않은 상태에서 임시 파일 삭제나 서버 재시작을 반복하는 방식은 피합니다.

    결론

    엑셀 문서의 사용 중 표시는 전체 연결을 종료하라는 신호가 아닙니다. 파일 경로로 열린 항목을 찾고 접속 사용자와 저장 상태를 확인한 뒤, 필요한 경우 확인된 파일만 해제합니다. 조치 후에는 다시 열기와 저장을 확인하고, 재발하면 같은 경로와 접속 정보를 기준으로 원인을 좁혀 가는 것이 좋습니다.

    참고자료