Geodatabase aktualisieren (Data Management)
Zusammenfassung
Eine Geodatabase wird auf die neueste Version aktualisiert, um die Funktionen zu nutzen, die in der aktuellen Version von ArcGIS verfügbar sind. Gültige Eingabeformate sind eine Personal- oder File-Geodatabase oder eine SDE-Verbindungsdatei bzw. Verbindungsinformationen für eine ArcSDE-Geodatabase.
Sie müssen die aktuelle Version von ArcGIS Desktop (ArcEditor oder ArcInfo), ArcGIS Engine Runtime mit der Erweiterung Geodatabase Update oder ArcGIS Server Standard oder Advanced auf dem Computer installiert haben, auf dem Sie das Upgrade ausführen. Für ArcSDE-Geodatabases ist eine direkte Verbindung zur Geodatabase erforderlich, um das Upgrade auszuführen. Die Treiber für Direct Connect, mit denen Sie eine Verbindung zu älteren unterstützten Geodatabases herstellen können, werden automatisch mit ArcGIS Desktop, ArcGIS Engine und ArcGIS Server installiert.
Verwendung
Bevor Sie die ArcSDE-Geodatabase aktualisieren, müssen Sie sicherstellen, dass Sie die Informationen in den relevanten Themen gelesen und die entsprechenden Schritte ausgeführt haben:
Vorbereitung der Aktualisierung einer Geodatabase in DB2Vorbereitung der Aktualisierung einer Geodatabase in InformixVorbereitung der Aktualisierung einer Geodatabase in OracleVorbereitung der Aktualisierung einer Geodatabase in PostgreSQLVorbereitung der Aktualisierung einer Geodatabase in SQL Server- Sie können die Geodatabase-Version bestimmen, indem Sie mit der rechten Maustaste im Fenster Katalog auf Eigenschaften klicken. Im Abschnitt Upgrade-Status der Registerkarte Allgemein wird die ArcGIS-Version der Geodatabase angezeigt und angegeben, ob die Geodatabase auf die neueste Version aktualisiert werden kann, um die neue Funktionalität zu nutzen.
- Mindestens einer der Parameter für Überprüfung von Voraussetzungen durchführen oder Geodatabase aktualisieren muss aktiviert sein. Wenn keine Auswahl angegeben wird, wird ein Fehler ausgegeben.
- Esri empfiehlt, vor dem Aktualisieren der Geodatabase die Prüfung der Voraussetzungen zu nutzen, um zu ermitteln, ob die Geodatabase aktualisiert werden kann. Wenn eine der Voraussetzungen nicht erfüllt ist, protokolliert das Werkzeug einen Fehler im Ergebnisfenster, und die Geodatabase wird nicht aktualisiert. Damit können Sie verhindern, dass Sie mit der Aktualisierung beginnen und diese dann fehlschlägt, weil eine dieser Voraussetzungen nicht erfüllt wurde. Falls bei der Prüfung ein Fehler auftritt, müssen Sie das Problem korrigieren und den Upgrade-Vorgang anschließend erneut starten.
- Aktualisierungen von Betaversionen der Geodatabase werden nicht unterstützt.
- Eine aktualisierte Geodatabase kann nicht in einer älteren ArcGIS-Version geöffnet werden, da ältere Versionen von ArcGIS neuere Versionen der Geodatabase nicht unterstützen.
- Mit der Option Überprüfung von Voraussetzungen durchführen werden – je nach zu aktualisierendem Geodatabase-Typ – verschiedene Prüfungen ausgeführt. Für Personal- und File-Geodatabases wird Folgendes überprüft:
- Die Geodatabase ist schreibgeschützt.
- Es sind keine anderen Benutzer mit der Geodatabase verbunden.
- Mit der aktuellen Verbindung werden keine Daten in der Geodatabase bearbeitet.
- Alle Informationen innerhalb der aktuellen Geodatabase-Systemtabellen können geöffnet werden.
- Für ArcSDE-Geodatabases wird Folgendes überprüft:
- Der verbundene Benutzer hat die entsprechenden Berechtigungen, um eine Aktualisierung auszuführen.
- Der verbundene Benutzer bearbeitet keine Daten in der Geodatabase.
- Es sind keine anderen Benutzer mit der Geodatabase verbunden.
- Die Datenbank ist für die Unterstützung von XML-Datentypen aktiviert.
- Alle Informationen innerhalb der aktuellen Geodatabase-Systemtabellen können geöffnet werden.
- Für Geodatabases in PostgreSQL und Oracle wird ermittelt, ob die Bibliothek "ST_Geometry" im Datenbankverzeichnis aktuell ist.
- Für Geodatabases im Schema eines Benutzers in Oracle wird ermittelt, ob die Master-Geodatabase aktualisiert wird.
Syntax
Parameter | Erläuterung | Datentyp |
input_workspace |
Die zu aktualisierende File-, Personal- oder ArcSDE-Geodatabase | Workspace |
input_prerequisite_check |
Gibt an, ob die Prüfung der Voraussetzungen vor dem Aktualisieren der Geodatabase ausgeführt wird.
| Boolean |
input_upgradegdb_check |
Gibt an, ob die Aktualisierung ausgeführt wird.
| Boolean |
Codebeispiel
Mit dem folgenden Skript im Python-Fenster wird veranschaulicht, wie Sie die Funktion "UpgradeGDB" im unmittelbaren Modus verwenden, um eine File-Geodatabase zu aktualisieren:
import arcpy Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie die Funktion "UpgradeGDB" in einem Python-Skript verwendet wird, um eine File-Geodatabase zu aktualisieren:
# Description: upgrade a geodatabase # Import arcpy module import arcpy # Local variables: Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie die Funktion "UpgradeGDB" in einem Python-Skript verwendet wird, um eine ArcSDE-Geodatabase mithilfe einer vorhandenen .sde-Verbindungsdatei zu aktualisieren:
# Description: upgrade a geodatabase # Import arcpy module import arcpy # Local variables: Output_Workspace = "C:\\Documents and Settings\<user>\Application Data\ESRI\ArcCatalog\Connection to gdb.sde" Default_gdb = "C:\\Documents and Settings\<user>\Application Data\ESRI\ArcCatalog\Connection to gdb.sde" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie die Funktion "UpgradeGDB" in einem Python-Skript verwendet wird, um eine ArcSDE-Geodatabase in Oracle zu aktualisieren:
""" Name: upgrade_gdb.py Description: Provide connection information to an Enterprise geodatabase and upgrade the geodatabase Type upgrade_gdb.py -h or upgrade_gdb.py --help for usage """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0; valid for 10.0 and 10.1 release") #Define help and options parser.add_option ("-s", dest="Server", type="string", default="", help="RDBMS server name") parser.add_option ("-i", dest="Service", type="string", default="", help="Use direct connection syntax") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-v", dest="Version", type="string", help="ArcSDE version name") parser.add_option ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive): TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only. Default=FALSE") parser.add_option ("-d", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection to upgrade server = options.Server service = options.Service account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password version = options.Version.upper() do_upgrade = options.Upgrade database = options.Database.lower() # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level to upgrade if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enterprise geodatabase upgrade requires an ArcEditor, ArcInfo, ArcGIS Engine Geodatabase Update, or ArcGIS Server license." sys.exit("Re-authorize ArcGIS before upgrading.") else: print "\n" + product_license + " license available! Continuing to upgrade..." arcpy.AddMessage("+++++++++") # Check if direct connection if service.find(":") <> -1: #This is direct connect ServiceConnFileName = service.replace(":", "") ServiceConnFileName = ServiceConnFileName.replace(";", "") ServiceConnFileName = ServiceConnFileName.replace("=", "") ServiceConnFileName = ServiceConnFileName.replace("/", "") ServiceConnFileName = ServiceConnFileName.replace("\\", "") else: arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++") sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.") # Local variables Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True # Variables defined within the script; other variable options commented out at the end of the line saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION print "\nCreating ArcSDE Connection File...\n" # Process: Create ArcSDE Connection File... # Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version, save_version_info arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo) for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Upgrade geodatabase... try: if do_upgrade.lower() == "true": print "Upgrading Geodatabase...\n" arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") else: print "Running Pre-Requisite Check...\n" arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "NO_UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)
Mit dem folgenden eigenständigen Python-Skript wird veranschaulicht, wie die Funktion "UpgradeGDB" in einem Python-Skript verwendet wird, um eine ArcSDE-Geodatabase in IBM DB2, Informix, Microsoft SQl Server oder PostgreSQL zu aktualisieren:
""" Name: upgrade_gdb.py Description: Provide connection information to an Enterprise geodatabase and upgrade the geodatabase Type upgrade_gdb.py -h or upgrade_gdb.py --help for usage """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0; valid for 10.0 and 10.1 release") #Define help and options parser.add_option ("-s", dest="Server", type="string", default="", help="RDBMS server name") parser.add_option ("-i", dest="Service", type="string", default="", help="Use direct connection syntax") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-v", dest="Version", type="string", help="ArcSDE version name") parser.add_option ("--upgrade", dest="Upgrade", type="choice", choices=['TRUE', 'FALSE'], default="FALSE", help="Upgrade Options (case-sensitive): TRUE=Perform Pre-requisite check and upgrade geodatabase, FALSE=Perform Pre-requisite check only. Default=FALSE") parser.add_option ("-d", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection to upgrade server = options.Server service = options.Service account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password version = options.Version.upper() do_upgrade = options.Upgrade database = options.Database.lower() # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level to upgrade if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enterprise geodatabase upgrade requires an ArcEditor, ArcInfo, ArcGIS Engine Geodatabase Update, or ArcGIS Server license." sys.exit("Re-authorize ArcGIS before upgrading.") else: print "\n" + product_license + " license available! Continuing to upgrade..." arcpy.AddMessage("+++++++++") # Check if direct connection if service.find(":") <> -1: #This is direct connect ServiceConnFileName = service.replace(":", "") ServiceConnFileName = ServiceConnFileName.replace(";", "") ServiceConnFileName = ServiceConnFileName.replace("=", "") ServiceConnFileName = ServiceConnFileName.replace("/", "") ServiceConnFileName = ServiceConnFileName.replace("\\", "") else: arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++") sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.") # Local variables Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True # Variables defined within the script; other variable options commented out at the end of the line saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION print "\nCreating ArcSDE Connection File...\n" # Process: Create ArcSDE Connection File... # Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version, save_version_info arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo) for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Upgrade geodatabase... try: if do_upgrade.lower() == "true": print "Upgrading Geodatabase...\n" arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") else: print "Running Pre-Requisite Check...\n" arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "NO_UPGRADE") for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)