Daha çox

ReconcileVersions vasitəsi ERROR 000301 verir


Bir versiya yaratmaq, versiyaya addımlamaq, düzəlişlər etmək və sonra həmin versiyanı göndərmək və barışdırmaq istəyirəm. ReconcileVersions_management alətinə çatanda mənə verir

ERROR 000301: İş sahəsi səhv tipdədir

Düşünürəm ki, bu "versiya redaktə üçün kilidlənib" və ya "db ilə əlaqə hələ də açıqdır - bunun üzərində işləyə bilmərik" deməkdir. Uzun iş kodumu göndərirəm, cavablar axtarıram.

datetime import datetime-dan arcpy import os idxal # SDE.DEFAULT ilə əlaqə qurun: 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 "əgər 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")) "+ ver1 arcpy.CreateArcSDEConnectionFile_management" ilə əlaqə yaratmaq foldername1, dosya adı1, 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 "# arcpy.da.ListVersions (ws1) içindəki versiya üçün bir versiya yaradın: versiya.name-də ver2 varsa: çap ver2 +" mövcuddur, silinir " arcpy.DeleteVersion_management (ws1, version.name) print "yeni versiya yaratmaq", + ver2 arcpy.CreateVersion_management (ws1, "SDE.DEFAULT", ver2, "PUBLIC") # yeni versiyaya qoşulmaq 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" əgər 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 "))" + ver2 arcpy.CreateArcSDEConnectionFile_management (foldername2, filename2, servername2, servicename2, dbname2, auth2, un2, pass2, userinfo2, verp, s2, sv. .qoşul (os.environ ['APPDATA'], "ESRI", "Desktop10.2", "ArcCatalog", filename2 + ".sde") # bəzi şeyləri redaktə edin - status = 5 olduğu yeri seçin, dəyişdirin to "tacos" tbl_vw = "t" burada = 'STATUS = 5' arcpy.MakeTableView_management (os.path.join (ws2, "fooditems"), tbl_vw, where, "", "") arcpy.CalculateField_management (tbl_vw, " STATUS ", '" tacos "') # əlaqələri bağlayın arcpy.ClearWorkspaceCache_management () print arcpy.GetMessages () # 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 "reconciling post və delete_version seçimləri ilə "arcpy.ReconcileVersions_management (ws2," ALL_VERSIONS "," SDE.Default ", ver2," LOCK_ACQUIRED "," ABORT_CONFLICTS "," BY_OBJECT "," FAVOR_TARGET_VERSION "," set " ) istisnalar istisna olmaqla e: print e.message

Eyni problemi yaşadım - ArcMap-da əməliyyatın problemini həll etməyə vaxt sərf etdim (müvəffəq olduğu yer), sonra python parçasını Nəticələr bölməsindən kopyalayıb kodumla müqayisə etdim.

Son nəticə: arcpy.ReconcileVersions_management-dəki standart versiyaya istinad edərkən, SDE.Default deyil, sde.DEFAULT olmalıdır. Məndə də belə idi, başa düşməyim çox vaxt apardı.


Bağlantı növünü 'dbo.DEFAULT' olaraq dəyişdirərək bu xətanı düzəltdim. Bu müvəffəq oldu, çünki bağlantı sənədim SQL-də dbo rolu olan bir istifadəçi ilə edildi (sde bağlantısı doğrulaması OS olsa da).

Nasıl Yapılır: Uzlaşma, göndərmə və sıxılma proseslərini avtomatlaşdırın

DBO ya SDE ya hansı sxem?