Цитата:
Сообщение от
trud
А как такой скрипт написать в SQL?
"newBuffer.doInsert();" требует же выделения нового RecId, т.е. как-то в SQL его надо будет выделять
Код типа такого должен работать -
Код:
declare @newDataAreaId as nvarchar(4) = 'BBBB'
declare @virtualDataAreaId as nvarchar(4) = 'V'
insert into [Table1]
(
[RECID]
, [DATAAREAID]
...list of fields...
)
SELECT
[RECID] = row_number() over (order by (select NULL)) + (select isnull(max(RECID), 0) from [Table1] )
, [DATAAREAID] = @newDataAreaId
, ...list of fields...
FROM [Table1] as [sourceTable]
WHERE [sourceTable].DATAAREAID = @virtualDataAreaId
Почему не SYSTEMSEQUENCES? Потому что D365 использует SQL sequence для выделения RecId и про SYSTEMSEQUENCES можно забыть как пережиток прошлого.
Data upgrade создаст все SQL sequence для RecId автоматически (см. DataUpgradePackage\AOSService\Scripts\AutoMajorDataUpgradePreReqs.ps и AdjustSQLSequences.sql).
Скрипт делает select max(RecId) по всем таблицам, так что опять, что там в SYSTEMSEQUENCES неважно.
Цитата:
Скрипт на T-SQL иногда быстрее и проще в разы, но в D365 MS не дает доступа на ПРОД базу SQL.
Скрипты для AX2012.
Цитата:
Сообщение от
skuull
Чисто из вредности спрошу, чем 2 SQL скрипта и 1 x++ джоб проигрывают в повторяемости во всех средах ? Да. там больше ручных действий, но если идти по списку то какая принципиальная разница?
Вас while select + doInsert не смущает? Изменение-копирование данных - это для SQL, если надо бизнес логику - тогда X++ job.
Плюс, а сколько там других шагов будет которые тоже вручную делать?
По мне так на go-live день чем меньше шагов, тем лучше -
Потушил AOSы (вручную),
Запустил скрипт -
DB back up, подготовка дынных (например virtual companies), скрипты от МС для подготовки bacpac, сам bacpac, залив bacpac в блоб, restore в sandpit, создание сервисных аккаунтов.
Как скрипт отработал - запуск D365 upgrade.
А сколько раз вы эти шаги будете делать перед реальным go-live?
Тоже чисто из вредности спрошу, а вы код релизите через xpo вручную?