如何在 Access 中使用 Microsoft Jet UserRoster 确定谁登录到数据库

高级:需要专家编码、互操作性和多用户技能。

本文适用于 Microsoft Access 数据库 (.mdb) 文件或 Microsoft Access 数据库 (.accdb) 文件。

摘要

本文介绍如何使用 Microsoft Visual Basic for Applications输出登录到数据库的用户的列表。

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但是他们不会修改这些示例以提供额外的功能,也不会构建过程以满足您的特定要求。

使用以下示例代码时,将返回以下信息:

  • 计算机名称。
  • 登录名。
  • 用户当前是否连接到数据库。 (用户 ID 保留在锁数据库中,直到最后一个用户断开连接或为新用户连接回收槽。)
  • 用户连接是否在正常情况下终止。

此信息还可用于隔离与特定用户的活动关联的数据库损坏问题。

Procedure

警告

如果按照此示例中的步骤操作,则会修改示例数据库Northwind.mdb。 可能需要备份 Northwind.mdb 文件,并在数据库副本上执行以下步骤。

若要确定登录到数据库的用户,请执行以下步骤:

  1. 打开示例数据库,Northwind.mdb。

    注意 在 Access 2007 中,打开 Northwind2007 示例数据库,关闭 Northwind2007 示例数据库,然后重新打开 Northwind2007 示例数据库。

  2. 在“视图”菜单上,指向“数据库对象”,然后单击“模块”。

    注意在 Access 2007 中,在“数据库工具”选项卡上的“”组中单击“Visual Basic”。

  3. 单击"新建"。

    注意在 Access 2007 中,单击 Visual Basic 编辑器的“插入”菜单上的“模块”。

  4. 键入或粘贴以下代码:

    注意 本文中的示例代码使用 Microsoft ActiveX 数据对象。 若要正确运行此代码,必须引用 Microsoft ActiveX 数据对象 2.1 或更高版本库。 为此,请在 Visual Basic 编辑器的“工具”菜单上单击“引用”,并确保选中“Microsoft ActiveX 数据对象 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
    
    

    请注意 ,“即时”窗口返回登录到数据库的用户的列表。