HOW TO

Bearbeiten von versionierten Sichten mit ArcPy oder ArcObjects nicht möglich

Last Published: October 1, 2025

Beschreibung

Beim Bearbeiten einer versionierten Sicht mit der ArcPy-Funktion "Aktualisierungs-Cursor" wird die folgende Ausnahme zurückgegeben:

Error:
SystemError: error return without exception set. 

Im Folgenden finden Sie ein Beispiel für Python-Code, der zum Bearbeiten einer versionierten Sicht mit der Funktion "updateRow()" verwendet wird.

import arcpy
dbConnection = r'C:\Users\name\AppData\Roaming\ESRI\Desktop10.4\ArcCatalog\sdeconnection.sde'    
tablePath = dbConnection + "\\testdatabase.dataowner.test_evw"
with arcpy.da.UpdateCursor(tablePath, "*") as cur:
    for row in cur:
        row[1] = 3
        cur.updateRow(row)

Ursache

Dies ist das zu erwartende Verhalten. Versionierte Sichten sind für Anwendungen gedacht, die die Geodatabase-Versionierung nicht unterstützen.Versionierte Sichten sind nicht für die Verwendung oder Änderung mit ArcPy in ArcObjects vorgesehen, da die Geodatabase-Versionierung nicht unterstützt wird.

Lösung oder Problemumgehung

Ändern Sie die Feature-Class direkt mit ArcPy. Die Python-Editorfunktion kann mit dem Workspace verwendet werden, der, wie im folgenden Beispiel gezeigt wird, auf eine transaktionale Version verweist:

import arcpy

#Start of parameters to change
path = r'C:\temp'
connection = "testversion.sde"
fc = "dataowner.test"
instance = "machinename"
username, password = "owner1", "owner1"
database = "testdatabase"
version = "dataowner.testversion"
#End of parameters to change
#There are more parameters in arcpy.CreateDatabaseConnection_management that we may wish to modify.

tablePath = path + "\\" + connection + "\\" + fc
arcpy.CreateDatabaseConnection_management(path, connection, "SQL_SERVER", instance, "DATABASE_AUTH", username, password, "SAVE_USERNAME", database, "", "TRANSACTIONAL", version)   
editor = arcpy.da.Editor(path + "\\" + connection )        
editor.startEditing() 
editor.startOperation()
with arcpy.da.UpdateCursor(tablePath, "*") as cur:
    for row in cur:
        row[1] = 3
        cur.updateRow(row)    
editor.stopOperation() 
editor.stopEditing(True)

Wenn die versionierte Sicht mit Python bearbeitet werden muss, beachten Sie, dass Python SQL-Anweisungen ausführen kann. ArcSDESQLExecute ist z. B. eine Alternative zum Bearbeiten versionierter Sichten. Weitere Informationen zu ArcSDESQLExecute finden Sie im Webhilfe-Dokument ArcMap: ArcSDESQLExecute.Darüber hinaus gibt es andere Module, die zum Verbinden und Ändern von Tabellen in einer Datenbank verwendet werden können (z. B. cx_Oracle für Oracle).

Artikel-ID: 000012986

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln