Персонализируйте синхронизацию Dynamics AX
Мне нужна ваша помощь, чтобы я мог решить некоторые проблемы на моей работе.
У нас есть некоторые отчеты, которые мы запускаем на Sql Server Reporting Services. Запрос на нем выполнен на языке T-SQL, но отчет действительно медленный, поэтому я запустил "Показать примерный план выполнения" в SQL Server Management Studio, и он сказал мне, что для запроса мне нужны следующие индексы:
CREATE NONCLUSTERED INDEX [InventJournalTable_JournalIdDataAreaId]
ON [dbo].[INVENTJOURNALTABLE] ([JOURNALID],[DATAAREAID])
CREATE NONCLUSTERED INDEX [InventTrans_InventTransOrigin]
ON [dbo].[INVENTTRANS] ([INVENTTRANSORIGIN],[DATAAREAID],[DATEPHYSICAL])
INCLUDE ([ITEMID],[QTY],[COSTAMOUNTPHYSICAL],[INVENTDIMID])
Я создал их, и запрос (раньше выполнялся за 25 и более минут) теперь выполняется за две секунды. Но всякий раз, когда синхронизация выполняется в AX, очевидно, созданные индексы должны быть удалены.
Есть ли какой-либо триггер или что-то, что я могу выполнить, когда синхронизация завершена, чтобы я мог снова создать нужные мне индексы или любое другое будущее действие?
Если я создаю его в AX, он включает столбец "Раздел" и не подходит для моего внешнего запроса, так как он все еще очень медленный.
Заранее спасибо за помощь.
1 ответ
Если вам нужно выполнить пользовательские операторы SQL при синхронизации базы данных, вы можете добавить свой код в Application.dbSychronize()
, Например, вы можете посмотреть в этой функции, чтобы увидеть, как система обрабатывает добавление хранимой процедуры в ShipCarrierStaging
Таблица.