Résumé
Mise à niveau d'une géodatabase vers la dernière version d'ArcGIS pour tirer profit des nouvelles fonctionnalités.
La version actuelle d'ArcGIS Desktop ou d'ArcGIS Server doit être installée sur l'ordinateur à partir duquel la mise à niveau sera lancée. Pour les géodatabases d'entreprise, vous devez vous connecter directement à la géodatabase à mettre à niveau. Vous ne pouvez pas vous connecter via un service ArcSDE.
Utilisation
L'outil Mettre à niveau la géodatabase accepte une géodatabase personnelle, une géodatabase fichier ou un fichier de connexion .sde en entrée.
Vous ne pouvez pas mettre à niveau les géodatabases de bureau, de groupe de travail ou d'entreprise à partir d'ArcGIS Desktop Basic.
Avant de mettre à niveau votre géodatabase d'entreprise, vérifiez que vous avez suivi les étapes préparatoires requises pour le système de gestion de base de données que vous utilisez, notamment la création d'une sauvegarde de la base de données.
- Pour connaître la version de la géodatabase, cliquez avec le bouton droit de la souris sur la géodatabase dans l'arborescence du 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 vers la version ArcGIS la plus récente.
- Vous devez sélectionner au moins le paramètre Exécuter une recherche de prérequis ou le paramètre Mettre à niveau la géodatabase, ou même les deux. Si aucun des paramètres n'est activé, le système génère une erreur.
- Esri recommande d'effectuer le contrôle préalable avant de mettre à niveau la géodatabase afin de savoir si la géodatabase est prête pour une mise à niveau. Si l'un de ces prérequis n'est pas satisfait, l'outil enregistre une erreur dans la fenêtre Résultats et ne met pas à niveau la géodatabase. Cette manière de faire vous évite de lancer la mise à niveau et de constater au final qu'elle n'a pas abouti parce qu'un prérequis n'est pas satisfaisant. Si tous les contrôles échouent, 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.
- L'option Exécuter une recherche de prérequis exécute différents contrôles pour chaque type de géodatabase. Pour les géodatabases personnelles et fichier, l'option détermine si l'une des conditions suivantes est vraie :
- 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.
- Pour les géodatabases de bureau, de groupe de travail et d'entreprise, l'option détermine si les critères suivants sont respectés :
- 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.
- Aucun autre utilisateur n'est connecté à 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 des géodatabases dans PostgreSQL et Oracle, les contrôles déterminent si la base de données peut accéder à la version actuelle de la bibliothèque ST_Geometry.
- 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
UpgradeGDB_management (input_workspace, input_prerequisite_check, input_upgradegdb_check)
Paramètre | Explication | Type de données |
input_workspace | Spécifiez la géodatabase à mettre à niveau. Lorsque vous mettez à niveau une géodatabase de bureau, de groupe de travail ou d'entreprise, spécifiez un fichier de connexion à une base de données (.sde) qui établit la connexion à la géodatabase en tant qu'administrateur de la géodatabase | Workspace |
input_prerequisite_check | Spécifiez si le contrôle préalable est exécuté avant de mettre à niveau la géodatabase.
| Boolean |
input_upgradegdb_check | Spécifiez si la géodatabase doit être mise à niveau ou non.
| Boolean |
Exemple de code
Exemple 1 d'utilisation de l'outil UpgradeGeodatabase (fenêtre Python)
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
Default_gdb = "C:/temp/Default.gdb"
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple 2 d'utilisation de l'outil UpgradeGeodatabase (script autonome pour la géodatabase fichier)
Le script Python autonome suivant montre comment utiliser 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:
Default_gdb = "C:/temp/Default.gdb"
# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple 3 d'utilisation de l'outil UpgradeGeodatabase (script autonome à l'aide d'un fichier de connexion .sde)
Le script Python autonome suivant montre comment utiliser la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase d'entreprise à l'aide d'un fichier de connexion .sde existant :
# Description: upgrade a geodatabase
# Import arcpy module
import arcpy
# Local variables:
Default_gdb = "C:/connections/gdbconnection.sde"
# Process: Upgrade Geodatabase
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple d'utilisation n°4 de l'outil UpgradeGeodatabase (script autonome pour une géodatabase d'entreprise)
Le script Python autonome suivant montre comment utiliser la fonction UpgradeGDB dans le script Python pour mettre à niveau une géodatabase d'entreprise :
"""
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)
Environnements
Informations de licence
- ArcGIS Desktop Basic: Oui
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui