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.

Installer une nouvelle version de ArcGIS Pro ou ArcGIS Server et mettre à niveau la géodatabase.

Procédez aux étapes nécessaires avant la mise à niveau, puis mettez à niveau votre géodatabase à l’aide de l’outil de géotraitement Mettre à niveau la géodatabase ou un script Python.

Avant de procéder à la mise à niveau

Lorsque vous mettez à niveau un système d'entreprise, y compris une géodatabase, planifiez à l'avance. Testez la nouvelle version sur un serveur de développement ou de test pour vérifier qu'elle fonctionne avec toutes vos applications clientes.

Lorsque vous vous êtes assuré que le nouveau système fonctionne comme attendu, 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 ces tâches.

Notez qu’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 voulez rétrograder la géodatabase, restaurez 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. Lisez le document Configuration requise des bases de données SAP HANA pour ArcGIS pour confirmer que Esri prend en charge l’association des versions de SAP HANA et de ArcGIS que vous souhaitez utiliser.
  2. Vérifiez que votre géodatabase peut être mise à niveau. Pour ce faire, installez la version ArcGIS Pro ou ArcGIS Server vers laquelle vous souhaitez migrer sur un ordinateur.
    • Pour vérifier à partir de ArcGIS Pro, 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 fonction ArcPy 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. Notez que vous devez vous connecter en tant qu’utilisateur sde pour exécuter ceci.
      # Open Python.
      cd /arcgis/server/tools
      ./python
      # Create a connection to the geodatabase.
      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 des privilèges catalog read dans la base de données.
  4. Créez une sauvegarde de la base de données.
  5. Supprimez toute fonctionnalité personnalisée éventuellement 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 votre géodatabase.

Mettre à niveau la géodatabase

Vous pouvez utiliser l’outil Mettre à niveau la géodatabase dans ArcGIS Pro ou exécuter un script Python sur un ordinateur ArcGIS Pro ou ArcGIS Server pour mettre à niveau votre 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 Exécuter la mise à niveau dans l'onglet Général de la boîte de dialogue Propriétés de la base de données d'ArcGIS Pro

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 conseille de laisser les options Exécuter une recherche de prérequis et 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 nécessaires pour mettre à niveau la géodatabase (catalog read). 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 (ou la mise à niveau) échoue, les résultats sont également consignés dans le fichier GDBUpgrade.log dans le répertoire 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 du système.

Exécuter un script

Pour mettre à niveau la géodatabase, copiez le script 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.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")
        			

	# 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)

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