Leistung ist langsam, wenn die Tabelle AsyncOperationBase groß in Microsoft Dynamics CRM 4.0 wird

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 968520 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie Microsoft Dynamics CRM 4.0 ausführen, wächst die AsyncOperationBase-Tabelle sehr groß. Wenn die Tabelle mit Millionen von Datensätzen enthält, ist Leistung langsam.

Darüber hinaus sind Fehler, die etwa wie folgt auf dem Microsoft CRM-Server in das Ereignisprotokoll der Anwendung protokolliert:
Ereignistyp: Fehler
Ereignisquelle: MSCRMDeletionService
Ereigniskategorie: Keine
Ereignis-ID: 16387
Datum: 2009/01/26
Zeit: 11:41:54 AM
Benutzer: NV
Computer: CRMSERVER
Beschreibung: Fehler: Fehler löschen beim Bereinigen Tabelle = CleanupInactiveWorkflowAssembliesProcedure Weitere Informationen finden Sie im Hilfe- und Supportcenter http://go.Microsoft.com/fwlink/events.ASP.

Lösung

Führen Sie die Bereinigung der AsyncOperationBase-Tabelle um dieses Problem zu beheben, indem Sie das folgende Skript gegen die <OrgName> MSCRM-Datenbank, in dem <orgname> ein Platzhalter für den tatsächlichen Namen Ihrer Organisation ist.

Warnung: , bevor die Daten Bitte Hinweis aufräumen, die System abgeschlossen Aufträge Geschäftswert in einigen Fällen und müssen für einen langen Zeitraum gespeichert werden, also bitte zuerst mit Verwaltung Mitarbeiter Ihrer Organisation besprechen.

System-Projekte betroffen:
  • SQM-Datensammlung. -Software Quality Metrics, die Daten für den Debitor sammelt auftreten Programm.
  • SQL-Auftrag Update Contract States. Diese Auftrag werden einmal pro Tag um Mitternacht ausgeführt. Diese Auftrag legt die abgelaufene Verträge auf einen Zustand der abgelaufen.
  • Organisation Full Text Katalogfeldindex - füllt Volltextindex in Db kb-Artikeln in CRM durchsucht.

Wenn wiederkehrende Aufträge abgebrochen haben, werden Sie entfernt.

Notizen
  • Das SQL-Skript in diesem KB-Artikel ist nur einmal Aufwand. Sie können dies als eine SQL-Auftrag auf Grundlage entweder über Nacht, wöchentlich oder monatlich wiederholt ausführen hinzufügen. wie Ihre CRM-ausgeführt , , Sie müssen diesem KB-Artikel auf wöchentlich abhängig von Ihrem Unternehmen anwenden muss oder anwenden die Lösung von Writting benutzerdefinierte BULK DELETE Aufträge (Bitte finden Sie in unserem CRM SDK-Dokumentation auf der BulkDeleteRequest.QuerySet-Eigenschaft, BulkDeleteRequest-Klasse und Reihenfolge der löschen).
  • Stellen Sie sicher, dass die AsyncOperation-Datensätze für Workflows und die entsprechenden Datensätze aus dem WorkflowLogBase -Objekt gelöscht werden.
  • Stellen Sie sicher, dass alle entsprechenden Bulkdeletefailure Datensätze gelöscht sind.
  • Stellen Sie sicher, dass nur die folgenden asynchronen Operation Typen gelöscht werden, wenn das Bundesland der Typen 3 ist und der Statuscode der Typen 30 oder 32 ist:
    • Workflow Erweiterung Vorgang (1)
    • SQM-Datensammlung (9)
    • PersistMatchCode (12)
    • FullTextCatalogIndex (25)
    • UpdateContractStates (27)
    • Workflow (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


Verbesserung der Leistung des Skripts löschen

  • Um Microsoft CRM-Gesamtleistung zu verbessern, Planen Sie die Microsoft CRM-Löschdienst während der Spitzenzeiten für Microsoft CRM ausgeführt. Standardmäßig wird der Dienst zum Zeitpunkt von Microsoft CRM Installation ausgeführt. Allerdings können Sie das Ausführen um 10: 00 Uhr statt die Standardeinstellung zum Zeitpunkt des Dienstes ausführen. Verwenden Sie den Auftrag von Microsoft CRM ScaleGroup-Editor, um dies durchzuführen. Weitere Informationen der folgenden MSDN-Website:
    http://code.msdn.microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    Hinweis: Diese Aktion wirkt sich die Leistung des Skripts nicht direkt.
  • Zur Verbesserung der Leistung der löschen-Skripts in diesem Artikel den Microsoft CRM DeletionService Code zu verbessern, die ähnliche Löschvorgänge ausgeführt wird hinzufügen und, die folgenden three Indizes Organisationsname_mscrm-Datenbank, bevor Sie das Skript löschen in diesem Artikel ausführen:
    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
    
    Hinweis Wenn Sie nicht diese Indizes hinzufügen, löschen-Skript kann zum Ausführen Stunden dauern.
  • Beenden Sie den Microsoft CRM Asynchronous Processing Dienst während Sie dieses Skript ausführen.
  • OPTIONAL: Wiederherstellen die folgenden Indizes und Statistiken aktualisieren:
    -- 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: Aktualisieren der Statistiken mit vollständige Überprüfung auf alle mit dieser Abfrage beteiligten Tabellen die unten Befehle (vorzugsweise an Spitzenzeiten deaktivieren):
    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 : ändern, die MSCRM-Datenbank-Wiederherstellungsmodell Simple um überflüssige Generierung von SQL Server-Protokollen zu vermeiden. Für SQL Server 2005, Benutzername, der Microsoft SQL Server Management Studio als Administrator an, klicken Sie nach rechts Ihre <org_name> MSCRM-Datenbank, Eigenschaften , klicken Sie auf Optionen , und klicken Sie dann auf Wiederherstellungsmodell . Markieren Sie einfach und klicken Sie auf OK . nach dem Ausführen dieses Skripts der Anfangsdauer sollte das <org_name> MSCRM-Datenbank-Wiederherstellungsmodell an FULL für das beste Daten Wiederherstellbarkeit Modell umgestellt werden.




Um die Anzahl der Datensätze durch das Skript in diesem Artikel gelöscht werden, zu bestimmen, führen Sie das folgenden Count Skript gegen die Datenbank Organisationsname_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) 

Weitere Informationen

Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
954929Die Entität AsyncOperation nutzt einen bedeutenden Teil der Datenbank _MSCRM [Organisation] und bewirkt, dass eine schlechte Leistung in Microsoft Dynamics CRM
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
957871Die Erweiterung Workflowaufgabe Datensätze führen die AsyncOperationBase-Tabelle in der MSCRM-Datenbank in Microsoft Dynamics CRM 4.0 zu groß
Weitere Informationen zur Terminologie für Softwareupdates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684Erläuterung von Standardbegriffen bei Microsoft Softwareupdates
Weitere Informationen zur Microsoft Business Solutions CRM Software Update und Hotfix-Paket Terminologie finden Sie im folgenden Artikel der Microsoft Knowledge Base:
887283Microsoft Business Solutions CRM-Softwarehotfix und Update Packen Namensstandards

Eigenschaften

Artikel-ID: 968520 - Geändert am: Dienstag, 1. September 2009 - Version: 7.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Dynamics CRM 4.0
Keywords: 
kbmt kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver KB968520 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 968520
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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