Rendimiento es lento si la tabla AsyncOperationBase deja demasiado grande en Microsoft Dynamics CRM 4.0

Seleccione idioma Seleccione idioma
Id. de artículo: 968520 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando ejecuta Microsoft Dynamics CRM 4.0, la tabla AsyncOperationBase aumenta a ser muy grande. Cuando la tabla contiene millones de registros, el rendimiento es lento.

Además, se registran errores similares a los siguientes en el servidor de Microsoft Dynamics CRM en el registro de sucesos de aplicación:
Tipo de suceso: error
Origen del suceso: MSCRMDeletionService
Categoría del suceso: ninguna
ID. de suceso: 16387
Fecha: 26/01/2009
Hora: 11:41:54 A.M.
Usuario: N/d
Equipo: CRMSERVER
Descripción: Error: el servicio de eliminación no pudo limpiar tabla = CleanupInactiveWorkflowAssembliesProcedure para obtener más información, consulte Ayuda y Centro de soporte técnico en http://go.Microsoft.com/fwlink/events.ASP.

Solución

Para resolver este problema, realice una limpieza de la tabla AsyncOperationBase ejecutando la secuencia de comandos siguiente en el <OrgName> base de datos _MSCRM, donde <orgname> es un marcador de posición para el nombre real de la organización.

Advertencia: trabajos antes de limpiar los datos por favor, tenga en cuenta que completado sistema tiene valor empresarial en algunos casos y necesita almacenarse durante un largo período, por lo tanto, por favor, hablar con personal de administración de la organización primero.

Trabajos de sistema afectados:
  • Colección de datos SQM. Programa de experiencia de medidas de calidad - software que recopila datos para el cliente.
  • Trabajo SQL Update Contract States. Este trabajo ejecuta una vez al día a medianoche. Este trabajo establece los contratos caducados en un estado de caducado.
  • Índice de catálogo de texto completo organización - llena índice de texto completo en la base de datos para buscar artículos de kb en CRM.

Si se han cancelado trabajos periódicos se quitarán.

notas
  • La secuencia de comandos en este artículo KB SQL es sólo esfuerzo puntual. Puede agregar esto como un trabajo SQL para ejecutar en forma periódica en una base por la noche, semanal o mensual. como la ejecución CRM , cualquiera necesita aplica este artículo de Knowledge Base en semanalmente dependiendo de su negocio necesita o aplique la solución por escribiendo personalizados DELETE BULK trabajos (consulte nuestra documentación CRM SDK de la orden de eliminación, BulkDeleteRequest clases y propiedades de BulkDeleteRequest.QuerySet).
  • Asegúrese de que los registros de AsyncOperation para flujos de trabajo y los registros correspondientes se eliminan desde el objeto WorkflowLogBase .
  • Asegúrese de que se eliminan todos los registros de bulkdeletefailure correspondiente.
  • Asegúrese de que sólo los tipos siguientes de la operación asincrónica se eliminan si el código de estado de los tipos es 3 y el código de estado de los tipos es 30 o 32:
    • Tareas de expansión de flujo de trabajo (1)
    • Recopilar datos SQM (9)
    • PersistMatchCode (12)
    • FullTextCatalogIndex (25)
    • UpdateContractStates (27)
    • Flujo de trabajo (10)
IF EXISTS (SELECT name from sys.indexes
                  WHERE name = N'CRM_AsyncOperation_CleanupCompleted')
      DROP Index AsyncOperationBase.CRM_AsyncOperation_CleanupCompleted
GO
CREATE NONCLUSTERED INDEX CRM_AsyncOperation_CleanupCompleted
ON [dbo].[AsyncOperationBase] ([StatusCode],[StateCode],[OperationType])
GO

declare @DeleteRowCount int
Select @DeleteRowCount = 2000
declare @DeletedAsyncRowsTable table (AsyncOperationId uniqueidentifier not null primary key)
declare @continue int, @rowCount int
select @continue = 1
while (@continue = 1)
begin
      begin tran
      insert into @DeletedAsyncRowsTable(AsyncOperationId)
      Select top (@DeleteRowCount) AsyncOperationId
      from AsyncOperationBase
      where OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode in (30, 32)     
 
      Select @rowCount = 0
      Select @rowCount = count(*) from @DeletedAsyncRowsTable
      select @continue = case when @rowCount <= 0 then 0 else 1 end     
 
        if (@continue = 1)
        begin
            delete WorkflowLogBase from WorkflowLogBase W, @DeletedAsyncRowsTable d
            where W.AsyncOperationId = d.AsyncOperationId
            
