ArcPy에서 독점 스키마 잠금 오류를 피하십니까?


11

매일 밤 데이터베이스의 일부 기능을 업데이트하는 스크립트가 있습니다 (일부 기능을 복사하고 교체하기 위해). 이 기능은 "읽기 전용"입니다. 내 문제는 사용자가 이러한 기능을 여는 것을 피할 수 없으며 스크립트에 다음 오류가 표시 될 수 있다는 것입니다.

ExecuteError: ERROR 000464: Cannot get exclusive schema lock. 
              Either being edited or in use by another application.

일부 명령으로 파일을 복사하고 일부 사용자가 열어 놓은 상태에서 피톤 스크립트를 강제로 실행할 수 있습니까? 스크립트를 실행하기 전에 데이터베이스에서 모든 연결을 해제 할 수 있습니까?


1
이것은 arcpy / arcgisscripting 오류 인 것 같습니다. 사용중인 데이터베이스와 사용중인 데이터베이스를 확인하십시오.
blah238

답변:


5

SDE와 협력하고 있다고 가정합니다.

sdemon명령 행 도구를 사용하여 모든 연결을 종료해야합니다 .

  1. 스크립트를 실행하는 PC에 ArcSDE가 설치되어 있으면 sdemon -o kill로컬로 실행 하여 모든 연결 을 종료 할 수 있습니다 . 이 도움말 항목을 살펴보십시오 . 10.0에서 직접 연결을 종료하는지 확실하지 않습니다. 나는 그것이 9.3에서 일종의 문제 였고 10.1에서 직접 연결을 죽이는 것을 기억합니다.
  2. ArcSDE가 설치되어 있지 않고 별도의 서버에서만 실행중인 경우 Python에서 원격으로이 명령을 실행할 수 있습니다. 이 주제에 대한 논의가 있습니다 .

예, 서버에 설치된 SDE를 사용하고 있습니다. 그러나 "sdemon -o kill"명령이 구문 오류를 리턴했습니다.
avrechi

sdemon 명령은 ArcSDE에서 실행해야합니다. 파이썬 스크립트에 넣을 수 있습니까?
avrechi


2
명령 sdemon -o kill이 충분하지 않습니다. 추가 매개 변수를 전달하고 제공된 링크를 살펴보십시오 .
Alex Markov


2

환경 설정이 특정 SDE 사용자 잠금을 제거하는 경우 arcpy를 통해이를 수행 할 수 있습니다. sde 명령을 수행하기 위해 데이터베이스 서버로 이동할 필요가 없기 때문에이 방법을 선호합니다. 원치 않는 잠금을 해제 한 다음 하나의 스크립트 / 프로세스로 데이터 업데이트를 모두 수행 할 수 있습니다.

위 링크의 예는 매우 유용합니다.

import arcpy

admin_workspace = "Database Connections/tenone@sde.sde"
arcpy.env.workspace = admin_workspace
user_name = "GDB"

# Look through the users in the connected user list and get the SDE ID.
# Use the SDE ID to disconnect the user that matches the username variable
users = arcpy.ListUsers() # The environment is set, no workspace is needed.
for item in users:
    if item.Name == user_name:
        arcpy.DisconnectUser(admin_workspace, item.ID)

나는 이것을 실행하고 현재 sessionID에 도달 할 때까지 작동하는 것처럼 보였고 오류가 발생했습니다. 사용자를 반복하고 현재 사용자를 건너 뛸 수있는 방법이 있습니까 (item.Name == 'DBO'및 item.ID! = <현재 사용자의 세션 ID>)? 현재 사용자의 세션 ID를 찾는 방법을 찾을 수 없습니다.
m.Walker

0

나는 postgresql에 익숙하지 않지만이 게시물이 올바른 방향으로 이끌 수 있다고 생각합니다.

/programming/5108876/kill-a-postgresql-session-connection

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.