Geodatabase aktualisieren (Data Management)

Zusammenfassung

Aktualisiert eine Geodatabase auf die neuste ArcGIS-Version, um die neuen Funktionen nutzen zu können.

Auf dem Computer, auf dem das Upgrade durchgeführt werden soll, muss die aktuelle Version von ArcGIS AllSource oder ArcGIS Server installiert sein.

Verwendung

  • Dieses Werkzeug akzeptiert eine File-Geodatabase oder eine Enterprise-Geodatabase-Verbindungsdatei als Eingabe.

  • Enterprise-Geodatabases können nicht über ArcGIS AllSource mit einer Basis-Lizenz aktualisiert werden.

  • Bevor Sie eine Enterprise-Geodatabase aktualisieren, müssen Sie die vorbereitenden Schritte ausführen, die für das verwendete Datenbankmanagementsystem erforderlich sind, und vor allem eine Sicherung der Datenbank erstellt haben. Für Oracle und für Geodatabases in PostgreSQL, die den Speichertyp "ST_Geometry" verwenden, müssen Sie den Ordner "DatabaseSupport" von My Esri herunterladen, um eine neue ST_Geometry-Bibliothek zu erhalten. Weitere Informationen zu anderen vorbereitenden Schritten finden Sie in den folgenden Themen:

  • Sie müssen mindestens einen der beiden Parameter Überprüfung von Voraussetzungen durchführen und Geodatabase aktualisieren aktivieren. Sie können das Werkzeug erst ausführen, wenn Sie mindestens einen dieser Parameter aktiviert haben.

  • Vor dem Aktualisieren der Geodatabase sollten Sie die Voraussetzungen prüfen, um zu ermitteln, ob sie aktualisiert werden kann. Wenn eine der Voraussetzungen nicht erfüllt ist, wird im Geoverarbeitungsverlauf ein Fehler protokolliert. 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.

  • Mit der Option Überprüfung von Voraussetzungen durchführen werden für jeden Geodatabase-Typ verschiedene Prüfungen ausgeführt. Für File-Geodatabases wird überprüft, ob eine der folgenden Bedingungen zutrifft:

    • 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 in den aktuellen Geodatabase-Systemtabellen können geöffnet werden.
    • Für Enterprise-Geodatabases wird überprüft, ob die folgenden Kriterien erfüllt sind:
      • Der verbundene Benutzer hat die entsprechenden Berechtigungen zum Aktualisieren der Geodatabase.
      • 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 in den aktuellen Geodatabase-Systemtabellen können geöffnet werden.
      • Für Geodatabases in Oracle und für Geodatabases in PostgreSQL, die den Speichertyp "ST_Geometry" verwenden, wird ermittelt, ob die Datenbank auf die aktuelle Version der Bibliothek "ST_Geometry" zugreifen kann.
  • Für Enterprise-Geodatabases, die nach Verzweigung versionierte Daten enthalten, analysiert der Aktualisierungsprozess die Verzweigungsversionen und die nach Verzweigung versionierten Daten auf Inkonsistenzen und schreibt die Ergebnisse der Analyse in eine Protokolldatei. Weitere Informationen finden Sie unter Funktionsweise von "Geodatabase aktualisieren".

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Geodatabase

Die Geodatabase, die aktualisiert werden soll. Geben Sie beim Aktualisieren einer Enterprise-Geodatabase eine Datenbankverbindungsdatei (.sde) an, mit der eine Verbindung mit der Geodatabase als Geodatabase-Administrator hergestellt wird.

Workspace
Überprüfung von Voraussetzungen durchführen

Gibt an, ob die Prüfung der Voraussetzungen vor dem Aktualisieren der Geodatabase ausgeführt werden soll.

  • Deaktiviert: Die Prüfung der Voraussetzungen wird nicht ausgeführt. Dies ist die Standardeinstellung.
  • Aktiviert: Die Prüfung der Voraussetzungen wird vor dem Aktualisieren der Geodatabase ausgeführt.
Boolean
Geodatabase aktualisieren

Gibt an, ob die Eingabe-Geodatabase aktualisiert werden soll, damit sie mit der Version des ArcGIS-Clients übereinstimmt, in der das Werkzeug ausgeführt wird.

  • Deaktiviert: Die Geodatabase wird nicht aktualisiert. Dies ist die Standardeinstellung.
  • Aktiviert: Die Geodatabase wird aktualisiert.
Boolean

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Aktualisierte Eingabe-Geodatabase

Die aktualisierte Geodatabase.

Workspace

arcpy.management.UpgradeGDB(input_workspace, input_prerequisite_check, input_upgradegdb_check)
NameErläuterungDatentyp
input_workspace

Die Geodatabase, die aktualisiert werden soll. Geben Sie beim Aktualisieren einer Enterprise-Geodatabase eine Datenbankverbindungsdatei (.sde) an, mit der eine Verbindung mit der Geodatabase als Geodatabase-Administrator hergestellt wird.

Workspace
input_prerequisite_check

Gibt an, ob die Prüfung der Voraussetzungen vor dem Aktualisieren der Geodatabase ausgeführt werden soll.

  • NO_PREREQUISITE_CHECKDie Prüfung der Voraussetzungen wird nicht ausgeführt.
  • PREREQUISITE_CHECKDie Prüfung der Voraussetzungen wird vor dem Aktualisieren der Geodatabase ausgeführt. Dies ist die Standardeinstellung.
Boolean
input_upgradegdb_check

Gibt an, ob die Eingabe-Geodatabase aktualisiert werden soll.

  • NO_UPGRADEDie Geodatabase wird nicht aktualisiert.
  • UPGRADEDie Geodatabase wird aktualisiert. Dies ist die Standardeinstellung.
Boolean

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_workspace

Die aktualisierte Geodatabase.

Workspace

Codebeispiel

UpgradeGDB: Beispiel 1 (Python-Fenster)

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
default_gdb = "C:/temp/Default.gdb"
arcpy.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
UpgradeGDB: Beispiel 2 (eigenständiges Skript)

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:
default_gdb = "C:/temp/Default.gdb"

# Process: Upgrade Geodatabase
arcpy.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
UpgradeGDB: Beispiel 3 (eigenständiges Skript)

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:
default_gdb = "C:/connections/gdbconnection.sde"

# Process: Upgrade Geodatabase
arcpy.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
UpgradeGDB: Beispiel 4 (eigenständiges Skript)

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
"""

# Import system modules
import arcpy
import os
import optparse
import sys


# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 2.0; valid for 10.1 only")

#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 Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS 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)

Verwandte Themen