Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Ao executar o Microsoft Dynamics CRM 4,0, o Microsoft Dynamics CRM 2011, o Microsoft Dynamics CRM 2013 ou o Microsoft Dynamics CRM 2015, a tabela AsyncOperationBase cresce para ser muito grande. Quando a tabela contém milhões de registros, o desempenho é lento. Além disso, os erros semelhantes aos seguintes são registrados no log de eventos do aplicativo no servidor que está executando o Microsoft Dynamics CRM:

Tipo de evento: ErrorEvent Source: MSCRMDeletionServiceEvent: NoneEvent ID: 16387Date: 2009/01/26Time: 11:41:54 AMUser: N/AComputer: CRMSERVERDescription: erro: o serviço de exclusão não pôde limpar a tabela = CleanupInactiveWorkflowAssembliesProcedure para obter mais informações, consulte o centro de ajuda e suporte em http://go.microsoft.com/fwlink/events.asp.

Resolução

Para solucionar esse problema, realize uma limpeza da tabela AsyncOperationBase executando o seguinte script em relação ao banco de dados<OrgName>_MSCRM, onde o espaço reservado<OrgName> representa o nome real da sua organização.AvisoAntes de limpar os dados, lembre-se de que trabalhos concluídos do sistema têm valor empresarial em alguns casos e precisam ser armazenados por um longo período. Portanto, você deve discutir isso com o pessoal de administração da sua organização primeiro. Trabalhos do sistema que são afetados:

  • Coleta de dados SQM. As métricas de qualidade do software coletam dados para o programa de experiência do cliente.

  • Atualize o trabalho do SQL Estados de contrato. Esse trabalho é executado uma vez por dia à meia-noite. Este trabalho define os Contratos expirados com um estado de expirado.

  • Índice de catálogo de texto completo da organização. Preenche o índice de texto completo no BD para pesquisar artigos da base de dados de conhecimento Microsoft no CRM.

Se os trabalhos recorrentes foram cancelados, eles serão removidos. Observações

  • Para Microsoft Dynamics CRM O script SQL neste artigo da base de dados de conhecimento é apenas um esforço único. Você pode adicioná-lo como um trabalho SQL para ser executado por uma recorrência noturna, semanal ou mensalmente. Durante a execução do CRM, você precisa aplicar este artigo semanalmente, dependendo das suas necessidades comerciais ou aplicar a solução escrevendo trabalhos de exclusão em massa personalizados. (Consulte a documentação do SDK do CRM na propriedade BulkDeleteRequest. queryset , na classe BulkDeleteRequest e na ordem de exclusão)

  • Certifique-se de que os registros AsyncOperation para fluxos de trabalho e os registros correspondentes sejam excluídos do objeto WorkflowLogBase .

  • Certifique-se de que todos os registros bulkdeletefailure e bulkdeleteoperation correspondentes sejam excluídos.

  • Certifique-se de que apenas os seguintes tipos de operações assíncronas sejam excluídos se o código de estado dos tipos for 3 e o código de status dos tipos for 30 ou 32:

    • Tarefa de expansão do fluxo de trabalho (1)

    • Coletar dados de SQM (9)

    • PersistMatchCode (12)

    • FullTextCatalogIndex (25)

    • UpdateContractStates (27)

    • Fluxo de trabalho (10)

