Mettre à niveau une géodatabase dans SAP HANA

Disponible avec une licence Standard ou Advanced.

La mise à niveau d'une géodatabase d'entreprise consiste à mettre à jour les tables système de géodatabase, les procédures stockées, les types et les fonctions pour bénéficier des nouvelles fonctionnalités et des corrections de bogues. Il peut aussi être nécessaire de mettre à niveau la base de données si la version que vous utilisez n’est plus prise en charge pour les clients ArcGIS que vous utilisez.

Installez une nouvelle version de ArcGIS AllSource ou ArcGIS Server ou appliquez un service pack, un patch ou un correctif à une installation existante, puis mettez à niveau la géodatabase.

Remarque :

Même si vous ne mettez pas à niveau la géodatabase, il se peut que la version de base de données que vous utilisez ne soit plus prise en charge avec la version actuelle du logiciel ArcGIS. Si la version de base de données n’est plus prise en charge, il peut être nécessaire de mettre à niveau la géodatabase. Plus vous laissez passer de temps entre les mises à niveau, plus le processus de mise à niveau est complexe.

Lorsque vous mettez à niveau la géodatabase à l’aide de ArcGIS AllSource 3.3, la version de la géodatabase mise à niveau est 11.3.0.

Effectuez les étapes requises avant la mise à niveau, puis mettez à niveau la géodatabase à l’aide de l’outil de géotraitement Upgrade Geodatabase (Mettre à niveau la géodatabase) ou d’un script Python.

Avant de procéder à la mise à niveau

Planifiez à l’avance la mise à niveau d’un système d’entreprise, notamment une géodatabase. Testez la nouvelle version sur un serveur de développement ou de test pour vérifier qu'elle fonctionne avec toutes vos applications clientes.

Une fois que vous vous êtes assuré que le nouveau système fonctionne comme prévu, programmez la mise à niveau ; assurez-vous que le personnel nécessaire est disponible pour effectuer la mise à niveau et qu’il dispose des autorisations nécessaires pour effectuer les tâches qui lui sont attribuées.

Il n’existe aucun mécanisme formel permettant de rétrograder une géodatabase vers une version antérieure. Si, après avoir effectué une mise à niveau vers une version plus récente, vous avez besoin de rétrograder la géodatabase, vous devez restaurer l’ancienne base de données à partir d’un fichier de sauvegarde.

La liste de contrôle suivante décrit les étapes à suivre avant de mettre à niveau votre géodatabase :

  1. Consultez la configuration requise ArcGIS pour SAP HANA afin de vérifier que Esri prend en charge l’association des versions SAP HANA et ArcGIS à utiliser.

    Vous pouvez effectuer une mise à niveau directement à partir d’une géodatabase 10.8.x ou version ultérieure si la version de la base de données SAP HANA est prise en charge pour la version ArcGIS vers laquelle vous effectuez la mise à niveau. Si la version de base de données n’est pas prise en charge pour la version de géodatabase vers laquelle vous effectuez la mise à niveau, vous devez également mettre à niveau la base de données.

  2. Confirmez que votre géodatabase peut être mise à jour. Pour ce faire, installez la version ArcGIS AllSource ou ArcGIS Server vers laquelle vous souhaitez migrer sur un ordinateur.
    • Pour vérifier à partir de ArcGIS AllSource, connectez-vous à la géodatabase dans la fenêtre Catalog (Catalogue) et ouvrez Database Properties (Propriétés de la base de données). Un message s’affiche sous Upgrade Status (État de mise à niveau) indiquant si une mise à niveau est possible.
    • Pour vérifier à partir de ArcGIS Server, utilisez la fonctionArcPy Describe pour déterminer si vous pouvez mettre la géodatabase à niveau. L’exemple suivant montre comment créer une connexion à la géodatabase et vérifier si la géodatabase peut être mise à niveau :
      # Open Python.
      cd /arcgis/server/tools
      ./python
      
      # Create a connection to the geodatabase. You must connect as the sde user.
      arcpy.CreateDatabaseConnection_management("/usr/tmp/",
                                                "egdb_connection.sde",
                                                "SAP HANA",
                                                sys.argv[1],
                                                "DATABASE_AUTH",
                                                "sde",
                                                sys.argv[2],
                                                "SAVE_USERNAME")
      
      # Import ArcPy and check the geodatabase release.
      import arcpy
      
      isCurrent = arcpy.Describe('/usr/tmp/egdb_connection.sde').currentRelease
      
      print isCurrent
      Si la valeur False est renvoyée, vous pouvez mettre à niveau la géodatabase. Suivez les étapes restantes. Si la valeur True est renvoyée, la mise à niveau n’est pas nécessaire. N’exécutez pas les étapes suivantes.
  3. Vérifiez que l’utilisateur sde possède les privilèges appropriés dans la base de données.
  4. Créez une sauvegarde de la base de données.
  5. Supprimez toute fonctionnalité personnalisée que vous avez ajoutée aux tables système de géodatabase en dehors de ArcGIS.

    La procédure de mise à niveau ne peut pas tenir compte des personnalisations que vous apportez aux tables système. Si de telles personnalisations empêchent l'altération de la structure d'une table système, la mise à niveau échoue.

  6. Vérifiez qu’il n’existe aucune autre connexion à la géodatabase que vous mettez à niveau.

