Skip to main content

Posts

How to check table size from SQL server

We often require to check size of the table to moniter database performance, specially working with files and storing it in database. AX does store files in database which can be setup under Document types in Document Management module. We can use following sql command to get table size; sp_spaceused docuValue

Retrieve worker email address through X++

Below code snipet is one of the way to retrieve employee/worker's primary email address. private LogisticsElectronicAddressLocator getInstructorEmail(HcmWorkerRecId  _workerRecId) {     LogisticsElectronicAddress  logisticsElectronicAddress;     HcmWorker                   hcmWorker;     DirPerson                   dirPerson;     DirPartyTable               dirPartyTable;     select hcmWorker         where hcmWorker.RecId == _workerRecId     join dirPerson         where dirPerson.RecId == hcmWorker.Person     join dirPartyTable         where dirPartyTable.RecId == dirPerson.RecId     join logisticsElectronicAddress         where dirPartyTable.PrimaryContactEmail == logisticsElectr...

AX 2012 upgrade - Connect to source database failure

During database upgrade checklist I was failed to connect with source database. I followed the suggested steps from upgrade guide as pasted below but these weren't enough in my case for successful connection. Configure matching user permissions Windows integrated security is used to connect to the source database from the target system. If the administrative user who is performing the upgrade on the target system does not have access to the source system database, the source system will reject the database connection. Open Microsoft SQL Server Management Studio on the source system and perform the following steps: 1.      Grant Microsoft Dynamics AX database access to a domain user with administrative privileges on the target Microsoft Dynamics AX 2012 system. 2.      Add the user to the   db_owner   and   public   roles. SOLUTION:  Make sure you have assigned sysadmin role to the AOS ...

Unit Conversion Check AX2009 Vs AX2012

AX 2009 if(!UnitConvert::canConvert(this.inventTableModuleInvent().UnitId, this.SAB_ProdPickingUOM, this.ItemId)) AX 2012 unitConvFound = UnitOfMeasureConverter::canBeConverted(UnitOfMeasure::findBySymbol(this.inventTableModuleInvent().UnitId).RecId,                                                              UnitOfMeasure::findBySymbol(this.SAB_SalesPickingUOM).RecId,                                                                    this.Product);

Show methods in AX lookups

This sample code is used to show Customer Name in lookup, In AX 2009 we had name field in CustTable but now its moved to DirPartyTable. We still have name() in CustTable which we can use to display name in lookups. AX 2009 client static void lookupInterCompanyItemId(FormStringControl   lookupCtrl, DataAreaId _dataAreaId = "") {     SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tablenum(InventTable), lookupCtrl);     Query                   query = new Query();     QueryBuildDataSource    qbds = query.addDataSource(tablenum(InventTable));     ;     sysTableLookup.addLookupfield(fieldnum(InventTable, ItemId));     sysTableLookup.addLookupfield(fieldnum(InventTable, ItemName));   ...

InventTrans table data model changes in AX 2012 vs AX 2009

The purpose of this post is to give an overview about the changes been made in the Dynamics AX 2012 data model related to inventory transactions. For more details; how to implement code changes for inventTrans table the best resource is this white paper  Implementing InventTrans refactoring for Microsoft Dynamics AX Applications AX2012 Before AX2012, the only table used for recording all the inventory transactions was  InventTrans .  In AX2009, a lot of data in InventTrans is either redundant or fields are used to represent a specific type of transaction like sales, purchase, transfer etc. In AX2012, the base is still the same i.e. every inventory still gets recorded in the  InventTrans  but the only difference is that the table has been more normalized now. A new table has been added called  InventTransOrigin  which is actually now holding the relationship between the originating tables (transaction tables) and InventTrans . The InventT...

AX to SQL data dictionary synchronization issues

One of my clients restored their AX database from PROD to DEV environment for AX 2009 and on database sync following error message was thrown Cannot execute a data definition language command on (). The SQL database has issued an error. Problems during SQL data dictionary synchronization. The operation failed. Synchronize failed on 1 table(s) This error message does not tell you which table is failing during sync, when I checked from event log I found following error logs which tells you table name but error message was totally misleading. “Object Server 01: The database reported (session 5 (#####)): [Microsoft][SQL Native Client][SQL Server]There is already an object named '<TABLENAME>' in the database”   "Object Server 01:  The database reported (session 23 (#####)): [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot drop the table  '<TABLENAME>', because it does not exist or you do not have permission.. The S...