Actualizar geodatabase (Data Management)
Resumen
Actualiza una geodatabase a la última versión para aprovechar las nuevas funcionalidades disponibles en la última versión de ArcGIS. La entrada válida es una geodatabase de archivos o personal, o un archivo de conexión sde o información de conexión para una geodatabase de ArcSDE.
Debe contar con la versión actual de ArcGIS Desktop (ArcEditor or ArcInfo), ArcGIS Engine Runtime con la extensión Geodatabase Update, o ArcGIS Server Standard o Advanced instalada en el equipo desde el que ejecutará la actualización. Para las geodatabases de ArcSDE, se necesita una conexión directa a la geodatabase para ejecutar la actualización. Los controladores de conexión directa que le permiten conectarse a geodatabases anteriores admitidas se instalan automáticamente con ArcGIS Desktop, ArcGIS Engine y ArcGIS Server.
Uso
Antes de actualizar la geodatabase de ArcSDE, asegúrese de haber leído y seguido los pasos en los temas aplicables:
- Para determinar la versión de la geodatabase, haga clic con el botón derecho del ratón en la geodatabase en la ventana Catálogo y haga clic en Propiedades. La sección Estado de actualización de la pestaña General muestra la versión de ArcGIS de la geodatabase e indica si la geodatabase se puede actualizar a la última versión para aprovechar las nuevas funciones.
- Se debe marcar al menos uno de los parámetros Realizar verificación de prerrequisitos o Actualizar geodatabase. Si no se marca ninguno, se producirá un error.
- Esri recomienda utilizar la verificación de requisitos previos antes de actualizar la geodatabase para determinar si la geodatabase está lista para ser actualizada. Si no se cumple alguno de estos requisitos previos, la herramienta registra un error en la ventana Resultados y no actualiza la geodatabase. Esto evita que comience la actualización y que luego falle en la mitad del proceso 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.
- Una vez que se actualiza la geodatabase, las versiones anteriores de ArcGIS no podrán abrirla dado que las versiones anteriores de ArcGIS no pueden leer las versiones más actualizadas de la geodatabase.
- La opción Realizar verificación de prerrequisitos realiza diferentes verificaciones dependiendo del tipo de geodatabase que se esté actualizando. Para las geodatabases de archivos y personales, determina si
- La geodatabase es de solo lectura.
- No hay otros usuarios conectados a la geodatabase.
- La conexión actual no está editando datos en la geodatabase.
- Se puede abrir toda la información contenida en las tablas del sistema de geodatabase actual.
- Para las geodatabases de ArcSDE, determina si
- El usuario conectado cuenta con los privilegios correspondientes para actualizar.
- 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.
- Se puede abrir toda la información contenida en las tablas del sistema de geodatabase actual.
- Para las geodatabases en PostgreSQL y Oracle, detecta si la biblioteca ST_Geometry en la ubicación de la base de datos es actual.
- Para geodatabases en un esquema de usuario en Oracle, detecta si la geodatabase maestra está actualizada.
Sintaxis
| Parámetro | Explicación | Tipo de datos |
input_workspace |
Geodatabase de ArcSDE, personal o de archivos que se actualizará | Workspace |
input_prerequisite_check |
Especifica si se debe ejecutar la verificación de requisitos previos antes de actualizar la geodatabase
| Boolean |
input_upgradegdb_check |
Especifica si se debe realizar la actualización
| Boolean |
Ejemplo de código
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 Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
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: Output_Workspace = "C:\\temp\\Default.gdb" Default_gdb = "C:\\temp\\Default.gdb" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
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 ArcSDE mediante un archivo de conexión .sde.
# Description: upgrade a geodatabase # Import arcpy module import arcpy # Local variables: Output_Workspace = "C:\\Documents and Settings\<user>\Application Data\ESRI\ArcCatalog\Connection to gdb.sde" Default_gdb = "C:\\Documents and Settings\<user>\Application Data\ESRI\ArcCatalog\Connection to gdb.sde" # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
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 ArcSDE en Oracle:
"""
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, os, optparse, sys
# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0; valid for 10.0 and 10.1 release")
#Define help and options
parser.add_option ("-s", dest="Server", type="string", default="", help="RDBMS server name")
parser.add_option ("-i", dest="Service", type="string", default="", help="Use direct connection syntax")
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 ("-v", dest="Version", type="string", help="ArcSDE version name")
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
server = options.Server
service = options.Service
account_authentication = options.account_authentication.upper()
username = options.User.lower()
password = options.Password
version = options.Version.upper()
do_upgrade = options.Upgrade
database = options.Database.lower()
# 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 ArcEditor, ArcInfo, ArcGIS Engine Geodatabase Update, or ArcGIS Server license."
sys.exit("Re-authorize ArcGIS before upgrading.")
else:
print "\n" + product_license + " license available! Continuing to upgrade..."
arcpy.AddMessage("+++++++++")
# Check if direct connection
if service.find(":") <> -1: #This is direct connect
ServiceConnFileName = service.replace(":", "")
ServiceConnFileName = ServiceConnFileName.replace(";", "")
ServiceConnFileName = ServiceConnFileName.replace("=", "")
ServiceConnFileName = ServiceConnFileName.replace("/", "")
ServiceConnFileName = ServiceConnFileName.replace("\\", "")
else:
arcpy.AddMessage("\n+++++++++")
arcpy.AddMessage("Exiting!!")
arcpy.AddMessage("+++++++++")
sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.")
# Local variables
Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + 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 = temp + os.sep + Conn_File_NameT + ".sde"
# Check for the .sde file and delete it if present
arcpy.env.overwriteOutput=True
# Variables defined within the script; other variable options commented out at the end of the line
saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
print "\nCreating ArcSDE Connection File...\n"
# Process: Create ArcSDE Connection File...
# Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version, save_version_info
arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
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")
# Process: Upgrade geodatabase...
try:
if do_upgrade.lower() == "true":
print "Upgrading Geodatabase...\n"
arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "UPGRADE")
for i in range(arcpy.GetMessageCount()):
arcpy.AddReturnMessage(i)
arcpy.AddMessage("+++++++++\n")
else:
print "Running Pre-Requisite Check...\n"
arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_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)
#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)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 ArcSDE en IBM DB2, Informix, Microsoft SQL Server o PostgreSQL:
"""
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, os, optparse, sys
# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0; valid for 10.0 and 10.1 release")
#Define help and options
parser.add_option ("-s", dest="Server", type="string", default="", help="RDBMS server name")
parser.add_option ("-i", dest="Service", type="string", default="", help="Use direct connection syntax")
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 ("-v", dest="Version", type="string", help="ArcSDE version name")
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
server = options.Server
service = options.Service
account_authentication = options.account_authentication.upper()
username = options.User.lower()
password = options.Password
version = options.Version.upper()
do_upgrade = options.Upgrade
database = options.Database.lower()
# 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 ArcEditor, ArcInfo, ArcGIS Engine Geodatabase Update, or ArcGIS Server license."
sys.exit("Re-authorize ArcGIS before upgrading.")
else:
print "\n" + product_license + " license available! Continuing to upgrade..."
arcpy.AddMessage("+++++++++")
# Check if direct connection
if service.find(":") <> -1: #This is direct connect
ServiceConnFileName = service.replace(":", "")
ServiceConnFileName = ServiceConnFileName.replace(";", "")
ServiceConnFileName = ServiceConnFileName.replace("=", "")
ServiceConnFileName = ServiceConnFileName.replace("/", "")
ServiceConnFileName = ServiceConnFileName.replace("\\", "")
else:
arcpy.AddMessage("\n+++++++++")
arcpy.AddMessage("Exiting!!")
arcpy.AddMessage("+++++++++")
sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.")
# Local variables
Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + 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 = temp + os.sep + Conn_File_NameT + ".sde"
# Check for the .sde file and delete it if present
arcpy.env.overwriteOutput=True
# Variables defined within the script; other variable options commented out at the end of the line
saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
print "\nCreating ArcSDE Connection File...\n"
# Process: Create ArcSDE Connection File...
# Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version, save_version_info
arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
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")
# Process: Upgrade geodatabase...
try:
if do_upgrade.lower() == "true":
print "Upgrading Geodatabase...\n"
arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_CHECK", "UPGRADE")
for i in range(arcpy.GetMessageCount()):
arcpy.AddReturnMessage(i)
arcpy.AddMessage("+++++++++\n")
else:
print "Running Pre-Requisite Check...\n"
arcpy.UpgradeGDB_management(Connection_File_Name, "PREREQUISITE_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)
#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)