IF EXISTS (SELECT name from sys.indexesWHERE name = N'CRM_AsyncOperation_CleanupCompleted')      DROP Index AsyncOperationBase.CRM_AsyncOperation_CleanupCompletedGOCREATE NONCLUSTERED INDEX CRM_AsyncOperation_CleanupCompletedON [dbo].[AsyncOperationBase] ([StatusCode],[StateCode],[OperationType])GOwhile(1=1)begindeclare @DeleteRowCount int = 10000declare @rowsAffected intdeclare @DeletedAsyncRowsTable table (AsyncOperationId uniqueidentifier not null primary key)insert into @DeletedAsyncRowsTable(AsyncOperationId)Select top (@DeleteRowCount) AsyncOperationId from AsyncOperationBasewhere   OperationType in (1, 9, 12, 25, 27, 10)   AND StateCode = 3   AND StatusCode in (30, 32) select @rowsAffected = @@rowcount  delete poa from PrincipalObjectAccess poa    join WorkflowLogBase wlb on    poa.ObjectId = wlb.WorkflowLogId   join @DeletedAsyncRowsTable dart on    wlb.AsyncOperationId = dart.AsyncOperationIddelete WorkflowLogBase from WorkflowLogBase W, @DeletedAsyncRowsTable dwhere   W.AsyncOperationId = d.AsyncOperationId              delete BulkDeleteFailureBase From BulkDeleteFailureBase B, @DeletedAsyncRowsTable dwhere   B.AsyncOperationId = d.AsyncOperationIddelete BulkDeleteOperationBase From BulkDeleteOperationBase O, @DeletedAsyncRowsTable dwhere   O.AsyncOperationId = d.AsyncOperationIddelete WorkflowWaitSubscriptionBase from WorkflowWaitSubscriptionBase WS, @DeletedAsyncRowsTable dwhere   WS.AsyncOperationId = d.AsyncOperationID  delete AsyncOperationBase From AsyncOperationBase A, @DeletedAsyncRowsTable dwhere   A.AsyncOperationId = d.AsyncOperationId/*If not calling from a SQL job, use the WAITFOR DELAY*/if(@DeleteRowCount > @rowsAffected)  returnelse  WAITFOR DELAY '00:00:02.000'end

Melhorar o desempenho do script de exclusão

  • Para melhorar o desempenho geral do Microsoft Dynamics CRM, agende o serviço de exclusão do Microsoft Dynamics CRM para ser executado fora do horário de pico do Microsoft Dynamics CRM. Por padrão, o serviço é executado no momento em que o Microsoft Dynamics CRM foi instalado. No entanto, você pode definir o serviço para ser executado às 10:00 PM, em vez de na hora padrão. Para fazer isso, use o editor de trabalho do Microsoft Dynamics CRM Scale do Microsoft Dynamics CRM. Para obter mais informações, acesse o seguinte website da CodePlex:

    http://crmjobeditor.codeplex.com/Observações

    1. Essa ação não afeta diretamente o desempenho do script.

    2. O editor de trabalhos do Microsoft Dynamics CRM 4,0 foi depecrated e não está mais disponível.

  • Para melhorar o desempenho dos scripts de exclusão neste artigo e para melhorar o código do serviço de exclusão do Microsoft Dynamics CRM que executa exclusões semelhantes, adicione os três seguintes índices ao banco de dados do OrganizationName_MSCRM antes de executar o script de exclusão neste artigo:

    CREATE NONCLUSTERED INDEX CRM_WorkflowLog_AsyncOperationID ON [dbo].[WorkflowLogBase] ([AsyncOperationID])GO CREATE NONCLUSTERED INDEX CRM_DuplicateRecord_AsyncOperationID ON [dbo].[DuplicateRecordBase] ([AsyncOperationID])GOCREATE NONCLUSTERED INDEX CRM_BulkDeleteOperation_AsyncOperationID ON [dbo].[BulkDeleteOperationBase](AsyncOperationID)GO

    Observação Se você não adicionar esses índices, o script de exclusão poderá levar horas para ser executado.

  • Interrompa o serviço de processamento assíncrono do Microsoft Dynamics CRM enquanto você executa esse script.

  • Adicionais Reconstrua os seguintes índices e atualize as estatísticas:

    -- Rebuild Indexes & Update Statistics on AsyncOperationBase Table ALTER INDEX ALL ON AsyncOperationBase REBUILD WITH (FILLFACTOR = 80, ONLINE = OFF,SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF)GO -- Rebuild Indexes & Update Statistics on WorkflowLogBase Table ALTER INDEX ALL ON WorkflowLogBase REBUILD WITH (FILLFACTOR = 80, ONLINE = OFF,SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = OFF)GO
  • Adicionais Atualize as estatísticas com a verificação completa em todas as tabelas que envolvem esta consulta usando os seguintes comandos (de preferência às horas de pico):

    UPDATE STATISTICS [dbo].[AsyncOperationBase] WITH FULLSCANUPDATE STATISTICS [dbo].[DuplicateRecordBase] WITH FULLSCANUPDATE STATISTICS [dbo].[BulkDeleteOperationBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowCompletedScopeBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowLogBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowWaitSubscriptionBase] WITH FULLSCAN
  • Adicionais Altere o modelo de recuperação do banco de dados do MSCRm para simples para evitar a geração excessiva de logs do Microsoft SQL Server. Para o SQL Server 2005, faça logon no Microsoft SQL Server Management Studio como administrador, clique com o botão direito do mouse no seu <org_name banco de dados>_MSCRM, clique em Propriedades, clique em Opçõese, em seguida, clique em modelo de recuperação. Marque simplese clique em OK. Depois de executar esse script da primeira vez, o <org_name>_MSCRM modelo de recuperação de banco de dados deve ser revertido para o melhor modelo de capacidade de recuperação de dados.

  • Para aumentar o desempenho do script, o valor @DeleteRowCount de 10.000 pode ser reduzido

