Upgrade Geodatabase (Data Management)
Summary
Upgrades a geodatabase to the latest release to take advantage of new functionality available in the latest release of ArcGIS. Valid input is a personal or file geodatabase or an sde connection file or connection information for an ArcSDE geodatabase.
You must have the current release of ArcGIS Desktop (ArcEditor or ArcInfo), ArcGIS Engine Runtime with the Geodatabase Update extension, or ArcGIS Server Standard or Advanced installed on the computer from which you will run the upgrade. For ArcSDE geodatabases, a direct connection to the geodatabase is necessary to run the upgrade. The direct-connect drivers that allow you to connect to older, supported geodatabases are automatically installed with ArcGIS Desktop, ArcGIS Engine, and ArcGIS Server.
Usage
Before you upgrade your ArcSDE geodatabase, be sure you have read and performed the steps in the applicable topics:
- To determine the geodatabase version, right-click the geodatabase in the Catalog window and click Properties. The Upgrade Status section of the General tab shows the ArcGIS release of the geodatabase and indicates if your geodatabase can be upgraded to the latest release to take advantage of new functionality.
- At least one of either the Perform Pre-requisite check parameter or the Upgrade geodatabase parameter should be checked. Not checking either results in an error.
- Esri recommends using the prerequisite check prior to upgrading your geodatabase to determine if your geodatabase is ready for upgrading. If any of these prerequisites is not met, the tool logs an error in the Results window and does not upgrade the geodatabase. This saves you from starting the upgrade only to have it fail partway through due to one of these prerequisites not having been met. If any checks fail, you must correct the problem and restart the upgrade process.
- Upgrades from beta versions of the geodatabase are not supported.
- Once a geodatabase has been upgraded, previous versions of ArcGIS will be unable to open it since older versions of ArcGIS cannot read newer versions of the geodatabase.
- The Perform Pre-requisite check option runs different checks depending on what type of geodatabase you are upgrading. For personal and file geodatabases, it determines whether
- The geodatabase is read-only.
- There are no other users connected to the geodatabase.
- The current connection is not editing data in the geodatabase.
- All the information within the current geodatabase system tables can be opened.
- For ArcSDE geodatabases, it determines whether
- The connected user has the appropriate privileges to upgrade.
- The connected user is not editing data in the geodatabase.
- There are no other users connected to the geodatabase.
- The database is enabled to support XML data types.
- All the information within the current geodatabase system tables can be opened.
- For geodatabases in PostgreSQL and Oracle, it detects whether the ST_Geometry library in the database location is current.
- For geodatabases in a user's schema in Oracle, it detects whether the master geodatabase is upgraded.
Syntax
Parameter | Explanation | Data Type |
input_workspace |
The personal, file, or ArcSDE geodatabase to be upgraded | Workspace |
input_prerequisite_check |
Specifies whether the prerequisite check is run prior to upgrading the geodatabase
| Boolean |
input_upgradegdb_check |
Specifies whether the upgrade is performed
| Boolean |
Code Sample
The following Python window script demonstrates how to use the UpgradeGDB function in immediate mode to upgrade a file geodatabase:
import arcpy Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
The following stand-alone Python script demonstrates how to use the UpgradeGDB function in Python scripting to upgrade a file geodatabase:
# 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")
The following stand-alone Python script demonstrates how to use the UpgradeGDB function in Python scripting to upgrade an ArcSDE geodatabase using an existing .sde connection file:
# 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")
The following stand-alone Python script demonstrates how to use the UpgradeGDB function in Python scripting to upgrade an ArcSDE geodatabase in Oracle:
""" 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)
The following stand-alone Python script demonstrates how to use the UpgradeGDB function in Python scripting to upgrade an ArcSDE geodatabase in IBM DB2, Informix, Microsoft SQL Server, or PostgreSQL:
""" 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)