Instrução

As informações de conexão fornecidas eram para um usuário não administrativo

Last Published: February 19, 2025

Descrição

O uso da função ArcPy.DisconnectUser em um script de python como uma tarefa agendada para desconectar usuários de um banco de dados enterprise falha e retorna a seguinte mensagem de erro:

Error:
RuntimeError:Connection information provided was for a non-administrative user

O erro ocorre mesmo que o usuário tenha determinados privilégios administrativos para acessar o banco de dados ou para autenticação do banco de dados e o arquivo de conexão tenha credenciais armazenadas.

Note:
ArcGIS Enterprise supports several different databases. Each vendor has a different definition and permission set for the administrator role. For more information about the geodatabase administrator, and on the privileges needed based on a person's role in the organization, see the help page specific to the database management system you use. See also: ArcGIS Pro: Geodatabase management

Causa

As possíveis causas incluem:

  • O usuário não é um administrador ou não tem os privilégios adequados para desconectar outros usuários. Esta é uma limitação conhecida conforme descrito em ArcMap: DisconnectUser.
  • O banco de dados está aceitando conexões ativamente, caso em que o erro é retornado mesmo que um administrador acesse o banco de dados.

Solução ou Solução Provisória

Use uma conta de usuário administrador para desconectar usuários. Se os privilégios corretos forem concedidos e o problema ocorrer novamente, resolva negando novas conexões com o banco de dados e implementando o módulo de tempo para garantir que as tentativas ativas de conexão falhem. Complete as etapas fornecidas para fazer isso.

  1. Importe os módulos necessários.
import arcpy
import time
  1. Especifique a área de trabalho desejada.
admin_workspace = '[SDECONNECTIONFILE]'
arcpy.env.workspace = admin_workspace
  1. Bloqueie novas conexões ao banco de dados.
arcpy.AcceptConnections(admin_workspace, False)
  1. Implemente o módulo de tempo para aguardar até que todas as conexões ativas falhem.
time.sleep(120)
  1. Desconecte todos os usuários do banco de dados.
arcpy.DisconnectUser(admin_workspace, "ALL")

O seguinte mostra o código completo:

import arcpy
import time

admin_workspace = 'Database Connections\sample_connection.sde'
arcpy.env.workspace = admin_workspace

arcpy.AcceptConnections(admin_workspace, False)
time.sleep(120)

arcpy.DisconnectUser(admin_workspace, "ALL")

ID do Artigo: 000018531

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download