Para determinar o número de registros a serem excluídos pelo script neste artigo, execute o seguinte script de contagem no banco de dados do OrganizationName_MSCRM:

Select Count(AsyncOperationId)from AsyncOperationBase WITH (NOLOCK)where OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode IN (30,32) 

Erro de scriptAo executar o script de limpeza, você pode receber uma mensagem de erro semelhante à seguinte:

A instrução DELETE entrou em conflito com a restrição de referência "asyncoperation_workflowwaitsubscription". O conflito ocorreu no banco de dados "Contoso_MSCRM", tabela "dbo. WorkflowWaitSubscriptionBase ", coluna ' AsyncOperationid '. A instrução foi encerrada.

Se você receber essa mensagem de erro, interrompa o script de limpeza e siga estas etapas para remover os registros restantes do WorkflowWaitSubscription que existem para fluxos de trabalho concluídos ou cancelados. Esses registros não devem mais existir porque devem ter sido excluídos quando os fluxos de trabalho foram concluídos ou cancelados. Você não verá os registros retornados desta consulta. Qualquer coisa à esquerda na tabela WorkflowWaitSubscriptionBase que aparece nessa consulta é um registro órfão. Você não pode excluir esses registros por meio da interface do usuário porque o processo assíncrono do Microsoft CRM está em um estado cancelado ou concluído. O script a seguir verificará quantos registros WorkflowWaitSubscriptionBase órfãos existem para registros de fluxo de trabalho concluídos e cancelados:

select count(*) from workflowwaitsubscriptionbase WITH (NOLOCK) where asyncoperationid in (Select asyncoperationid from AsyncOperationBase WITH (NOLOCK) where OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode IN (30,32)) 

O script a seguir excluirá WorkflowWaitSubscriptionBase registros de registros perdidos e cancelados para registros de fluxo de trabalho concluídos e cancelados:

delete from workflowwaitsubscriptionbase where asyncoperationid in(Select asyncoperationidfrom AsyncOperationBasewhere OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode IN (30,32))

Após a execução da instrução DELETE, o AsyncoperationBase e o script de limpeza do fluxo de trabalho serão concluídos com êxito.

Informações adicionais

Para obter mais informações, clique no número abaixo para ler os artigos na base de dados de conhecimento da Microsoft:

954929 A entidade AsyncOperation consome uma parte significativa do banco de dados do [org] _MSCRM e causa mau desempenho no Microsoft Dynamics CRM

957871 Os registros de tarefa de expansão do fluxo de trabalho fazem com que a tabela AsyncOperationBase do banco de dados do MSCRm cresça muito grande no Microsoft Dynamics CRM 4,0 Para obter mais informações sobre terminologia de atualização de software, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da MicrosoftPara obter mais informações sobre a terminologia do pacote de hotfix e atualização do software CRM do Microsoft Business Solutions, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:

887283 Padrões de nomenclatura do pacote de hotfix e atualização do software Microsoft Business Solutions CRM

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×