Сводка
Обновляет базу геоданных до последней версии ArcGIS, чтобы использовать новые функции.
На компьютере, где вы запускаете инструмент или скрипт, должна быть установлена текущая версия ArcGIS Desktop или ArcGIS Server.
Использование
Инструмент Обновить базу геоданных может использовать в качестве входных данных файловую базу геоданных или подключение .sde.
Вы не сможете обновить многопользовательские базы геоданных из ArcGIS Desktop Basic.
Перед тем как вы обновите вашу многопользовательскую базу геоданных, убедитесь в том, что выполнили необходимые действия в вашей системе управления базами данных, включая создание резервной копии. Для Oracle и PostgreSQL необходимо загрузить папку DatabaseSupport с сайта My Esri, чтобы получить новую библиотеку ST_Geometry. Другие шаги для подготовки к работе см. в следующих разделах:
- Нужно включить по крайней мере один из параметров Выполнить предварительную проверку или Обновить базу геоданных, но вы также можете включить оба параметра. Вы не можете запустить этот инструмент, не выбрав хотя бы одну из опций.
- Esri рекомендует выполнять предварительную проверку перед обновлением базы геоданных, чтобы вы могли убедиться, что база геоданных готова к обновлению. Если инструмент обнаружит какие-либо ошибки, то ошибка будет занесена в журнал истории геообработки. Без предварительной проверки запускать инструмент Обновить нецелесообразно. В случае обнаружения несоответствий, следует решить проблему, затем запустить инструмент Обновить еще раз.
- Обновление с бета-версий баз геоданных не поддерживается.
- Опция Выполнять предварительную проверку работает по-разному в зависимости от типа обновляемой базы геоданных. При использовании файловой базы геоданных происходит анализ следующих ситуаций:
- База геоданных доступна только для чтения.
- Больше ни один пользователь не подключен к базе геоданных.
- Текущее подключение не редактирует данные в базе геоданных.
- Любую информацию из системных таблиц текущей базы геоданных можно открыть.
- При использовании многопользовательских базы геоданных происходит анализ следующих ситуаций:
- У подключившегося пользователя есть права доступа, необходимые для выполнения обновления базы геоданных.
- Подключенный пользователь не редактирует данные в базе геоданных.
- Ни один пользователь не подключен к базе геоданных.
- В базе геоданных включена поддержка типов данных XML.
- Любую информацию из системных таблиц текущей базы геоданных можно открыть.
- Для баз геоданных в PostgreSQL и Oracle, она определяет, может ли эта база данных работать с текущей версией библиотеки ST_Geometry.
- Для баз геоданных в пользовательской схеме в Oracle она выявляет, обновлена ли основная база геоданных.
Локаторы, сохраненные в базе геоданных, больше не поддерживаются. Если локатор хранится в базе геоданных, которую вы будете обновлять, то сначала надо подключиться к этой базе геоданных из ArcGIS Desktop 10.4.1 или более старой версии и удалить этот локатор.
Синтаксис
UpgradeGDB(input_workspace, input_prerequisite_check, input_upgradegdb_check)
Parameter | Объяснение | Тип данных |
input_workspace | Укажите базу геоданных для обновления. При обновлении настольной, многопользовательской базы геоданных, или базы геоданных рабочей группы укажите файл подключения (.sde), который подключается к базе геоданных из-под администратора базы геоданных. | Workspace |
input_prerequisite_check | Определяет, надо ли выполнять предварительную проверку перед обновлением базы геоданных.
| Boolean |
input_upgradegdb_check | Определяет, будет ли база геоданных обновлена.
| Boolean |
Производные выходные данные
Name | Объяснение | Тип данных |
out_workspace | Обновленная база геоданных. | Рабочая область |
Пример кода
Пример скрипта Python для выполнения функции UpgradeGDB, с запуском из окна Python в ArcGIS, которая обновляет файловую базу геоданных:
import arcpy
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:
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:
default_gdb = "C:/connections/gdbconnection.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
"""
# 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)
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да