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, eine SDE-Verbindungsdatei oder Verbindungsinformationen für eine ArcSDE-Geodatabase.
Sie müssen die aktuelle Version von ArcGIS for Desktop Standard, ArcGIS for Desktop Advanced, ArcGIS Engine Geodatabase Update oder ArcGIS for Server Advanced bzw. ArcGIS for Server Standard auf dem Computer installiert haben, auf dem Sie das Upgrade ausführen. Für Geodatabases von Unternehmen ist eine direkte Verbindung zur Geodatabase erforderlich, um das Upgrade auszuführen.
Verwendung
Bevor Sie die Enterprise-Geodatabase aktualisieren, müssen Sie sicherstellen, dass Sie die Informationen in den relevanten Themen gelesen und die entsprechenden Schritte ausgeführt haben:
- 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, Ü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 Enterprise-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 die Funktion "UpgradeGDB" im unmittelbaren Modus verwendet wird, 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 Enterprise-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 Enterprise-Geodatabase 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
Author: Esri
"""
# Import system modules
import arcpy, os, optparse, sys
# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] )
#Define help and options
parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS',''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.")
parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
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 ("--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
account_authentication = options.account_authentication.upper()
username = options.User.lower()
password = options.Password
do_upgrade = options.Upgrade
database = options.Database.lower()
database_type = options.Database_type.upper()
instance = options.Instance
if (database_type == ""):
print "\nDatabase type must be specified!\n"
parser.print_help()
sys.exit(3)
if (database_type == "SQLSERVER"):
database_type = "SQL_SERVER"
# 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 ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license."
sys.exit("Re-authorize ArcGIS before upgrading.")
else:
print "\n" + product_license + " license available! Continuing to upgrade..."
arcpy.AddMessage("+++++++++")
# Local variables
instance_temp = instance.replace("\\","_")
instance_temp = instance_temp.replace("/","_")
instance_temp = instance_temp.replace(":","_")
Conn_File_NameT = instance_temp + "_" + 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 = Conn_File_NameT + ".sde"
Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
# Check for the .sde file and delete it if present
arcpy.env.overwriteOutput=True
if os.path.exists(Connection_File_Name_full_path):
os.remove(Connection_File_Name_full_path)
print "\nCreating Database Connection File...\n"
# Process: Create Database Connection File...
# Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true)
arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE")
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")
# Check whether geodatabase needs upgrade
isCurrent = arcpy.Describe(Connection_File_Name_full_path).currentRelease
if isCurrent == True:
print "The geodatabase is already at the current release and cannot be upgraded!"
sys.exit("Upgrade did not run.")
# Process: Upgrade geodatabase...
try:
if do_upgrade.lower() == "true":
print "Upgrading Geodatabase...\n"
arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_check="UPGRADE")
for i in range(arcpy.GetMessageCount()):
arcpy.AddReturnMessage(i)
arcpy.AddMessage("+++++++++\n")
else:
print "Running Pre-Requisite Check...\n"
arcpy.UpgradeGDB_management(input_workspace=Connection_File_Name_full_path, input_prerequisite_check="PREREQUISITE_CHECK", input_upgradegdb_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)
if os.path.exists(Connection_File_Name_full_path):
os.remove(Connection_File_Name_full_path)
#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)