Управление подключениями к многопользовательским базам геоданных в SQL Server

Доступно с лицензией Standard или Advanced.

Как администратор базы геоданных, вы время от времени должны просматривать, кто подключен к базе геоданных, и какие соединения являются блокированными ресурсами. Вам может понадобиться удалить определенные подключения, если пользователи не могут выйти сами. Например, редактор мог оставить сеанс редактирования открытым, заблокировал данные в сеансе редактирования и запретил другим редакторам доступ к ним. Если число подключений к базе геоданных ограничено, то может потребоваться отключить какого-либо пользователя, который не смог выйти, чтобы освободить подключение. Или вам может потребоваться отключить всех пользователей, чтобы вы могли применить патч к базе данных, восстановить базу данных или сжать базу геоданных.

Вы можете подключиться к базе геоданных как администратор базы геоданных в ArcGIS Pro, чтобы просмотреть и, при необходимости, удалять подключения. Либо для этого можно использовать функции ArcPy.

Внимание:

Соблюдайте осторожность при отключении пользователей. Esri рекомендует вам избегать отключения активных сессий, особенно, если подключенный пользователь находится в процессе редактирования. Следует отключать только сеансы, оставшиеся открытыми, но не использующиеся (например, если пользователь оставил открытый сеанс на выходные), зависшие сеансы, блокирующие объект, или сеансы, попавшие в ситуацию взаимоблокировки.

Администратор базы геоданных нуждается в дополнительных правах для отключения пользователей многопользовательской базы геоданных Microsoft SQL Server.

  • Администратор (пользователь sde базы геоданных в схеме sde) требует прав VIEW DEFINITION в базе данных для просмотра списка подключенных пользователей, а также должен являться членом фиксированной серверной роли для отключения пользователей.
  • Если администратор базы геоданных со схемой dbo является пользователем базы данных, администратор базы геоданных должен быть добавлен в фиксированную серверную роль processadmin для отключения пользователей.
Если администратор базы геоданных со схемой dbo является пользователем базы данных, администратор базы геоданных должен быть добавлен в фиксированную серверную роль processadmin для отключения пользователей.

Сначала определите пользователей, подключенных к базе геоданных. Если необходимо, можно удалить подключения.

Идентификация и удаление подключений в ArcGIS Pro

Вы можете подключиться к базе геоданных как ее администратор в ArcGIS Pro для просмотра и удаления подключений в диалогом окне Администрирование базы геоданных.

  1. Запустите ArcGIS Pro.
  2. Подключитесь к базе геоданных как администратор базы геоданных.
  3. Щелкните правой кнопкой мыши подключение к базы данных и выберите Свойства.
  4. Щелкните Подключения и выберите Показать подключенных пользователей.

    Отобразится список всех сеансов, которые в текущий момент подключены к базе геоданных. Ваш сеанс отображается курсивным шрифтом.

  5. Свяжитесь с пользователями и попросите их закрыть свои сеансы. Если вы не можете связаться с ними, и все-таки необходимо отключить их от базы геоданных, то перейдите к следующему шагу.
  6. Щелкните правой кнопкой мыши сеанс определенного пользователя, который вы хотите удалить из базы геоданных, и щелкните Отключить.

    Сеанс будет немедленно отключен от базы геоданных.

  7. Закройте диалоговое окно Администрирование базы геоданных.
  8. Щелкните OK в диалоговом окне Свойства базы данных.

Идентификация и удаление подключений с помощью Python

Вы можете запустить функции Python, чтобы создать файл подключения к базе геоданных от имени администратора, использовать этот файл для подключения к базе геоданных и получения списка текущих подключений, а также для удаления подключения к базе геоданных, если необходимо.

  1. Создайте файл подключения базы данных с помощью функции CreateDatabaseConnection_management в окне Python.

    В данном примере файл подключения (ssgdb.sde) создан в папке temp. Выполнено подключение к базе геоданных gisprod на экземпляре sdept4 SQL Server от имени пользователя sa.

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp","ssgdb.sde","SQL_SERVER","sdept4","DATABASE_AUTH","sa","esayP@ss","SAVE_USERNAME","gisprod")

  2. Запустите функцию ListUsers для получения списка всех текущих подключений к базе геоданных gisprod.

    Укажите файл подключения, который вы создали на предыдущем шаге.

    ##No need to import arcpy if you are running functions in the same Python window. import arcpy
    arcpy.ListUsers("c:\\temp\ssgdb.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'DBO')]

  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\ssgdb.sde",33)

    Сеанс будет немедленно отключен от базы геоданных.