Mettre à niveau la géodatabase (Gestion des données)

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ètreExplicationType 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.

  • NO_PREREQUISITE_CHECKLe contrôle préalable n'est pas exécuté.
  • PREREQUISITE_CHECKLe contrôle préalable est exécuté. Il s’agit de l’option par défaut.
Boolean
input_upgradegdb_check

Spécifiez si la géodatabase doit être mise à niveau ou non.

  • NO_UPGRADELa mise à niveau n'est pas exécutée.
  • UPGRADELa mise à niveau est exécutée. Il s’agit de l’option par défaut.
Boolean

Sortie dérivée

NomExplicationType de données
out_workspace

Géodatabase mise à jour.

Espace de travail

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 (autonome)

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)

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 4 d'utilisation de l'outil UpgradeGeodatabase (script autonome)

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)

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes