添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

作为地理数据库管理员,可能偶尔需要查看哪些用户连接到了地理数据库以及哪些连接锁定了资源。如果用户处于离开状态,则甚至可能还需要移除某些连接才能注销。例如,某位编辑者可能未关闭编辑会话,这将锁定编辑会话中的数据且使其他编辑者无法对其进行访问。如果建立到地理数据库的连接的数量受限,则可能需要断开某一位未能注销的用户的连接,以释放连接。或者您可能希望每一位用户均进行注销,以便对数据库应用修补程序、恢复数据库或压缩地理数据库。

您能够以 sde 用户的身份从 ArcGIS Desktop 连接到地理数据库,以查看连接并在必要时将其删除。或者您可以使用 ArcPy 函数完成相同的工作流。

首先确定哪些用户连接到了地理数据库。然后根据需要移除连接。

识别并从 ArcMap 中移除连接

您可以在 ArcMap 中以 sde 用户的身份连接至地理数据库,以通过 地理数据库管理 对话框查看连接。

  1. 启动 ArcMap ArcCatalog
  2. 以 sde 用户身份 连接到地理数据库
  3. 右键单击目录树中的数据库连接,指向 管理 ,然后单击 管理地理数据库
  4. 单击 连接 选项卡。

    将显示当前连接到地理数据库的所有会话的列表。您的会话以斜体文本显示。

  5. 请联系各个用户并要求其关闭其对话。如果您无法联系到用户且仍需要断开他们与地理数据库的连接,则可继续执行下一步骤。
  6. 右键单击要从地理数据库移除的指定用户会话,然后单击 断开连接

    该会话将立即与地理数据库断开连接。

使用 ArcPy 识别并移除连接

您可以运行 Python 函数,为地理数据库管理员创建地理数据库连接文件,使用该连接文件连接到地理数据库,然后获取当前所有地理数据库连接的列表,并根据需要从地理数据库移除连接。

  1. 通过在 Python 窗口中运行 CreateDatabaseConnection_management 函数来创建数据库连接。与文件一起保存用户名和密码。

    在本例中,将在临时文件夹中创建连接文件 ( pgdb.sde )。以 sde 用户身份登录,连接到数据库集群 mydbc 上的地理数据库 pg1。

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp", "pgdb.sde", "POSTGRESQL", "mydbc", "DATABASE_AUTH", "sde", "mysdepwd", "SAVE_USERNAME", "pg1")
    
  2. 运行 ListUsers 函数以获取当前到 pg1 地理数据库的所有连接的列表。

    传递在上一步中创建的连接文件。

    ##No need to import arcpy if you are running functions in the same Python window. import arcpy
    arcpy.ListUsers("c:\\temp\pgdb.sde")
    

    返回用户连接的列表。

    [user(ClientName=u'PC4', ConnectionTime=datetime.datetime(2018, 10, 18, 8, 30, 19),
     ID=18, IsDirecConnection=True, Name=u'publisher1')]
    [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2018, 10, 21, 14, 10, 43),
     ID=33, IsDirecConnection=True, Name=u'editor2')]
    [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2018, 10, 22, 9, 18, 26),
     ID=39, IsDirecConnection=True, Name=u'reader5')]
    [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2018, 10, 22, 11, 21, 2),
     ID=41, IsDirecConnection=True, Name=u'sde')]
  3. 请联系各个用户并要求其关闭其对话。如果您无法联系到用户且仍需要断开他们与地理数据库的连接,则可继续执行下一步骤。
  4. 使用通过 ListUsers 函数获取的信息来识别将使用 DisconnectUser 函数移除的连接。

    指定要移除的连接 ID。此处将移除 ID 为 33 的连接:

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    arcpy.DisconnectUser("c:\\temp\pgdb.sde",33)
    

    该会话将立即与地理数据库断开连接。