Les performances sont ralenties si la table AsyncOperationBase devient trop volumineuse dans Microsoft Dynamics CRM 4.0

Traductions disponibles Traductions disponibles
Numéro d'article: 968520 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez Microsoft Dynamics CRM 4.0, la table AsyncOperationBase s'agrandisse pour être très volumineux. Lorsque la table contient des millions d'enregistrements, les performances est lente.

En outre, les erreurs semblables aux suivantes sont enregistrées sur le serveur Microsoft Dynamics CRM dans le journal des événements applications :
Type d'événement : erreur
Source de l'événement : MSCRMDeletionService
Catégorie d'événement : aucun
ID d'événement : 16387
Date : 26/01/2009
Heure: 11:41:54 AM
Utilisateur: n/A
Ordinateur : SERVEURCRM
Description : Erreur : le service de suppression n'a pas pu nettoyer la table = CleanupInactiveWorkflowAssembliesProcedure pour plus d'informations, consultez Aide et support à l'adresse suivante : http://go.microsoft.com/fwlink/events.asp.

Résolution

Pour résoudre ce problème, effectuez un nettoyage de la table AsyncOperationBase en exécutant le script suivant sur le <OrgName> base de données _MSCRM, où <orgname> est un espace réservé pour le nom réel de votre organisation.

Avertissement : travaux avant de nettoyer les données Veuillez Remarque terminée système avez valeur commerciale dans certains cas et devez être stockés pour une longue période, par conséquent, veuillez discuter avec le personnel d'administration de votre orgnization tout d'abord.

Système de travaux affectés :
  • Collecte de données SQM. Mesures de qualité - logiciel qui collecte des données pour le client expérience programme.
  • Travail SQL Update Contract States. Ce travail s'exécute une fois par jour à minuit. Ce travail définit les contrats arrivés à expiration à un état expiré.
  • Organisation plein texte catalogue index - remplit les index de texte intégral dans la base de données pour la recherche articles Ko dans CRM.

Ils seront supprimés si travaux périodiques a été annulée.

Notes
  • Le script SQL dans cet article est effort unique seulement. Vous pouvez ajouter comme un travail SQL à exécuter sur une base périodique dans une base nocturne, hebdomadaire ou mensuelle. comme vos séries CRM , vous devrez appliquer cet article sur une base hebdomadaire en fonction de votre entreprise a besoin, ou appliquer la solution à écrire dans personnalisé BULK DELETE travaux (reportez-vous à notre documentation SDK CRM sur propriété BulkDeleteRequest.QuerySet, classe BulkDeleteRequest et commande de suppression).
  • Assurez-vous que les enregistrements AsyncOperation de flux de travail et les enregistrements correspondants sont supprimées de l'objet WorkflowLogBase .
  • Assurez-vous que tous les enregistrements bulkdeletefailure correspondantes sont supprimées.
  • Assurez-vous que seuls les types d'opération asynchrone suivants sont supprimés si le code d'état des types est 3 et que le code d'état des types est 30 ou 32 :
    • Tâche de développement du flux de travail (1)
    • Collecter des données SQM (9)
    • PersistMatchCode (12)
    • FullTextCatalogIndex (25)
    • UpdateContractStates (27)
    • Flux de travail (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


Améliorer les performances du script de suppression

  • Pour améliorer les performances de Microsoft CRM, planifier le service de suppression de Microsoft CRM à exécuter pendant les heures creuses pour Microsoft CRM. Par défaut, le service s'exécute au moment où Microsoft CRM a été installé. Toutefois, vous pouvez exécuter le service s'exécute à 10: 00 au lieu de à l'heure par défaut. Pour ce faire, utilisez l'éditeur de tâche Microsoft CRM ScaleGroup. Pour plus d'informations, site suivant Web MSDN :
    http://code.msdn.microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    Remarque Cette action n'affecte pas directement les performances du script.
  • Pour améliorer les performances des scripts de suppression de cet article et pour améliorer le code de Microsoft CRM DeletionService qui s'exécute supprime similaire, ajoutez les index three suivants à la base de données OrganizationName_MSCRM avant d'exécuter le script de suppression de cet article :
    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
    
    Remarque si vous n'ajoutez pas ces index, le script de suppression peut prendre heures à s'exécuter.
  • Arrêtez le service de traitement asynchrone Microsoft CRM lorsque vous exécutez ce script.
  • argument facultatif : reconstruire les index suivants et mettre à jour statistiques :
    -- 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
  • argument facultatif : Mise à jour statistiques avec analyse complète toutes les tables impliquées dans cette requête à l'aide de la sous commandes (préférence au hors des heures de pointe):
    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
  • argument facultatif : modifier le modèle de récupération de la base de données MSCRM pour simple pour éviter trop de génération de journaux de serveur SQL. Pour SQL server 2005, connexion à Microsoft SQL Server Management Studio en tant qu'administrateur, cliquez avec le bouton droit sur votre base de données <org_name> _MSCRM, cliquez sur Propriétés , cliquez sur Options , puis sur Modèle de récupération . Sélectionnez simple et puis cliquez sur OK . après avoir exécuté ce script de la première fois, le modèle de récupération <org_name> _MSCRM de base de données doit être remis à complet du modèle de récupération données mieux.




Pour déterminer le nombre d'enregistrements supprimés par le script dans cet article, exécutez le script compte suivant dans la base de données 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) 

Plus d'informations

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
954929L'entité AsyncOperation consomme une partie importante de la base de données [Org] _MSCRM et provoque une baisse des performances dans Microsoft Dynamics CRM
Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
957871Les enregistrements de tâches de développement workflow provoquent la table AsyncOperationBase dans la base de données MSCRM afin de devenir trop volumineux dans Microsoft Dynamics CRM 4.0
Pour plus d'informations sur la terminologie mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
824684Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft
Pour plus d'informations sur la terminologie package Microsoft Business Solutions CRM logicielle correctif et mise à jour, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
887283Normes d'attribution de noms packages de mise à jour et correctifs logiciels Microsoft Business Solutions CRM

Propriétés

Numéro d'article: 968520 - Dernière mise à jour: mardi 1 septembre 2009 - Version: 7.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Dynamics CRM 4.0
Mots-clés : 
kbmt kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver KB968520 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 968520
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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