Actualizar una geodatabase en SAP HANA

Disponible con una licencia Standard o Advanced.

El objetivo de actualizar una geodatabase corporativa es actualizar las tablas del sistema de geodatabase, los procedimientos almacenados, los tipos y las funciones para aprovechar las funcionalidades y correcciones de errores nuevas.

Instale una nueva versión de ArcGIS Pro o ArcGIS Server y actualice la geodatabase.

Siga los pasos necesarios antes de actualizar y, a continuación, actualice su geodatabase mediante la herramienta de geoprocesamiento Actualizar geodatabase o un script de Python.

Antes de actualizar

Cuando actualice un sistema corporativo, incluida una geodatabase, planifique de antemano. Pruebe la versión nueva en un servidor de desarrollo o de prueba para asegurarse de que funciona con todas las aplicaciones cliente.

Cuando haya determinado que el sistema nuevo funciona como se espera, programe la actualización; asegúrese de que el personal necesario esté disponible para realizar la actualización y cuente con los permisos necesarios para completar las tareas asignadas.

Tenga en cuenta que no existe ningún mecanismo formal para revertir una geodatabase a una versión anterior. Si desea volver a la versión anterior de una geodatabase después de actualizarla a una versión más actualizada, deberá restaurar la base de datos anterior desde un archivo de copia de seguridad.

A continuación se ofrece la lista de pasos que debe realizar antes de actualizar la geodatabase:

  1. Consulte los Requisitos de base de datos para SAP HANA para comprobar que Esri admita la combinación de las versiones de SAP HANA y ArcGIS que desea utilizar.
  2. Compruebe si su geodatabase se puede actualizar. Para ello, instale la versión de ArcGIS Pro o ArcGIS Server la que desee cambiar en un equipo.
    • Para comprobarlo desde ArcGIS Pro, conéctese a la geodatabase en el panel Catálogo y abra Propiedades de base de datos. Aparece un mensaje en Actualizar estado que le indica si es posible actualizar.
    • Para comprobarlo desde ArcGIS Server, utilice la función Describe de ArcPy para determinar si puede actualizar la geodatabase. A continuación encontrará un ejemplo de la creación de una conexión a la geodatabase y la comprobación de si la geodatabase se puede actualizar. Recuerde que debe conectarse como el usuario sde para ejecutarlo.
      # 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 se devuelve False, puede actualizar la geodatabase. Prosiga con los pasos restantes. Si se devuelve True, no tiene que actualizar. No siga con los pasos posteriores.
  3. Confirme que el usuario sde tenga privilegios catalog read en la base de datos.
  4. Cree una copia de seguridad de la base de datos.
  5. Elimine cualquier funcionalidad adaptada que pueda haber agregado a las tablas del sistema de la geodatabase fuera de ArcGIS.

    El procedimiento de actualización no admite las personalizaciones que realiza en las tablas del sistema. Si tales personalizaciones previenen la alteración de un esquema de una tabla del sistema, la actualización fallará.

  6. Confirme que no haya conexiones a la geodatabase que está actualizando.

A continuación, puede actualizar la geodatabase.

Actualizar la geodatabase

Puede utilizar la herramienta Actualizar geodatabasede ArcGIS Pro o un script de Python en un equipo de ArcGIS Pro o ArcGIS Server para actualizar su geodatabase.

Utilizar la herramienta Actualizar geodatabase

Abra la herramienta de geoprocesamiento Actualizar geodatabase desde uno de los siguientes puntos:

  • El conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos
  • El botón Ejecutar actualización en la pestaña General del cuadro de diálogo Propiedades de la base de datos en ArcGIS Pro

Si abre la herramienta desde Propiedades de base de datos, el cuadro de texto Geodatabase de entrada ya cuenta con la información de conexión de la geodatabase.

Esri recomienda que deje las opciones Comprobación de requisitos previos y Actualizar geodatabase activadas. De esta manera, la herramienta comprueba si los requisitos previos de la actualización se cumplieron antes de continuar con la actualización de la geodatabase.

Debe conectarse a la geodatabase como el usuario sde para ejecutar la comprobación de requisitos previos y actualizar la geodatabase.

La comprobación de requisitos previos detecta otras conexiones activas en la geodatabase, determina si se conectó como el usuario sde y confirma que el usuario sde disponga de los privilegios suficientes para actualizar la geodatabase (catalog read). Si no se cumple algún requisito previo, la herramienta finaliza. Debe corregir cualquier problema antes de ejecutar el procedimiento de actualización nuevamente.

Los resultados de esta comprobación se indican en el cuadro de diálogo de la herramienta de geoprocesamiento. Si la comprobación (o actualización) falla, los resultados también se escribirán en el archivo GDBUpgrade.log de la carpeta c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.

Si se cumplen todas las comprobaciones, la herramienta procede con la actualización. El estado de la comprobación de requisitos previos y de la actualización se muestra en el cuadro de diálogo de progreso de la herramienta de geoprocesamiento. Si se produce un error durante la actualización, la información se registra en el archivo GDBUpgrade.log. Se escribe información adicional en el archivo sde_setup.log del directorio TEMP del sistema.

Ejecutar un script

Para actualizar la geodatabase, copie el siguiente script, péguelo en un archivo de texto y guárdelo. A continuación, puede ejecutar el script con información específica del sitio en la línea de comandos.

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

Por ejemplo, si guardó el archivo de texto como gdbupgrade, el nombre de su fuente de datos de SAP HANA es mydata y su contraseña de sde es mysdepassword, escriba lo siguiente en la línea de comandos:

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