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

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

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

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

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

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

Внимание:

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

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

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

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

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

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

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

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

  6. Закройте диалоговое окно Администрирование базы геоданных.

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

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

  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)

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