Programar una actualización de geodatabase de ArcSDE en SQL Server

Puede modificar y utilizar una de las secuencias de comandos de Python que se presentan en este tema para actualizar y conectarse a una geodatabase de ArcSDE.

La primera secuencia de comandos utiliza un archivo de conexión de ArcSDE existente para conectarse y actualizar la geodatabase.

La segunda secuencia de comandos muestra cómo puede proporcionar información de conexión en la misma secuencia de comandos utilizada para actualizar la geodatabase. Esto es especialmente útil si no obtiene acceso a ArcGIS Desktop; puede ejecutar la secuencia de comandos de Python desde un equipo donde está instalado ArcGIS Engine o ArcGIS Server Enterprise (Standard o Advanced), proporcionar información de conexión y actualizar la geodatabase.

La conexión que realiza a la geodatabase, ya sea mediante un archivo de conexión de ArcSDE existente o mediante parámetros en la secuencia de comandos, es una conexión directa. Debe tener lo siguiente en el equipo en que ejecute la secuencia de comandos deberá disponer de lo siguiente:

Asegúrese de haber leído y realizado los pasos en Preparar la actualización de una geodatabase en SQL Server antes de actualizar.

Pasos:
  1. Copie una de estas secuencias de comandos a la ventana de Python en ArcGIS Desktop o a cualquier IDE de Python como PythonWin o WING. Altere cualquier valor variable para que coincida con la información de su sitio.
    • Si tiene un archivo de conexión de ArcSDE existente que utiliza una conexión directa y se conecta como el administrador de ArcSDE, copie y modifique una de las siguientes secuencias de comandos en el sistema operativo:
      # Name: upgradesdegdb_example.py # Description: Connect from a Windows computer  # with an existing ArcSDE connection file  # and upgrade an ArcSDE for SQL Server geodatabase # Author: ESRI  # Import arcpy module import arcpy   # Local variables: Output_Workspace = "C:\\ArcGIS\connection_files\<Connection file>" Default_gdb = "C:\\ArcGIS\connection_files\<Connection file>"  # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(<Connection file>, "PREREQUISITE_CHECK", "UPGRADE")
      # Name: upgradesdegdb_example.py # Description: Connect from a Linux or UNIX computer  # with an existing ArcSDE connection file  # and upgrade an ArcSDE for SQL Server geodatabase # Author: ESRI  # Import arcpy module import arcpy   # Local variables: Output_Workspace = "<user>/connections/<Connection_file>" Default_gdb = "<user>/connections/<Connection_file>"  # Process: Upgrade Geodatabase arcpy.UpgradeGDB_management(<Connection_file>, "PREREQUISITE_CHECK", "UPGRADE")
    • Si no tiene un archivo de conexión de ArcSDE en el equipo desde el que programa la actualización, puede copiar y modificar la siguiente secuencia de comandos:
      """
      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)
  2. Ejecute la secuencia de comandos que copió y modificó para realizar la verificación de requisitos previos y actualice la geodatabase.

    Para obtener más información sobre el uso de Python, consulte el tema Introducir secuencia de comandos de Python.

Temas relacionados


7/10/2012