This will be a quick post on an error I had when setting up a fresh AX2012 R3 installation. I was getting a bit ahead of myself and got stuck with an error when synchronizing the database.
And to help search engines find this post, the error in clear text:
Cannot create a record in Inheritance relation (SysInheritanceRelations). MainTableId: 12345.
The record already exists.
The error is due to the fact that I didn't restart the AOS after compiling the application. Lesson is; don't rush and do it the right way the first time.
Furthermore, if you DO get stuck, try do a quick search on Life Cycle Services for a solution:
https://fix.lcs.dynamics.com/Issue/Results?q=SysInheritanceRelations
Restarted the AOS and continued the installation.
I have been working with Dynamics AX, now Dynamics 365, since 2009 and I am excited to work with such an amazing platform for building business solutions.
Tuesday, June 10, 2014
Thursday, June 5, 2014
Delete Company in AX 2009 using SQL
One of the potential tasks when upgrading to a new version of Dynamics AX (like from AX2009 to AX2012) is getting rid of obsolete companies. Microsoft shared a SQL for this a few years back. I enhanced it a little bit and added some additional statements.
Just one important remark - DO NOT RUN THIS AGAINST AX2012!
In the interest of sharing, here it is:
Use at own risk (of course), and let me know if you find any issues with it.
Just one important remark - DO NOT RUN THIS AGAINST AX2012!
In the interest of sharing, here it is:
/******************************************************** REMOVE COMPANYID IN DYNAMICS AX 2009 USE AT OWN RISK! MAKE SURE YOUR TRANSACTION LOG IS PERMITTED TO GROW Inspired by: http://blogs.msdn.com/b/emeadaxsupport/archive/2010/12/09/how-to-delete-orphaned-data-remained-from-deleted-company.aspx Tommy Skaue http://yetanotherdynamicsaxblog.blogspot.com/ *********************************************************/ DECLARE @_TABLENAME NVARCHAR(40) DECLARE @_COMPANYID NVARCHAR(4) SET @_COMPANYID = N'TST'; -- COMPANY TO DELETE DECLARE CURSQLDICTIONARY CURSOR FOR SELECT A.SQLNAME FROM SQLDICTIONARY A INNER JOIN SQLDICTIONARY X ON X.TABLEID = A.TABLEID AND X.FIELDID = 61448 WHERE A.FIELDID = 0 AND A.FLAGS = 0 OPEN CURSQLDICTIONARY FETCH NEXT FROM CURSQLDICTIONARY INTO @_TABLENAME WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @_SQL NVARCHAR(4000) SET @_SQL = N'DELETE FROM ' + QUOTENAME(@_TABLENAME) + N' WHERE DATAAREAID = @_DATAAREAID' PRINT (CHAR(13) + 'Removing ' + @_COMPANYID + ' from ' + @_TABLENAME + '...') EXEC SP_EXECUTESQL @_SQL, N'@_DATAAREAID NVARCHAR(4)', @_DATAAREAID = @_COMPANYID FETCH NEXT FROM CURSQLDICTIONARY INTO @_TABLENAME END PRINT (CHAR(13) + 'Finalizing...') DELETE FROM DATAAREA WHERE DATAAREA.ID = @_COMPANYID DELETE FROM COMPANYDOMAINLIST WHERE COMPANYDOMAINLIST.COMPANYID = @_COMPANYID DELETE FROM VIRTUALDATAAREALIST WHERE VIRTUALDATAAREALIST.ID = @_COMPANYID PRINT (CHAR(13) + 'Done!') CLOSE CURSQLDICTIONARY DEALLOCATE CURSQLDICTIONARY
Use at own risk (of course), and let me know if you find any issues with it.
Subscribe to:
Posts (Atom)