Pessoal,
Após o go-live geralmente sobram algumas empresas na base que foram usadas para testes, acertos e etc… Tudo bem que o lugar delas não é junto com a base de produção, mas não é o que sempre vemos por ai. Quando se remove uma empresa, nem sempre todas as tabelas envolvidas são limpas, e este post que originalmente foi postado no blog EMEA Dynamics AX Support serve justamente para mostrar como limpar esta base de qualquer ‘sujeira’ que tenha ficado de fora da limpeza que o AX faz.

DECLARE @_tableName nvarchar(40)
DECLARE @_companyId nvarchar(4)
 
SET @_companyId = N'<company_id>';  -- substitua pelo nome da empresa que deseja remover, por exemplo CEU
 
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'
 
 EXEC sp_executesql @_sql, N'@_dataAreaId nvarchar(4)', @_dataAreaId = @_companyId  
 
 FETCH NEXT FROM curSqlDictionary INTO @_tableName
END
 
CLOSE curSqlDictionary
DEALLOCATE curSqlDictionary

[]s
Pichler