Le prestazioni sono lenta se la tabella AsyncOperationBase diventa troppo grande in Microsoft Dynamics CRM 4.0

Traduzione articoli Traduzione articoli
Identificativo articolo: 968520 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si esegue Microsoft Dynamics CRM 4.0, la tabella AsyncOperationBase aumenta a essere molto grande. Quando la tabella contiene milioni di record, le prestazioni risultano lente.

Sul server Microsoft Dynamics CRM in un registro eventi dell'applicazione vengono inoltre registrati errori analoghi ai seguenti:
Tipo evento: errore
Origine evento: MSCRMDeletionService
Categoria evento: nessuna
ID evento: 16387
Data: 2009/01/26
Ora: 11:41:54 AM
Utente: N/d
Computer: CRMSERVER
Descrizione: Errore: eliminazione Impossibile pulire la tabella = CleanupInactiveWorkflowAssembliesProcedure per ulteriori informazioni, vedere Guida in linea e supporto tecnico all'indirizzo http://go.microsoft.com/fwlink/events.asp.

Risoluzione

Per risolvere il problema, eseguire la pulitura della tabella AsyncOperationBase eseguendo lo script seguente contro il <OrgName> _MSCRM, dove <orgname> Ŕ un segnaposto per il nome effettivo dell'organizzazione.

Avviso: processi prima la pulitura dei dati, si noti che completata il sistema dispone di valore aziendale in alcuni casi ed Ŕ necessario essere memorizzato per un lungo periodo, pertanto, discutere con il personale amministrativo del orgnization la prima.

Processi di sistema interessati:
  • Raccolta dati SQM. -Software Quality Metrics che raccoglie i dati per il cliente si verifichi il programma.
  • Processo SQL Update Contract States. Questo processo consente di eseguire una sola volta al giorno a mezzanotte. Questo processo imposta uno stato di scaduti i contratti scaduti.
  • Indice di catalogo di testo completo organizzazione - inserisce l'indice full-text nel database per la ricerca degli articoli della kb in CRM.

Processi ricorrenti sono stati annullati verranno rimossi.

note
  • Lo script SQL in questo articolo KB Ŕ solo attivitÓ una sola volta. Ŕ possibile aggiungere questo come un processo SQL per eseguire su base periodica nella base ogni notte, ogni settimana o al mese. nelle esecuzioni CRM , Ŕ necessario uno applicabili di questo articolo della Knowledge Base su base settimanale a seconda dell'azienda deve o applicare la soluzione da writting processi BULK DELETE personalizzati (, fare riferimento alla nostra documentazione CRM su proprietÓ BulkDeleteRequest.QuerySet, classe BulkDeleteRequest e ordine di eliminazione).
  • Assicurarsi che i record di AsyncOperation per i flussi di lavoro e i record corrispondenti vengono eliminati dall'oggetto WorkflowLogBase .
  • Assicurarsi che vengono eliminati tutti i record di bulkdeletefailure corrispondente.
  • Assicurarsi che solo i seguenti tipi di operazione asincrona vengono eliminati se il codice di stato dei tipi Ŕ 3 e il codice di stato dei tipi Ŕ di 30 o 32:
    • AttivitÓ di espansione del flusso di lavoro (1)
    • Raccogliere dati SQM (9)
    • PersistMatchCode (12)
    • FullTextCatalogIndex (25)
    • UpdateContractStates (27)
    • Flusso di lavoro (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


Migliorare le prestazioni dello script l'eliminazione

  • Per migliorare le prestazioni generali di Microsoft CRM, Ŕ necessario pianificare il servizio di eliminazione di Microsoft CRM da eseguire durante gli orari per Microsoft CRM. Per impostazione predefinita, il servizio viene eseguito nel momento in cui Ŕ installato Microsoft CRM. Tuttavia, Ŕ possibile eseguire il servizio per eseguire 10: 00 anzichÚ al momento dell'impostazione predefinita. Per effettuare questa operazione, utilizzare Microsoft CRM ScaleGroup processo editor. Per ulteriori informazioni, visitare il seguente sito Web MSDN:
    http://code.msdn.microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    Nota Questa azione non influisce direttamente sulle prestazioni dello script.
  • Per migliorare le prestazioni degli script di eliminazione in questo articolo e per migliorare il codice di Microsoft CRM DeletionService che esegue Elimina simile, aggiungere gli indici three OrganizationName_MSCRM database prima di eseguire lo script di eliminazione in questo articolo:
    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 se non si aggiungono questi indici, lo script di eliminazione potrebbe richiedere ore per l'esecuzione.
  • Interrompere il servizio Microsoft CRM Asynchronous Processing si esegue questo script.
  • OPTIONAL: Rigenera gli indici seguenti e aggiornare le statistiche:
    -- 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
  • OPTIONAL: Aggiornare statistiche con l'analisi completa su tutte le tabelle coinvolte con questa query il seguito comandi (preferibilmente in disattivato le ore di 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
  • OPTIONAL : cambia il modello di recupero del database MSCRM per semplice evitare di generare in eccesso i registri SQL server. Per SQL server 2005, l'accesso a Microsoft SQL Server Management Studio come amministratore, fare clic destro database _MSCRM <org_name>, fare clic ProprietÓ , fare clic su Opzioni e quindi fare clic su Modello di recupero . Contrassegnare semplice e scegliere OK . Dopo aver eseguito questo script, l'ora iniziale, il modello di ripristino del database _MSCRM <org_name> dovrÓ essere trasferito al FULL per il modello di recupero dati migliore.




Per determinare il numero di record da eliminare dallo script in questo articolo, eseguire lo script di conteggio riportato di seguito a fronte del database 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) 

Informazioni

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
954929L'entitÓ di AsyncOperation utilizza una parte significativa del database _MSCRM [organizzazione] e causa una riduzione delle prestazioni in Microsoft Dynamics CRM
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
957871I record di attivitÓ di espansione flusso di lavoro causa la tabella AsyncOperationBase in aumento delle dimensioni troppo grandi in Microsoft Dynamics CRM 4.0 il database MSCRM
Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
Per ulteriori informazioni sulla terminologia Microsoft Business Solutions CRM software aggiornamento rapido (hotfix) e aggiornamento pacchetto utilizzata, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
887283Aggiornamenti e hotfix software Microsoft Business Solutions CRM standard di denominazione dei pacchetti

ProprietÓ

Identificativo articolo: 968520 - Ultima modifica: martedý 1 settembre 2009 - Revisione: 7.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Dynamics CRM 4.0
Chiavi:á
kbmt kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver KB968520 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 968520
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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