Access에서 Microsoft Jet UserRoster를 사용하여 데이터베이스에 로그온한 사용자를 확인하는 방법

고급: 전문 코딩, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서는 Microsoft Access 데이터베이스(.mdb) 파일이나 Microsoft Access 데이터베이스(.accdb) 파일에 적용됩니다.

요약

이 문서에서는 Microsoft Visual Basic for Applications 사용하여 데이터베이스에 로그온한 사용자 목록을 출력하는 방법을 보여줍니다.

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어가 특정 프로시저의 기능을 설명하여 도움을 줄 수 있습니다. 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.

다음 샘플 코드를 사용하면 다음 정보가 반환됩니다.

  • 컴퓨터 이름입니다.
  • 로그온 이름입니다.
  • 사용자가 현재 데이터베이스에 연결되어 있는지 여부입니다. (사용자의 ID는 마지막 사용자의 연결이 끊어지거나 새 사용자 연결을 위해 슬롯이 회수될 때까지 잠금 데이터베이스에 유지됩니다.)
  • 정상적인 상황에서 사용자 연결이 종료되었는지 여부입니다.

이 정보를 사용하여 특정 사용자의 활동과 관련된 데이터베이스 손상 문제를 격리할 수도 있습니다.

절차

주의

이 예제의 단계를 수행하는 경우 샘플 데이터베이스 Northwind.mdb를 수정합니다. Northwind.mdb 파일을 백업하고 데이터베이스 복사본에서 다음 단계를 수행할 수 있습니다.

데이터베이스에 로그온한 사용자를 확인하려면 다음 단계를 수행합니다.

  1. 샘플 데이터베이스 Northwind.mdb를 엽니다.

    참고 Access 2007에서 Northwind2007 샘플 데이터베이스를 열고 Northwind2007 샘플 데이터베이스를 닫은 다음 Northwind2007 샘플 데이터베이스를 다시 엽니다.

  2. 보기 메뉴에서 데이터베이스 개체를 가리킨 다음 모듈을 클릭합니다.

    참고 Access 2007에서 데이터베이스 도구 탭의 매크로 그룹에서 Visual Basic을 클릭합니다.

  3. 새로 만들기를 클릭합니다.

    참고 Access 2007에서 Visual Basic Editor의 삽입 메뉴에서 모듈을 클릭합니다.

  4. 다음 코드를 입력하거나 붙여넣습니다.

    참고 이 문서의 샘플 코드는 Microsoft ActiveX Data Objects를 사용합니다. 이 코드가 제대로 실행되려면 Microsoft ActiveX Data Objects 2.1 이상 버전 라이브러리를 참조해야 합니다. 이렇게 하려면 Visual Basic Editor의 도구 메뉴에서 참조를 클릭하고 Microsoft ActiveX Data Objects 2.1 라이브러리 확인란이 선택되어 있는지 확인합니다.

    Sub ShowUserRosterMultipleUsers()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
    
        Set cn = CurrentProject.Connection
    
        ' The user roster is exposed as a provider-specific schema rowset
        ' in the Jet 4.0 OLE DB provider. You have to use a GUID to
        ' reference the schema, as provider-specific schemas are not
        ' listed in ADO's type library for schema rowsets
    
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
        , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
    
        'Output the list of all users in the current database.
    
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
    
        While Not rs.EOF
            Debug.Print rs.Fields(0), rs.Fields(1), _
            rs.Fields(2), rs.Fields(3)
            rs.MoveNext
        WEnd
    
    End Sub
    
  5. 모듈을 ShowUsers로 저장합니다.

  6. Ctrl+G를 눌러 직접 실행 창을 엽니다.

  7. 직접 실행 창에 다음 줄을 입력한 다음 Enter 키를 누릅니다.

    ShowUserRosterMultipleUsers
    
    

    직접 실행 창은 데이터베이스에 로그온한 사용자 목록을 반환합니다.