Обновление базы геоданных в SAP HANA

Доступно с лицензией Standard или Advanced.

Целью обновления многопользовательской базы геоданных является модернизация системных таблиц баз геоданных, процедур хранения, типов и функций для того, чтобы воспользоваться преимуществами новых функциональных возможностей и исправления ошибок. Вам также может потребоваться перейти на более новую версию базы данных, если используемая вами версия больше не поддерживается для используемых вами клиентов ArcGIS.

Установите новую версию ArcGIS Pro или ArcGIS Server или примените пакет обновлений, патч или пакет исправлений к существующей версии и обновите базу геоданных до более поздней версии.

Примечание:

Даже если вы не обновите базу геоданных, используемая вами версия базы данных может больше не поддерживаться текущей версией программного обеспечения ArcGIS. Всегда проверяйте системные требования, чтобы убедиться, что вы по-прежнему используете поддерживаемую версию базы данных. Если версия базы данных больше не поддерживается, возможно, потребуется обновить базу геоданных. Чем больше времени проходит между обновлениями, тем более сложным становится процесс обновления.

Если вы обновите базу геоданных с помощью ArcGIS Pro версии 3.4, версия обновленной базы геоданных будет 11.4.0.x.

Перед обновлением выполните обязательные шаги, указанные ниже, а затем обновите базу геоданных с помощью инструмента геообработки Обновить базу геоданных или скрипта Python.

До начала обновления

Заранее планируйте обновления любых многопользовательских систем, включая базы геоданных. Протестируйте новую версию на сервере для разработки или тестовом сервере, чтобы убедиться, что она работает со всеми вашими клиентскими приложениями.

Когда вы убедитесь, что новая система работает так, как вы ожидали, запланируйте обновление; убедитесь, что необходимый персонал доступен для выполнения обновления и что у них есть права доступа, необходимые для выполнения возложенных на них задач.

Не существует формального механизма для перехода на более раннюю версию базы геоданных. Если после обновления на более новую версию вам нужно вернуться на старую версию базы геоданных, необходимо восстановить старую базу данных из файла резервной копии.

Ниже приводится перечень необходимых шагов перед обновлением базы геоданных:

  1. Прочтите Требования ArcGIS для SAP HANA, чтобы убедиться, что Esri поддерживает комбинацию версий SAP HANA и ArcGIS, которые вы хотите использовать.

    Если для версии ArcGIS, до которой вы будете выполнять обновление, поддерживается версия базы данных SAP HANA, то база геоданных может быть сразу обновлена с версии 10.8.x или выше. Если эта версия базы данных не поддерживается для версии базы геоданных, до которой вы обновляете, вам также придется обновить саму базу данных.

  2. Убедитесь, что ваша база геоданных может быть обновлена. Для этого, установите версию ArcGIS Pro или ArcGIS Server, на которую вы хотите перейти, на одной машине.
    • Для подтверждения из ArcGIS Pro, подключитесь в базе геоданных с панели Каталог и откройте Свойства базы геоданных. В разделе Статус обновления появится сообщение о возможности обновления.
    • Для подтверждения из ArcGIS Server, используйте функцию ArcPy Describe, чтобы определить, можно ли обновить базу геоданных. Ниже приведен пример создания подключения к базе геоданных и проверки возможности ее обновления.
      # Open Python.
      cd /arcgis/server/tools
      ./python
      
      # Create a connection to the geodatabase. You must connect as the sde user.
      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
      Если возвращается значение False, базу геоданных можно обновить. Перейдите к оставшимся шагам. Если возвращается True, обновлять базу геоданных не нужно. Не приступайте к последующим шагам.
  3. Подтвердите, что пользователь sde имеет соответствующие права в базе данных.
  4. Создайте резервную копию базы данных.
  5. Удалите все пользовательские функции, которые вы добавили в системные таблицы базы геоданных за пределами ArcGIS.

    Процедура обновления не сможет использовать настройки, которые вы произвели в системных таблицах. Если эти модификации помешают изменению схемы системной таблицы, обновление будет остановлено с ошибкой.

  6. Убедитесь, что во время обновления других подключений к базе геоданных нет.

Теперь вы можете обновить базу геоданных.

Обновление базы геоданных

Для обновления вашей базы геоданных можно использовать инструмент Обновить базу геоданных в ArcGIS Pro или скрипт Python на компьютере, где установлен ArcGIS Pro или ArcGIS Server.

Примечание:

Если база геоданных содержит данные сервис-ориентированной версии, могут потребоваться дополнительные действия после обновления. Инструкции см. в разделе Как работает инструмент Обновить базу геоданных.

Используйте инструмент Обновить базу геоданных.

Откройте инструмент геообработки Обновить базу геоданных любым из способов, перечисленных ниже:

  • Группа инструментов Администрирование базы геоданных в наборе Управление данными
  • Кнопка Запуск обновления на вкладке Общие в диалоговом окне Свойства базы данных в ArcGIS Pro

Текстовое поле Входная база геоданных будет предварительно заполнено информацией о подключении базы геоданных, если инструмент был запущен с помощью кнопки Обновить базу геоданных.

Esri рекомендует оставить подключенными и опцию Проверка требований, и опцию Обновить базу геоданных. Таким образом, инструмент подтверждает, что предварительные условия для обновления выполнены, прежде чем продолжить обновление базы геоданных.

Для выполнения предварительной проверки и обновления базы геоданных необходимо подключиться как пользователь sde.

Предварительная проверка определяет наличие других активных подключений к базе геоданных, проверяет, подключены ли вы как пользователь sde и подтверждает, что пользователь sde имеет достаточно прав для обновления базы геоданных. Если какое-либо из предварительных условий не выполнено, работа инструмента завершается. Перед повторным запуском процедуры обновления вы должны исправить все проблемы.

Результаты этой проверки отображаются в диалоговом окне инструмента геообработки. Если проверка не удалась, результаты также записываются в файл GDBUpgrade.log в папке c:\Users\<user name>\AppData\Local\ESRI\<ArcGIS product>.

Если все этапы проверки проходят успешно, инструмент запустит процесс обновления. Статус проверки предварительных условий и обновления отображается в диалоговом окне инструмента геообработки. Если обновление заканчивается сбоем, информация об этом записывается в файл GDBUpgrade.log. Дополнительная информация записывается в файл sde_setup.log, который находится в пользовательской директории TEMP. Если у пользователя не настроена временная директория, используется системная директория TEMP.

Запуск скрипта

Чтобы обновить базу геоданных с помощью скрипта Python, скопируйте следующий код, вставьте его в текстовый файл и сохраните. Затем вы можете запустить скрипт с информацией о сайте из командной строки.

"""
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.management.CreateDatabaseConnection(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.management.UpgradeGDB(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.management.UpgradeGDB(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