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 des informations de connexion à une géodatabase ArcSDE.
La version actuelle d'ArcGIS for Desktop Standard, ArcGIS for Desktop Advanced, ArcGIS Engine - Mise à jour géodatabase, ArcGIS for Server Advanced ou ArcGIS for Server Standard doit être installée sur l'ordinateur à partir duquel vous allez effectuer la mise à niveau. Pour les géodatabases d'entreprise, vous devez avoir une connexion directe à la géodatabase pour exécuter la mise à niveau.
Utilisation
Avant de mettre à niveau la géodatabase d'entreprise, assurez-vous que vous avez bien compris et effectué la procédure pas à pas présentée dans les rubriques suivantes :
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 mettre à niveau la géodatabase pour savoir si la géodatabase est prête pour une mise à niveau. Si l'un de ces contrôles n'est pas satisfaisant, 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.
- 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 de géodatabases personnelle 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 de géodatabases d'entreprise, 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 |
Spécifie si le contrôle préalable est exécuté avant de mettre à niveau la géodatabase
| Boolean |
input_upgradegdb_check |
Spécifie 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 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:
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 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:
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 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
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)