Actualizar geodatabase (Administración de datos)

Resumen

Actualiza una geodatabase a la última versión de ArcGIS para aprovechar la nueva funcionalidad.

La versión actual de ArcGIS AllSource o ArcGIS Server debe estar instalada en el ordenador que ejecutará la actualización.

Uso

  • Esta herramienta acepta como entrada un archivo de conexión de geodatabase corporativa o geodatabase de archivos.

  • No puede actualizar geodatabases corporativas desde ArcGIS AllSource con una licencia Basic.

  • Antes de actualizar una geodatabase corporativa, debe realizar los pasos preparatorios necesarios para el sistema de administración de bases de datos que está utilizando, incluida la creación de una copia de seguridad de la base de datos. Para Oracle y para las geodatabases de PostgreSQL en que se utiliza el tipo ST_Geometry, debe descargar la carpeta DatabaseSupport desde My Esri para obtener una nueva biblioteca ST_Geometry. Para conocer otros pasos preparatorios, consulte los siguientes temas:

  • Debe activar el parámetro Realizar verificación de prerrequisitos, el parámetro Actualizar geodatabase o ambos. No podrá ejecutar la herramienta hasta que compruebe al menos uno de estos parámetros.

  • Utilice la verificación de prerrequisitos antes de actualizar la geodatabase para determinar si está lista para la actualización. Si no se cumple alguno de estos requisitos previos, se registra un error en el historial de geoprocesamiento. Esto evita que comience la actualización y que luego falle por no haberse cumplido uno de estos requisitos previos. Si falla alguna verificación, debe corregir el problema y reiniciar el proceso de actualización.

  • Las actualizaciones desde las versiones beta de la geodatabase no están admitidas.

  • El parámetro Realizar verificación de prerrequisitos ejecuta diferentes verificaciones para cada tipo de geodatabase. En las geodatabases de archivos, determina si algunas de las opciones siguientes son verdaderas:

    • La geodatabase es de sólo lectura.
    • No hay otros usuarios conectados a la geodatabase.
    • La conexión actual no está editando datos en la geodatabase.
    • Toda la información de las tablas de sistema de la geodatabase actual se puede abrir.
    • En las geodatabases corporativas, determina si se cumplen los siguientes criterios:
      • El usuario conectado cuenta con los privilegios correspondientes para actualizar la geodatabase.
      • El usuario conectado no está editando datos en la geodatabase.
      • No hay otros usuarios conectados a la geodatabase.
      • La base de datos puede admitir tipos de datos XML.
      • Toda la información de las tablas de sistema de la geodatabase actual se puede abrir.
      • Para las geodatabases de Oracle y PostgreSQL en que utilizan el tipo ST_Geometry, detecta si la base de datos pueda acceder a la versión actual de la biblioteca ST_Geometry.
  • Para las geodatabases corporativas que contienen datos versionados en rama, el proceso de actualización analiza las versiones en rama y los datos versionados en rama en busca de inconsistencias y escribe los resultados del análisis en un archivo de registro. Consulte Cómo funciona Actualizar geodatabase para obtener más información.

Parámetros

EtiquetaExplicaciónTipo de datos
Geodatabase de entrada

La geodatabase que se actualizará. Si va a actualizar una geodatabase corporativa, especifique un archivo de conexión de base de datos (.sde) que se conecte a la geodatabase como administrador de la geodatabase.

Workspace
Realizar verificación de prerrequisitos

Especifica si la verificación de prerrequisitos se ejecutará antes de actualizar la geodatabase.

  • Desactivado: la verificación de prerrequisitos no se ejecutará. Esta es la opción predeterminada.
  • Activado: la verificación de prerrequisitos se ejecutará antes de actualizar la geodatabase.
Boolean
Actualizar geodatabase

Especifica si la geodatabase de entrada se actualizará para que coincida con la versión del cliente de ArcGIS que está ejecutando la herramienta.

  • Desactivado: la geodatabase no se actualizará. Esta es la opción predeterminada.
  • Activado: la geodatabase se actualizará.
Boolean

Salida derivada

EtiquetaExplicaciónTipo de datos
Geodatabase de entrada actualizada

La geodatabase actualizada.

Workspace

arcpy.management.UpgradeGDB(input_workspace, input_prerequisite_check, input_upgradegdb_check)
NombreExplicaciónTipo de datos
input_workspace

La geodatabase que se actualizará. Si va a actualizar una geodatabase corporativa, especifique un archivo de conexión de base de datos (.sde) que se conecte a la geodatabase como administrador de la geodatabase.

Workspace
input_prerequisite_check

Especifica si la verificación de prerrequisitos se ejecutará antes de actualizar la geodatabase.

  • NO_PREREQUISITE_CHECKLa verificación de prerrequisitos no se ejecutará.
  • PREREQUISITE_CHECKLa verificación de prerrequisitos se ejecutará antes de actualizar la geodatabase. Esta es la opción predeterminada.
Boolean
input_upgradegdb_check

Especifica si se actualizará la geodatabase de entrada.

  • NO_UPGRADELa geodatabase no se actualizará.
  • UPGRADELa geodatabase se actualizará. Esta es la opción predeterminada.
Boolean

Salida derivada

NombreExplicaciónTipo de datos
out_workspace

La geodatabase actualizada.

Workspace

Muestra de código

Ejemplo 1 de UpgradeGDB (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función UpgradeGDB en el modo inmediato para actualizar una geodatabase de archivos.

import arcpy
default_gdb = "C:/temp/Default.gdb"
arcpy.management.UpgradeGDB(default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Ejemplo 2 de UpgradeGDB (independiente)

La siguiente secuencia de comandos de Python independiente muestra cómo utilizar la función UpgradeGDB en una secuencia de comandos de Python para actualizar una geodatabase de archivos:

 
# 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")
Ejemplo 3 de UpgradeGDB (script independiente)

La siguiente secuencia de comandos de Python independiente muestra cómo utilizar la función UpgradeGDB en una secuencia de comandos de Python para actualizar una geodatabase corporativa mediante un archivo de conexión .sde existente:

# 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")
Ejemplo 4 de UpgradeGDB (script independiente)

La siguiente secuencia de comandos de Python muestra cómo utilizar la función UpgradeGDB en la secuencia de comandos de Python para actualizar una geodatabase corporativa:

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

Temas relacionados