Доступно с лицензией Standard или Advanced.
Целью обновления многопользовательской базы геоданных является модернизация системных таблиц баз геоданных, процедур хранения, типов и функций для того, чтобы воспользоваться преимуществами новых функциональных возможностей и исправления ошибок.
Установка новой версии ArcGIS Pro или ArcGIS Server и обновление базы геоданных.
Завершите необходимые шаги до обновления, затем обновите базу геоданных с помощью инструмента геообработки Обновить базу геоданных или скрипта Python.
До начала обновления
При обновлении любой многопользовательской системы, включая базу геоданных, необходимо сначала все спланировать. Протестируйте новую версию на сервере для разработки или тестовом сервере, чтобы убедиться, что она работает со всеми вашими клиентскими приложениями.
Когда вы определили, что новая система работает ожидаемым образом, запланируйте обновление; убедитесь, что необходимые сотрудники доступны для проведения обновления, и что они имеют необходимые права для выполнения назначенных им задач.
Имейте в виду, что невозможно произвести переход с более поздней версии базы геоданных на более раннюю версию. Если после обновления на более новую версию вы хотите вернуться на старую версию базы геоданных, необходимо восстановить старую базу данных из файла резервной копии.
Ниже приводится перечень необходимых шагов, которые нужно выполнить перед обновлением базы геоданных:
- Прочтите требования к базе данных SAP HANA для ArcGIS, чтобы убедиться, что Esri поддерживает комбинацию версий SAP HANA и ArcGIS, которую вы хотите использовать.
- Проверьте, может ли быть обновлена ваша база геоданных. Для этого, установите версию ArcGIS Pro или ArcGIS Server, на которую вы хотите перейти, на одной машине.
- Чтобы выполнить проверку из ArcGIS Pro, подключитесь в базе геоданных с панели Каталог и откройте Свойства базы геоданных. В разделе Статус обновления появится сообщение о возможности обновления.
- Чтобы выполнить проверку из ArcGIS Server, используйте функцию ArcPy Describe, чтобы определить, можно ли обновить базу геоданных. Ниже приведен пример создания подключения к базе геоданных и проверки возможности ее обновления. Для проверки необходимо подключиться как пользователь sde.
Если возвращается значение False, базу геоданных можно обновить. Перейдите к оставшимся шагам. Если возвращается True, обновлять базу геоданных не нужно. Не приступайте к последующим шагам.# Open Python. cd /arcgis/server/tools ./python # Create a connection to the geodatabase. arcpy.CreateDatabaseConnection_management("/usr/tmp/", "egdb_connection.sde", "SAP HANA", sys.argv[1], "DATABASE_AUTH", "sde", sys.argv[2], "SAVE_USERNAME") # Import ArcPy and check the geodatabase release. import arcpy isCurrent = arcpy.Describe('/usr/tmp/egdb_connection.sde').currentRelease print isCurrent
- Предоставьте пользователю sde права catalog read в базе данных.
- Создайте резервную копию базы данных.
- Удалите все пользовательские функции, которые вы могли добавить в системные таблицы базы геоданных за пределами ArcGIS.
Процедура обновления не сможет использовать настройки, которые вы произвели в системных таблицах. Если эти модификации помешают изменению схемы системной таблицы, обновление будет остановлено с ошибкой.
- Убедитесь, что во время обновления других подключений к базе геоданных нет.
Теперь вы можете обновить вашу базу геоданных.
Обновление базы геоданных
Для обновления вашей базы геоданных можно использовать инструмент Обновить базу геоданных в ArcGIS Pro или скрипт Python на компьютере, где установлен ArcGIS Pro или ArcGIS Server.
Используйте инструмент Обновить базу геоданных.
Откройте инструмент геообработки Обновить базу геоданных любым из способов, перечисленных ниже:
- группы инструментов Администрирование базы геоданных в наборе Управление данными
- Кнопка Запуск обновления на вкладке Общие в диалоговом окне Свойства базы данных в ArcGIS Pro
Текстовое поле Входная база геоданных будет предварительно заполнено информацией о подключении базы геоданных, если инструмент был запущен с помощью кнопки Обновить базу геоданных.
Esri рекомендует оставить выбранными обе опции: Проверка требований и Обновить базу геоданных. В этом случае перед продолжением обновления базы геоданных приложение будет проверять, выполнены ли предварительные условия для обновления.
Для выполнения предварительной проверки и обновления базы геоданных необходимо подключиться как пользователь sde.
Предварительная проверка определяет наличие других активных подключений к базе геоданных, проверяет, подключены ли вы как пользователь sde и подтверждает, что sde имеет права, необходимые для обновления базы геоданных (catalog read). Если какое-либо из предварительных условий не выполнено, работа инструмента завершается. Перед повторным запуском процедуры обновления вы должны исправить все проблемы.
Результаты этой проверки отображаются в диалоговом окне инструмента геообработки. Если проверка (или обновление) заканчивается сбоем, то результаты также записываются в GDBUpgrade.log, который расположен в папке c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.
Если все этапы проверки будут пройдены успешно, инструмент запустит процесс обновления. Статус проверки предварительных условий и обновления отображается в диалоговом окне инструмента геообработки. Если обновление заканчивается сбоем, информация об этом записывается в файл GDBUpgrade.log. Дополнительная информация записывается в файл sde_setup.log, находящийся в системной директории TEMP.
Запустите скрипт
Чтобы обновить базу геоданных, скопируйте следующий скрипт, вставьте его в текстовой файл и сохраните. Затем вы можете запустить скрипт с информацией о сайте из командной строки.
"""
Name: upgrade_gdb_for_sap_hana.py
Type upgrade_gdb_for_sap_hana.py -h or upgrade_gdb_sap_hana.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 1.0 for " + arcpy.GetInstallInfo()['Version'] )
#Define help and options
parser.add_option ("-i", dest="data_source", type="string", default="", help="SAP HANA ODBC data source name")
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")
# 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 = "DATABASE_AUTH"
username = options.User.lower()
password = options.Password
do_upgrade = options.Upgrade
database = ""
database_type = "SAP HANA"
instance = options.data_source
# 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
Conn_File_NameT = instance + "_" + 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")
# 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)
Например, если вы сохранили текстовый файл под именем gdbupgrade, именем источника данных SAP HANAявляется mydata, а паролем sde mysdepassword, введите в командной строке следующее:
gdbupgrade --DBMS SAP HANA -i mydata -u sde -p mysdepassword --upgrade TRUE