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.
No comments:
Post a Comment