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.
Utilisation
L'outil Mettre à niveau la géodatabase accepte une géodatabase fichier ou un fichier de connexion .sde en entrée.
Vous ne pouvez pas mettre à niveau les géodatabases 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 Oracle et PostgreSQL, vous devez télécharger le dossier DatabaseSupport depuis My Esri pour obtenir une nouvelle bibliothèque ST_Geometry. Pour d'autres étapes préparatoires, consultez ces rubriques :
- 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. L'outil ne peut pas s'exécuter tant qu'au moins un de ces paramètres n'est pas activé.
- 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 satisfaits, une erreur est consignée dans l'historique du géotraitement. 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 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 d'enterprise, l'option détermine si les critères suivants sont respectés :
- L’utilisateur connecté dispose des privilèges appropriés pour mettre à niveau la géodatabase.
- 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.
- Pour les géodatabases dans PostgreSQL et Oracle, elle détecte si la base de données peut accéder à la version actuelle de la bibliothèque ST_Geometry.
- Pour les géodatabases du schéma d’un utilisateur dans Oracle, elle détecte si la géodatabase principale est mise à niveau.
Les localisateurs stockés dans une géodatabase ne sont plus pris en charge. Si un localisateur est stocké dans la géodatabase à mettre à niveau, vous devez au préalable vous connecter à la géodatabase à partir de ArcGIS Desktop 10.4.1 ou d’une version antérieure, puis supprimer le localisateur.
Syntaxe
UpgradeGDB(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 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 |
Sortie dérivée
Nom | Explication | Type de données |
out_workspace | Géodatabase mise à jour. | Espace de travail |
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
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:
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:
default_gdb = "C:/connections/gdbconnection.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
"""
# 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
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?