Mais

A ferramenta ReconcileVersions produz ERROR 000301

A ferramenta ReconcileVersions produz ERROR 000301


Desejo criar uma versão, entrar na versão, fazer edições e, em seguida, postar e reconciliar essa versão. Quando chego à ferramenta ReconcileVersions_management,

ERRO 000301: O espaço de trabalho é do tipo errado

Acho que isso pode significar "a versão está bloqueada para edição" ou "a conexão com o banco de dados ainda está aberta - não podemos operá-la". Estou postando meu código longo, procurando respostas.

import arcpy import os from datetime import datetime # faça uma conexão com SDE.DEFAULT try: filename1 = "fn1" foldername1 = os.path.join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", "ArcCatalog") servername1 = "gissvc" servicename1 = "sde: oracle11g: GISDEVR" dbname1 = "" auth1 = "" un1 = "MyUser" pass1 = "MyPass" userinfo1 = "" ver1 = "SDE.DEFAULT" sv1 = " SAVE_VERSION "if os.path.isfile (os.path.join (os.environ ['APPDATA']," ESRI "," Desktop10.2 "," ArcCatalog ", filename1 +" .sde ")): os.remove (os.path.join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", "ArcCatalog", filename1 + ".sde")) print "criando conexão com" + ver1 arcpy.CreateArcSDEConnectionFile_management ( foldername1, filename1, servername1, servicename1, dbname1, auth1, un1, pass1, userinfo1, ver1, sv1) ws1 = os.path.join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", " ArcCatalog ", filename1 +" .sde ") ver2 =" net_edits "# cria uma versão para a versão em arcpy.da.ListVersions (ws1): se ver2 em version.name: imprimir ver2 +" existe, excluindo " arcpy.DeleteVersion_management (ws1, version.name) print "criando nova versão," + ver2 arcpy.CreateVersion_management (ws1, "SDE.DEFAULT", ver2, "PUBLIC") # conectar à nova versão filename2 = "fn2" foldername2 = os .path.join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", "ArcCatalog") servername2 = "gissvc" servicename2 = "sde: oracle11g: GISDEVR" dbname2 = "" auth2 = "" un2 = "MyUser" pass2 = "MyPass" userinfo2 = "" # ver2 = "net_edits" sv2 = "SAVE_VERSION" if os.path.isfile (os.path.join (os.environ ['APPDATA'], "ESRI" , "Desktop10.2", "ArcCatalog", filename2 + ".sde")): os.remove (os.path.join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", " ArcCatalog ", filename2 +" .sde ")) print" criando conexão com "+ ver2 arcpy.CreateArcSDEConnectionFile_management (foldername2, filename2, servername2, servicename2, dbname2, auth2, un2, pass2, userinfo2, ver2, sv2) ws2 = os.path .join (os.environ ['APPDATA'], "ESRI", "Desktop10.2", "ArcCatalog", filename2 + ".sde") # editar algumas coisas - selecionar onde status = 5, alterar para "tacos" tbl_vw = "t" where = 'STATUS = 5' arcpy.MakeTableView_management (os.path.join (ws2, "fooditems"), tbl_vw, where, "", "") arcpy.CalculateField_management (tbl_vw, " STATUS ", '" tacos "') # close connections arcpy.ClearWorkspaceCache_management () print arcpy.GetMessages () # reconciliar com post reclogname =" reconcile_log_ "+ str (datetime.now (). Strftime ('% Y-% m- % d ')) + ".txt" reclog = os.path.join ("F:  PythonScripts", "ErrorLogFiles", reclogname) if os.path.isfile (reclog): os.remove (reclog) print "reconciliando com as opções post e delete_version definidas "arcpy.ReconcileVersions_management (ws2," ALL_VERSIONS "," SDE.Default ", ver2," LOCK_ACQUIRED "," ABORT_CONFLICTS "," BY_OBJECT "," FAVOR_TARGET_VERSION "," POSTERSION "," POSTERSION "," ) exceto Exceção como e: print e.message

Eu tive o mesmo problema - passei um tempo solucionando problemas da operação no ArcMap (onde foi bem-sucedido) e, em seguida, copiando o snippet Python do painel de resultados e comparando com meu código.

Resultado final: ao se referir à versão padrão em arcpy.ReconcileVersions_management, deve ser sde.DEFAULT, não SDE.Default. Eu também tinha isso, levei muito tempo para descobrir.


Corrigi esse erro alterando o tipo de conexão para 'dbo.DEFAULT'. Isso foi bem-sucedido porque meu arquivo de conexão foi feito com um usuário com uma função dbo em SQL (embora a autenticação de conexão sde seja OS).

Como: automatizar processos de reconciliar, postar e compactar

DBO ou SDE ou qual esquema?