Mettre à niveau la géodatabase (Data Management)
Récapitulatif
Met à niveau une géodatabase pour tirer pleinement parti des nouvelles fonctionnalités offertes par la dernière version d'ArcGIS. Pour être valide, l'entrée doit être une géodatabase fichier ou personnelle, un fichier de connexion sde ou se présenter sous la forme d'informations de connexion pour une géodatabase ArcSDE.
Vous devez disposer de la version actuelle d'ArcGIS Desktop (ArcEditor ou ArcInfo), d'ArcGIS Engine Runtime avec l'extension Geodatabase Update ou d'ArcGIS Server Standard ou Avancé sur l'ordinateur sur lequel vous allez exécuter la mise à niveau. Pour les géodatabases ArcSDE, vous devez avoir une connexion directe à la géodatabase pour exécuter la mise à niveau. Les pilotes de connexion directe qui permettent de se connecter aux géodatabases plus anciennes prises en charge, sont installés automatiquement avec ArcGIS Desktop, ArcGIS Engine et ArcGIS Server.
Utilisation
Avant de mettre à niveau votre géodatabase ArcSDE, veillez à lire et exécuter la procédure présentée dans les rubriques appropriées :
Préparation à la mise à niveau d'une géodatabase dans DB2Préparation à la mise à niveau d'une géodatabase dans InformixPréparation à la mise à niveau d'une géodatabase dans OraclePréparation à la mise à niveau d'une géodatabase dans PostgreSQLPréparation à la mise à niveau d'une géodatabase dans SQL Server- Pour connaître la version de la géodatabase, cliquez avec le bouton droit de la souris sur la géodatabase dans la fenêtre Catalogue, puis sélectionnez Propriétés. La section Etat de la mise à niveau de l'onglet Application affiche la version ArcGIS de la géodatabase et indique si votre géodatabase peut être mise à niveau à la version la plus récente pour tirer parti des nouvelles fonctionnalités.
- Vous devez cocher un des paramètres suivants au moins Exécuter une recherche de prérequis ou Mettre à niveau la géodatabase. Si aucun paramètre n'est activé, le système génère une erreur.
- ESRI recommande d'effectuer le contrôle préalable avant de procéder à la mise à niveau de votre géodatabase. Si l'une des conditions requises n'est pas remplie, l'outil consigne une erreur dans la fenêtre Résultats et ne met pas à niveau la géodatabase. Ce contrôle vous évite de lancer une mise à niveau et de constater, au final, que l'opération a échoué parce qu'une condition requise n'était pas remplie. Si une vérification échoue, vous devez résoudre le problème et relancer le processus de mise à niveau.
- Les mises à niveau des versions bêta de la géodatabase ne sont pas prises en charge.
- Une fois la géodatabase mise à niveau, les versions précédentes d'ArcGIS ne peuvent plus l'ouvrir, car elles sont incapables de lire les versions plus récentes de la géodatabase.
- L'option Exécuter une recherche de prérequis exécute différents contrôles en fonction de la géodatabase mise à niveau. Dans le cas des géodatabases personnelles et fichier, les contrôles déterminent si :
- La géodatabase est en lecture seule.
- Il n'y a pas d'autres utilisateurs connectés à la géodatabase.
- La connexion courante ne modifie pas les données dans la géodatabase.
- Toutes les informations contenues dans les tables système de la géodatabase courante peuvent être ouvertes.
- Dans le cas des géodatabases ArcSDE, les contrôles déterminent si :
- L'utilisateur connecté a les privilèges appropriés pour la mise à niveau.
- L'utilisateur connecté ne modifie pas les données dans la géodatabase.
- Il n'y a pas d'autres utilisateurs connectés à la géodatabase.
- La base de données peut prendre en charge les types de données XML.
- Toutes les informations contenues dans les tables système de la géodatabase courante peuvent être ouvertes.
- Dans le cas de géodatabases PostgreSQL et Oracle, les contrôles déterminent si la bibliothèque ST_Geometry contenue dans l'emplacement de la base de données est la bibliothèque courante.
- Dans le cas de géodatabases dans la structure d'un utilisateur dans Oracle, les contrôles déterminent si la géodatabase principale est mise à niveau.
Syntaxe
Paramètre | Explication | Type de données |
input_workspace |
Géodatabase personnelle, fichier ou ArcSDE à mettre à niveau | Workspace |
input_prerequisite_check |
Indique si le contrôle préalable est exécuté avant de mettre à niveau la géodatabase
| Boolean |
input_upgradegdb_check |
Indique si la mise à niveau est effectuée.
| Boolean |
Exemple de code
Le script de fenêtre Python suivant illustre l'utilisation de la fonction UpgradeGDB en mode immédiat pour mettre à niveau une géodatabase fichier :
import arcpy Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Le script Python autonome suivant illustre l'utilisation de la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase fichier :
# 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")
Le script Python autonome suivant illustre l'utilisation de la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase ArcSDE à l'aide d'un fichier de connexion .sde existant :
# 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")
Le script Python autonome suivant illustre l'utilisation de la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase ArcSDE dans 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)
Le script Python autonome suivant illustre l'utilisation de la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase ArcSDE dans IBM DB2, Informix, Microsoft SQL Server ou 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)