2013-03-04 98 views
0

我需要你的帮助,以便我可以解决我工作中的一些问题。个性化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表中。

+0

谢谢你的回答杰伊。我想到了这一点,我已经准备好了这部分工作。事情是,在开发工作区,当我做一个表上右键单击(或在命令菜单上),我单击同步它也删除索引,但该进程不传递Application.dbSynchronize(),我可以告诉你,因为我已经添加了一个断点。你有什么想法,从哪个类的进程运行? – JGutierrezC 2013-03-07 15:07:04