在 Standard 或 Advanced 许可等级下可用。
作为地理数据库管理员,可能偶尔需要查看哪些用户连接到了地理数据库以及哪些连接锁定了资源。甚至可能还需要移除某些连接。例如,某位编辑者可能未关闭编辑会话,这将锁定编辑会话中的数据且使其他编辑者无法对其进行访问。如果建立到地理数据库的连接的数量受限,则可能需要断开某一位未能注销的用户的连接,以释放连接。或者您可能希望每一位用户均进行注销,以便对数据库应用修补程序、恢复数据库或压缩地理数据库。
如果用户处于离开状态而不能注销,您可以 sde 用户身份通过 ArcGIS for Desktop 或 ArcPy 函数连接至地理数据库,然后删除用户连接。sde 用户必须拥有超级用户访问权限才能从地理数据库中移除其他用户的连接。
首先确定哪些用户连接到了地理数据库,然后根据需要移除连接。使用 DisconnectUser ArcPy 函数可连接到 ArcGIS for Desktop 中的地理数据库。
识别并移除 ArcGIS Desktop 的连接
您可以在 ArcGIS for Desktop 中以 sde 用户的身份连接至地理数据库,以通过地理数据库管理对话框查看连接。
- 启动 ArcMap 或 ArcCatalog。
- 以 sde 用户身份连接到地理数据库。
- 右键单击目录树中的数据库连接,指向管理,然后单击管理地理数据库。
- 单击连接选项卡。
将显示当前连接到地理数据库的所有用户会话的列表。您的会话以斜体文本显示。
- 请联系各个用户并要求其关闭其对话。如果您无法联系到用户且仍需要断开他们与地理数据库的连接,则可继续执行下一步骤。
- 右键单击要从地理数据库移除的指定用户会话,然后单击断开连接。
随即,该用户会话将与地理数据库断开连接。
使用 ArcPy 识别并移除连接
可运行 Python 函数来定义地理数据库连接、列出当前连接到地理数据库的用户并移除地理数据库的连接。
- 通过在 Python 窗口中运行 CreateDatabaseConnection_management 函数来创建数据库连接。与文件一起保存用户名和密码。
在本例中,将在临时文件夹中创建连接文件 (pgdb.sde)。此连接是与数据库群集 mydbc 中地理数据库 pg1 的连接,应以 sde 用户身份登录。
import arcpy arcpy.CreateDatabaseConnection_management ("c:\\temp", "pgdb.sde", "POSTGRESQL", "mydbc", "DATABASE_AUTH", "sde", "mysdepwd", "SAVE_USERNAME", "pg1")
- 运行 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(2014, 2, 18, 8, 30, 19), ID=18, IsDirecConnection=True, Name=u'publisher1')] [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2014, 2, 21, 14, 10, 43), ID=33, IsDirecConnection=True, Name=u'editor2')] [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2014, 2, 22, 9, 18, 26), ID=39, IsDirecConnection=True, Name=u'reader5')] [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2014, 2, 22, 11, 21, 2), ID=41, IsDirecConnection=True, Name=u'sde')]
- 请联系各个用户并要求其关闭其对话。如果您无法联系到用户且仍需要断开他们与地理数据库的连接,则可继续执行下一步骤。
- 使用通过 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)
随即,该用户会话将与地理数据库断开连接。