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

Synthèse

Met à niveau une géodatabase vers la dernière version ArcGIS pour tirer profit des nouvelles fonctionnalités.

La version actuelle de ArcGIS AllSource ou de ArcGIS Server doit être installée sur l’ordinateur sur lequel la mise à niveau sera lancée.

Utilisation

  • Cet outil accepte un fichier de connexion de géodatabase fichier ou de géodatabase d’entreprise en entrée.

  • Vous ne pouvez pas mettre à niveau les géodatabases d’entreprise à partir d’ArcGIS AllSource avec une licence Basic.

  • Avant de mettre à niveau une géodatabase d’entreprise, vous devez suivre 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 les géodatabases dans Oracle et dans PostgreSQL qui utilisent le type ST_Geometry, vous devez télécharger le dossier DatabaseSupport depuis My Esri pour obtenir une nouvelle bibliothèque ST_Geometry. Pour les autres étapes préparatoires, consultez les rubriques suivantes :

  • Vous devez sélectionner le paramètre Exécuter le contrôle préalable ou Mettre à niveau la géodatabase, ou les deux. Vous ne pouvez pas exécuter l’outil tant qu’au moins un de ces paramètres n’est pas activé.

  • Effectuez le contrôle préalable avant de mettre à niveau la géodatabase pour déterminer si cette dernière est prête pour une mise à niveau. Si l’un des prérequis n’est pas satisfait, une erreur est consignée dans l’historique du géotraitement. Cette approche vous évite de voir échouer la mise à niveau parce qu’un prérequis n’est pas satisfait. 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.

  • Le paramètre Exécuter le contrôle préalable 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 active ne modifie pas de données dans la géodatabase.
    • Toutes les informations contenues dans les tables système de la géodatabase active peuvent être ouvertes.
    • Pour les géodatabases d’entreprise, 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 de 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 active peuvent être ouvertes.
      • Dans le cas des géodatabases dans Oracle et PostgreSQL qui utilisent le type ST_Geometry, l’option détermine si la base de données peut accéder à la version actuelle de la bibliothèque ST_Geometry.
  • Pour les géodatabases d’entreprise qui contiennent des données en branche versionnées, le processus de mise à niveau analyse les versions de branche et les données en branche versionnées pour détecter les incohérences et consigne les résultats de l’analyse dans un fichier journal. Reportez-vous à la rubrique Fonctionnement de l’outil Mettre à niveau la géodatabase pour plus d’informations.

Paramètres

ÉtiquetteExplicationType de données
Géodatabase en entrée

La géodatabase à mettre à niveau. Lorsque vous mettez à niveau une géodatabase d’entreprise, spécifiez un fichier de connexion à la base de données (.sde) qui établit la connexion à la géodatabase en tant qu’administrateur de la géodatabase.

Workspace
Exécuter le contrôle préalable

Spécifie si le contrôle préalable est exécuté avant la mise à niveau de la géodatabase.

  • Désactivé : le contrôle préalable n’est pas exécuté. Il s’agit de l’option par défaut.
  • Activé : le contrôle préalable est exécuté avant la mise à niveau de la géodatabase.
Boolean
Mettre à niveau une géodatabase

Spécifie si la géodatabase en entrée est mise à niveau pour correspondre à la version du client ArcGIS qui exécute l’outil.

  • Désactivé : la géodatabase n’est pas mise à niveau. Il s’agit de l’option par défaut.
  • Activé : la géodatabase est mise à niveau.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Géodatabase en entrée mise à jour

La géodatabase mise à niveau.

Workspace

arcpy.management.UpgradeGDB(input_workspace, input_prerequisite_check, input_upgradegdb_check)
NomExplicationType de données
input_workspace

La géodatabase à mettre à niveau. Lorsque vous mettez à niveau une géodatabase d’entreprise, spécifiez un fichier de connexion à la 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écifie si le contrôle préalable est exécuté avant la mise à niveau de la géodatabase.

  • NO_PREREQUISITE_CHECKLe contrôle préalable n’est pas exécuté.
  • PREREQUISITE_CHECKLe contrôle préalable est exécuté avant la mise à niveau de la géodatabase. Il s’agit de l’option par défaut.
Boolean
input_upgradegdb_check

Spécifie si la géodatabase en entrée est mise à niveau.

  • NO_UPGRADELa géodatabase n’est pas mise à niveau.
  • UPGRADELa géodatabase est mise à niveau. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
out_workspace

La géodatabase mise à niveau.

Workspace

Exemple de code

Exemple 1 d’utilisation de la fonction UpgradeGDB (fenêtre Python)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction UpgradeGDB en mode immédiat pour la mise à niveau d’une géodatabase fichier.

import arcpy
default_gdb = "C:/temp/Default.gdb"
arcpy.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple 2 d’utilisation de la fonction UpgradeGDB (autonome)

Le script autonome Python 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.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple 3 d’utilisation de la fonction UpgradeGDB (script autonome)

Le script autonome Python 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.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Exemple 4 d’utilisation de la fonction UpgradeGDB (script autonome)

Le script autonome Python 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)

Rubriques connexes