Vous pouvez maintenant mettre à niveau la géodatabase.

Mettre à niveau la géodatabase

Vous pouvez utiliser l’outil Mettre à niveau la géodatabase dans ArcGIS AllSource ou exécuter un script Python sur un ordinateur ArcGIS AllSource ou ArcGIS Server pour mettre à niveau votre géodatabase.

Remarque :

Si la géodatabase contient des données versionnées de branche, des étapes supplémentaires requises après la mise à niveau peuvent s’avérer nécessaires. Pour plus d’instructions, reportez-vous à la rubrique Fonctionnement de l’outil Mettre à niveau la géodatabase.

Utiliser l’outil Mettre à niveau la géodatabase

Ouvrez l’outil de géotraitement Upgrade Geodatabase (Mettre à niveau la géodatabase) de l’une des manières suivantes :

  • le jeu d'outils Administration de la géodatabase de la boîte à outils Data Management,
  • le bouton Run Upgrade (Exécuter la mise à niveau) dans l’onglet General (Général) de la boîte de dialogue Database Properties (Propriétés de la base de données) de ArcGIS AllSource

Si vous ouvrez l'outil à partir de la boîte de dialogue Propriétés de la base de données, la zone de texte Géodatabase en entrée contient déjà les informations nécessaires à une connexion à la géodatabase.

Esri recommande de laisser les options Pre-requisites check (Exécuter une recherche de prérequis) et Upgrade geodatabase (Mettre à niveau la géodatabase) activées. De cette façon, l’outil vérifie si les conditions préalables à la mise à niveau sont réunies avant la mise à niveau de la géodatabase.

Vous devez vous connecter à la géodatabase en tant qu’utilisateur sde pour exécuter le contrôle préalable et mettre à niveau la géodatabase.

Le contrôle préalable détecte s’il existe d’autres connexions actives à la géodatabase, détermine si vous êtes connecté en tant qu’utilisateur sde et confirme que l’utilisateur sde possède les privilèges requis pour mettre à niveau la géodatabase. Si les conditions préalables ne sont pas toutes remplies, l'outil s'arrête. Vous devez résoudre tous les problèmes avant d'exécuter à nouveau la mise à niveau.

Les résultats de ce contrôle sont signalés dans la boîte de dialogue de l'outil de géotraitement. Si la vérification échoue, les résultats sont également consignés dans le fichier GDBUpgrade.log dans le dossier c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.

Si tous les contrôles aboutissent, l’outil poursuit la mise à niveau. L'état du contrôle préalable et de la mise à niveau est indiquée dans la boîte de dialogue de progression de l'outil de géotraitement. Si la mise à niveau échoue, des informations sont consignées dans le fichier GDBUpgrade.log. Des informations supplémentaires sont consignées dans le fichier sde_setup.log dans le répertoire TEMP de utilisateur. Si aucun répertoire temporaire n’est configuré pour l’utilisateur, le répertoire TEMP du système est utilisé.

Exécuter un script

Pour mettre à niveau la géodatabase à l’aide d’un script Python, copiez le code suivant, collez-le dans un fichier texte, et enregistrez-le. Vous pouvez ensuite exécuter le script avec des informations spécifiques au site dans la ligne de commande.

"""
Name: upgrade_gdb_for_sap_hana.py
Type upgrade_gdb_for_sap_hana.py -h or upgrade_gdb_sap_hana.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 ("-i", dest="data_source", type="string", default="", help="SAP HANA ODBC data source name")
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")                   


# 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 = "DATABASE_AUTH"
	username = options.User.lower() 
	password = options.Password	
	do_upgrade = options.Upgrade
	database = ""
	database_type = "SAP HANA"
	instance = options.data_source
	
	
	# 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
	Conn_File_NameT = instance + "_" + 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.management.CreateDatabaseConnection(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")
        			

	# Process: Upgrade geodatabase...
	try:
		if do_upgrade.lower() == "true":
			print ("Upgrading Geodatabase...\n")
			arcpy.management.UpgradeGDB(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.management.UpgradeGDB(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)

Si, par exemple, vous avez enregistré le fichier texte en tant que gdbupgrade, que votre source de données SAP HANA est nommée mydata, et que votre mot de passe sde est mysdepassword, saisissez les informations suivantes dans l’invite de commande :

gdbupgrade --DBMS SAP HANA -i mydata -u sde -p mysdepassword --upgrade TRUE