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

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln