Обновить базу геоданных (Upgrade Geodatabase) (Управление данными)
Резюме
Обновляет базу геоданных до последней версии, чтобы получить преимущества новых функций последней версии ArcGIS. Входными данными могут быть персональная или файловая база геоданных, а также информация о подключении к базе геоданных ArcSDE.
Установите актуальную версию ArcGIS for Desktop Standard, ArcGIS for Desktop Advanced, ArcGIS Engine Geodatabase Update или ArcGIS for Server Advanced или ArcGIS for Server Standard на компьютере, на котором будет выполняться обновление. Для многопользовательских баз геоданных необходимо прямое подключение к базе геоданных для запуска обновления.
Использование
До выполнения обновления многопользовательской базы геоданных, необходимо ознакомится с информацией и выполнить шаги, описанные в соответствующих разделах:
- Чтобы определить версию базы геоданных, щелкните правой кнопкой базу геоданных в окне Каталог (Catalog) и щелкните Свойства (Properties). Раздел Обновить статус (Upgrade Status) закладки Общие (General) показывает версию ArcGIS базы геоданных и указывает, может ли база геоданных быть обновлена на последнюю версию, чтобы вы могли воспользоваться новыми функциями.
- Нужно включить по крайней мере один из параметров Выполнить предварительную проверку или Обновить базу геоданных. Если вы не отметите, это приведет к ошибке.
- Esri рекомендует выполнять предварительную проверку перед обновлением базы геоданных, чтобы вы могли убедиться, что база готова к процедуре обновления. Если инструмент обнаружит какие-либо несоответствия, список ошибок будет представлен в окне Результаты (Results) и база геоданных не будет обновлена. Без предварительной проверки запускать инструмент Обновить нецелесообразно. В случае обнаружения несоответствий, следует решить проблему, затем запустить инструмент Обновить еще раз.
- Обновление с бета-версий баз-геоданных не поддерживается.
- После обновления базы геоданных она перестанет открываться в старых версиях ArcGIS.
- Опция Выполнять предварительную проверку (Perform Pre-Requisite Check) работает по разному, в зависимости от типа обновляемой базы геоданных. Для персональной или файловой баз геоданных проверяется
- База геоданных доступна только для чтения.
- Больше ни один пользователь не подключен к базе геоданных.
- Текущее подключение не редактирует данные в базе геоданных.
- Любую информацию из системных таблиц текущей базы геоданных можно открыть.
- Для многопользовательской базы геоданных проверяется
- У подключенного пользователя есть соответствующие права на обновление.
- Подключенный пользователь не редактирует данные в базе геоданных.
- Больше ни один пользователь не подключен к базе геоданных.
- В базе геоданных включена поддержка типов данных XML.
- Любую информацию из системных таблиц текущей базы геоданных можно открыть.
- Для баз геоданных в PostgreSQL и Oracle, она определяет, является ли актуальной библиотека ST_Geometry в местоположении базы данных.
- Для баз геоданных в пользовательской схеме в Oracle она выявляет, обновлена ли основная база геоданных.
Синтаксис
Параметр | Объяснение | Тип данных |
input_workspace |
Персональная, файловая или ArcSDE база геоданных, которая будет обновлена | Workspace |
input_prerequisite_check |
Указывает, надо ли выполнять предварительную проверку перед запуском обновления базы геоданных
| Boolean |
input_upgradegdb_check |
Указывает, выполнять ли обновление
| Boolean |
Пример кода
Пример скрипта Python для выполнения функции Обновить базу геоданных (UpgradeGDB), с запуском из окна Python в ArcGIS, для обновления файловой базы геоданных:
import arcpy
Output_Workspace = "C:\\temp\\Default.gdb"
Default_gdb = "C:\\temp\\Default.gdb"
arcpy.UpgradeGDB_management(Default_gdb, "PREREQUISITE_CHECK", "UPGRADE")
Пример скрипта Python для выполнения функции Обновить базу геоданных (UpgradeGDB), в автономном режиме для файловой базы геоданных:
# 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")
Пример скрипта Python для выполнения функции Обновить базу геоданных (UpgradeGDB) в автономном режиме, для обновления многопользовательской базы с использованием существующего файла подключения .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")
Пример скрипта Python для выполнения функции Обновить базу геоданных (UpgradeGDB) в автономном режиме, для обновления многопользовательской базы геоданных с использованием файла подключения .sde:
"""
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
Author: Esri
"""
# Import system modules
import arcpy, os, optparse, 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 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
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)