Ecriture de script de géodatabase d'entreprise dans DB2
Vous pouvez modifier et utiliser l'un des scripts Python fournis dans cette rubrique pour vous connecter à une géodatabase d'entreprise et la mettre à niveau.
Les premiers scripts utilisent un fichier de connexion à une base de données existant pour se connecter à une géodatabase et la mettre à niveau.
Le deuxième script illustre la façon dont vous pouvez fournir les informations de connexion dans le script utilisé pour mettre à niveau la géodatabase. C'est particulièrement utile si vous n'avez pas accès à ArcGIS for Desktop ; vous pouvez exécuter le script Python à partir d'un ordinateur où ArcGIS Engine avec l'extension Geodatabase Update ou ArcGIS for Server (Standard ou Avancé) est installé, fournir les informations de connexion et mettre à niveau la géodatabase.
La connexion que vous établissez à la géodatabase, que ce soit en tant que fichier de connexion à une base de données existant ou de paramètres du script, est une connexion directe. Vous devez posséder les éléments suivants sur la machine à partir de laquelle vous exécuterez le script :
- un utilisateur local nommé SDE.
- un client IBM DB2, configuré pour se connecter à la base de données,
Si vous comptez effectuer une mise à niveau à partir d'un client ArcGIS 32 bits, vous devez utiliser un client DB2 32 bits.
- Un client ArcGIS, à savoir ArcGIS for Desktop (Standard ou Advanced), ArcGIS Engine Runtime avec l'extension Geodatabase Update ou ArcGIS for Server (Standard ou Avancé)
Veillez à autoriser le client ArcGIS avant d'exécuter le script.
Lisez et effectuez les procédures présentées aux rubriques Préparation à la mise à niveau d'une géodatabase dans DB2 avant de commencer la mise à niveau.
- Copiez l'un des exemples de scripts dans la fenêtre Python d'ArcGIS for Desktop ou dans n'importe quel IDE (environnement de développement intégré) Python, tel que PythonWin ou WING. Modifiez les valeurs des variables pour qu'elles correspondent aux informations de votre site.
- Si vous avez un fichier de connexion à une base de données existant qui utilise une connexion directe et se connecte en tant qu'administrateur de géodatabase, copiez et modifiez l'un des scripts suivants, selon votre système d'exploitation :
# Name: upgradesdegdb_example.py # Description: Connect from a Windows computer # with an existing database connection file # and upgrade an enterprise geodatabase in DB2 # 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(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
# Name: upgradesdegdb_example.py # Description: Connect from a Linux or UNIX computer # with an existing database connection file # and upgrade an enterprise geodatabase in DB2 # 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(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
- Si vous n'avez pas de fichier de connexion à une base de données sur l'ordinateur à partir duquel écrire la mise à niveau, vous pouvez copier et modifier le script suivant :
""" Name: upgrade_gdb_db2.py Description: Create a connection file and upgrade an enterprise geodatabase in DB2. 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 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 ("-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") 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") # 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 server = options.Server service = options.Service account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() do_upgrade = options.Upgrade # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error:%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Upgrading enterprise geodatabase requires an ArcGIS for Desktop Standard or Advanced license, or an ArcGIS Server license." sys.exit("Re-authorize ArcGIS before enabling enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." 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 enabling enterprise geodatabase.") # 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" saveVersionInfo = "SAVE_VERSION" # The Version shouldn't matter for non-geodatabase connection 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)
- Si vous avez un fichier de connexion à une base de données existant qui utilise une connexion directe et se connecte en tant qu'administrateur de géodatabase, copiez et modifiez l'un des scripts suivants, selon votre système d'exploitation :
- Exécutez le script que vous avez copié et modifié pour effectuer la vérification préalable et mettre à niveau la géodatabase.