Показать сообщение отдельно
Старый 21.09.2018, 17:28   #32  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Разобрался в чем проблема.

Если база и аос устанавливается в режиме "Register database for upgrade from Microsoft Dynamics AX 4.0 or Microsoft Dynamics AX 2009" то инсталлятор прописывает в БД хранимку TABLEPERTYPEINHERITANCEMODE которая возвращает 1. Также в табличке SYSGLOBALCONFIGURATION создает запись с NAME = TABLEPERTYPEMODE

После этого аос считает что иерархию табличек надо хранить как в RTM версии в режиме одна табличка на одну табличку иерархии.

Указанный эффект можно получить если просто в обычной базе создать хранимку командой
X++:
USE [BASE_NAME]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[TABLEPERTYPEINHERITANCEMODE] AS SELECT 1
GO
и рестартовать аос. На что влияет запись в SYSGLOBALCONFIGURATION пока неясно - похоже что ни на что.

Касательно задачи конвертации базы из ax4/2009 в формат 2012 R3 - то судя по всему предположение (что конвертер с предыдущих версий конвертирует базу в RTM формат) оказалось правильным и база в 2012-й сперва создается в режиме TABLEPERTYPEINHERITANCEMODE (так как инсталлятор создает ее с хранимкой) а после импорта / конвертации данных из ax4/2009 запускается класс SysDataUpgradeSCscTPT2TPH который и конвертирует уже способ хранения табличек в "плоский" режим. А в конце грохает хранимку и запись в SYSGLOBALCONFIGURATION (см. методы getStoredProcCleanupStatement и isInUnFlattenMode).

Последний раз редактировалось Logger; 21.09.2018 в 18:16.
За это сообщение автора поблагодарили: sukhanchik (6), gl00mie (5), -DocSerzh- (1), S.Kuskov (2).