Passo a passo: | Na geração de um cubo .Net ou na exportação de um cubo para arquivo (.XLS, XLSX, CSV, TXT, [...] ) uma exceção de Estouro de Memória da Aplicação (SystemOuOfMemoryException) é levantado. POSSÍVEIS CAUSAS:1) O RM.exe e/ou o RM.Host.exe* podem estar sendo executados em 32 bits. Ao se executar o RM.exe e/ou o RM.Host.exe* em 32 bits, reduz-se o limite de consumo de memória da aplicação, fazendo com que não haja espaço sequencial de memória suficiente para gerar um cubo com muitos registros. *RM.Host.exe (executável) ou RM.Host.Service.exe (serviço).
![](/download/attachments/211064766/image2015-11-13%2018%3A31%3A1.png?version=1&modificationDate=1447450118000&api=v2) Imagem 1: O RM.Host.exe está sendo executado em 32 bits (Limita-se o espaço de memória suficiente para a geração correta do cubo)
Imagem 2: O RM.exe está sendo executado em 32 bits (Limita-se o espaço de memória suficiente para a geração correta do cubo)
![](/download/attachments/211064766/image2015-11-13%2018%3A32%3A26.png?version=1&modificationDate=1447450204000&api=v2) Imagem 3: O RM.Host.exe está sendo executado em 64 bits (O cubo pode consumir a memória disponível em sua totalidade)
![](/download/attachments/211064766/image2015-11-13%2018%3A39%3A31.png?version=1&modificationDate=1447450628000&api=v2) Imagem 4: O RM.exe está sendo executado em 64 bits (O cubo pode consumir a memória disponível em sua totalidade)
OBS: Para que o RM.exe e/ou RM.Host.exe sejam executados em 64 bits, abra o Prompt de Comando, apertando (Windows+R) e digitando "cmd";
![](/download/attachments/211064766/image2015-11-13%2019%3A0%3A7.png?version=1&modificationDate=1447451864000&api=v2) Imagem 5: Windows+R -> Executar, digitar "cmd"
![](/download/attachments/211064766/image2015-11-13%2019%3A2%3A25.png?version=1&modificationDate=1447452003000&api=v2) Imagem 6: Prompt de comando
Execute os comandos abaixo: cd\ cd C:\totvs\CorporeRM\RM.Net CorFlags.exe RM.exe /32bit- CorFlags.exe RM.Host.exe /32bit- CorFlags.exe RM.Host.Service.exe /32bit- O Resultado da execução dos comandos acima deve ser semelhante a esse:
![](/download/attachments/211064766/image2015-11-13%2019%3A4%3A54.png?version=1&modificationDate=1447452152000&api=v2) Imagem 7: Resultado da execução dos comandos citados acima.
2) A Memória Física é insuficiente para a geração correta do cubo.Foi evidenciado que uma máquina com memória menor ou igual a 4 gb é incapaz de gerar um cubo .net com muitos registros, é capaz de gerar apenas cubos com um número restrito de registros. Uma máquina com 8gb de memória é suficientemente capaz de gerar cubos com diversos registros, agrupamentos, filtros e outros componentes de tela.
Dicas para a geração correta de um cubo .net:1) TAG DBSCommandTimeoutCaso a consulta SQL demore mais que 1m e 40s (DBSCommandTimeout = 60000)], deve-se aumentar esse número*, para que o tempo de resposta do banco de dados seja suficiente para que o mesmo possa processar a requisição e traga os devidos dados. *Sugerido: 1000000
![](/download/attachments/211064766/image2015-11-13%2018%3A49%3A51.png?version=1&modificationDate=1447451248000&api=v2) Imagem 8: TAG DBSCommandTimeout = 10000001) Sufixos _N, _S, _D [...], em parâmetros da consulta sql vinculada ao cubo .NetAo adicionar sufixos aos parâmetros de uma consulta sql, o mecanismo de execução da consulta SQL, utiliza o tipo passado através do sufixo (_N: numérico, _S:string, D: data, [...]), fazendo com que a verificação interna de tipos, não seja executada, fazendo com que a consulta seja retornada mais rapidamente.
![](/download/attachments/211064766/image2015-11-13%2018%3A55%3A19.png?version=1&modificationDate=1447451576000&api=v2) Imagem 9: Sufixos em parâmetros da consulta SQL |