delete BulkDeleteFailureBase From BulkDeleteFailureBase B, @DeletedAsyncRowsTable d
            where B.AsyncOperationId = d.AsyncOperationId
 
            delete AsyncOperationBase From AsyncOperationBase A, @DeletedAsyncRowsTable d
            where A.AsyncOperationId = d.AsyncOperationId            
 
            delete @DeletedAsyncRowsTable
      end
 
      commit
end

--Drop the Index on AsyncOperationBase

DROP INDEX AsyncOperationBase.CRM_AsyncOperation_CleanupCompleted


Mejorar el rendimiento de la secuencia de comandos eliminación

  • Para mejorar el rendimiento general de Microsoft CRM, programar el servicio de eliminación de Microsoft CRM para ejecutar durante horas de Microsoft CRM. De forma predeterminada, el servicio se ejecuta al tiempo que se instaló Microsoft CRM. Sin embargo, puede ejecutar el servicio ejecute a las 10: 00 P.M. en lugar de tiempo predeterminada. Para ello, utilice el Editor de trabajo de Microsoft CRM ScaleGroup. Para obtener más información, visite el siguiente sitio Web de MSDN:
    http://code.msdn.microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    Nota Esta acción no afecta directamente al rendimiento de la secuencia de comandos.
  • Para mejorar el rendimiento de las secuencias de comandos eliminación en este artículo y para mejorar el código de Microsoft CRM DeletionService que se ejecuta elimina similar, agregue los siguientes índices de three a la base de datos OrganizationName_MSCRM antes de ejecutar la secuencia de comandos eliminación en este artículo:
    CREATE NONCLUSTERED INDEX CRM_WorkflowLog_AsyncOperationID ON [dbo].[WorkflowLogBase] ([AsyncOperationID])
    GO 
    
    CREATE NONCLUSTERED INDEX CRM_DuplicateRecord_AsyncOperationID ON [dbo].[DuplicateRecordBase] ([AsyncOperationID])
    GO
    
    CREATE NONCLUSTERED INDEX CRM_BulkDeleteOperation_AsyncOperationID ON [dbo].[BulkDeleteOperationBase]
    (AsyncOperationID)
    GO
    
    Nota si no lo agregue estos índices, la secuencia de comandos eliminación puede tardar horas para ejecutar.
  • Detenga el servicio procesamiento con el Microsoft CRM asincrónica mientras ejecuta esta secuencia de comandos.
  • opcional: reconstruir los índices siguientes y actualizar las estadí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
  • opcional: Actualizar estadísticas con digitalización total en todas las tablas relacionadas con esta consulta mediante el debajo de comandos (preferiblemente en fuera de las horas punta):
    UPDATE STATISTICS [dbo].[AsyncOperationBase] WITH FULLSCAN
    UPDATE STATISTICS [dbo].[DuplicateRecordBase] WITH FULLSCAN
    UPDATE STATISTICS [dbo].[BulkDeleteOperationBase] WITH FULLSCAN
    UPDATE STATISTICS [dbo].[WorkflowCompletedScopeBase] WITH FULLSCAN
    UPDATE STATISTICS [dbo].[WorkflowLogBase] WITH FULLSCAN
    UPDATE STATISTICS [dbo].[WorkflowWaitSubscriptionBase] WITH FULLSCAN
  • opcional : cambiar modelo de recuperación de la base de datos de MSCRM a simple para evitar el exceso de generación de registros del servidor SQL. Para SQL server 2005, inicie sesión en SQL Server Management Studio como administrador, derecha haga clic en la base de datos de <org_name> _MSCRM, Propiedades , haga clic en Opciones y, a continuación, haga clic en Modelo de recuperación . Marque simple y, a continuación, haga clic en Aceptar . después de ejecutar esta secuencia de comandos de la hora inicial, se debe cambiar el modelo de recuperación <org_name> _MSCRM base de datos al completo para el mejor modelo de recuperación de datos.




Para determinar el número de registros que se va a eliminar la secuencia de comandos en este artículo, ejecute el siguiente script de recuento en la base de datos 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) 

Más información

Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
954929La entidad de AsyncOperation consume una parte importante de la base de datos [organización] _MSCRM y hace que un rendimiento deficiente en Microsoft Dynamics CRM
Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
957871Los registros de tareas de expansión de flujo de trabajo que la tabla AsyncOperationBase en la base de datos crezca demasiado grande en Microsoft Dynamics CRM 4.0 MSCRM
Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft
Para obtener más información acerca de terminología de paquete de revisión y actualización de software de Microsoft Business Solutions CRM, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
887283Los estándares de nomenclatura de paquete de actualización y revisiones de software de Microsoft Business Solutions CRM

Propiedades

Id. de artículo: 968520 - Última revisión: martes, 01 de septiembre de 2009 - Versión: 7.0
La información de este artículo se refiere a:
  • Microsoft Dynamics CRM 4.0
Palabras clave: 
kbmt kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver KB968520 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 968520

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com