Производительность является медленным, если в таблице AsyncOperationBase становится слишком большим, в Microsoft Dynamics CRM 4.0

Переводы статьи Переводы статьи
Код статьи: 968520 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При запуске Microsoft Dynamics CRM 4.0, в таблице AsyncOperationBase растет быть очень большим. Если таблица содержит миллионы записей, производительность является медленным.

Кроме того на сервере Microsoft Dynamics CRM в журнале событий приложений регистрируются ошибки, которые будут выглядеть следующим образом:
Тип события: ошибка
Источник события: MSCRMDeletionService
Категория события: нет
КОД события: 16387
Дата: 2009/01/26
Время: 11:41:54 по
Пользователь: н/Д
Компьютер: CRMSERVER
Описание: Ошибка: не удалось очистить таблицы удаления службы = CleanupInactiveWorkflowAssembliesProcedure для получения дополнительных сведений см центра справки и поддержки в http://go.microsoft.com/fwlink/events.asp.

Решение

Чтобы устранить эту проблему, выполнения очистки таблицы AsyncOperationBase, выполнив следующий сценарий для<orgname></orgname>_MSCRM базы данных, которой <orgname>является местозаполнителем для фактического имени организации.</orgname>

Предупреждение:До очистки данных Пожалуйста Обратите внимание, что выполнено системы заданий имеют ценность в некоторых случаях и должны храниться так долго, следует сначала обсудить с вашей orgnization Администрирование персонала.

Системные задания относится:
  • Сбора данных SQM. -Программное обеспечение качества метрик, который собирает данные клиента, возможности программы.
  • Задание состояния контракт обновление SQL. Это задание выполняется один раз в день в полночь. Это задание устанавливает состояние истек контракты с истекшим сроком действия.
  • Организации полный текстовый каталог индекса - заполнение полнотекстового индекса в базе данных для поиска статей КБ в CRM.

Если были отменены повторяющегося задания они будут удалены.

Примечания
  • Сценарий SQL в этой статье БАЗЫ знаний — это однократное объем работ.Можно добавлять как на повторяющейся основе на основе каждую ночь, еженедельное или ежемесячное выполнение задания SQL.Во время выполнения в CRM,необходимо применить Данная статья базы Знаний на еженедельной основе в зависимости от поставленных задач, либо применить решения, writting пользовательских заданий BULK DELETE (обратитесь к документации CRM SDK BulkDeleteRequest.QuerySet свойств, BulkDeleteRequest классов и порядок этого удаления).
  • Убедитесь, что записи AsyncOperation для рабочих процессов и соответствующие записи будут удалены изWorkflowLogBaseОбъект.
  • Убедитесь, что удаляются соответствующие записи bulkdeletefailure.
  • Убедитесь, что только следующих типов: асинхронные операции будут удалены, если код состояния из типов-3 и код типа 30 или 32.
    • Задачи рабочего процесса расширения (1)
    • Сбора данных SQM (9)
    • PersistMatchCode (12)
    • FullTextCatalogIndex (25)
    • UpdateContractStates (27)
    • Рабочий процесс (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 WorkflowWaitSubscriptionBase from WorkflowWaitSubscriptionBase WS, @DeletedAsyncRowsTable d
 where WS.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


Повышение производительности, удаление сценария

  • Чтобы повысить производительность Microsoft CRM, расписание удаления служба Microsoft CRM для работы в часы наименьшей нагрузки для Microsoft CRM. По умолчанию служба работает во время установки Microsoft CRM. Тем не менее можно запустить службу для запуска в 22: 00 вместо того, в то время по умолчанию. Чтобы сделать это, используйте редактор ScaleGroup работы Microsoft CRM. Дополнительные сведения см. на следующей странице веб-узла MSDN::
    http://Code.MSDN.Microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    Примечание.This action does not directly affect the performance of the script.
  • To improve the performance of the deletion scripts in this article and to improve the Microsoft CRM DeletionService code that runs similar deletes, add the followingthreeindexes to the OrganizationName_MSCRM database before you run the deletion script in this 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
    
    Примечание.If you do not add these indexes, the deletion script may take hours to run.
  • Stop the Microsoft CRM Asynchronous Processing Service while you run this script.
  • OPTIONAL:Rebuild the following indexes and update statistics:
    -- 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:Update Statistics with Full Scan on all the tables involved with this query using the below commands (preferably at off peak hours):
    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: Change the MSCRM database's recovery model to Simple to avoid excess generation of SQL server logs. For SQL server 2005, login to the Microsoft SQL Server Management Studio as Administrator, right click your <org_name>_MSCRM database, click </org_name>Свойствазатем –Параметрыи выберите командуRecovery Model. MarkSimpleи выберите командуOk..After running this script the initial time, the <org_name>_MSCRM database recovery model should be switched back to FULL for the best data recoverability model.</org_name>




To determine the number of records to be deleted by the script in this article, run the following count script against the OrganizationName_MSCRM database:

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

Script Error:

When running the cleanup script, you may run into an error similar to the following:

The DELETE statement conflicted with the REFERENCE constraint "asyncoperation_workflowwaitsubscription". The conflict occurred in database "Contoso_MSCRM", table "dbo.WorkflowWaitSubscriptionBase", column 'AsyncOperationId'.The statement has been terminated.


If you run into this error message, stop the cleanup script and follow these steps to remove the remaining WorkflowWaitSubscription records that exist for completed or cancelled workflows. These records should no longer exist as they should have been deleted already when the workflows were completed or cancelled.We should not see any records returned from this query.  Anything left in the WorkflowWaitSubscriptionBase table that shows up in this query is an orphaned record.  You will not be able to delete these records through the UI because the Microsoft CRM Async process is in a cancelled or completed state.
The following script will verify how many orphaned WorkflowWaitSubscriptionBase records exist for completed and cancelled workflow records:

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))

The following script will delete WorkflowWaitSubscriptionBase records for stranded WorkflowWaitSubscriptionBase records for completed and cancelled workflow records:

delete from workflowwaitsubscriptionbase 
where asyncoperationid in(Select asyncoperationidfrom AsyncOperationBase
where OperationType in (1, 9, 12, 25, 27, 10) 
AND StateCode = 3 AND StatusCode IN (30,32))
After this delete statement is executed, the AsyncoperationBase and Workflow cleanup script will complete successfully.



Дополнительная информация

Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
954929The AsyncOperation entity consumes a significant part of the [Org]_MSCRM database and causes poor performance in Microsoft Dynamics CRM
Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
957871Записи расширения задача рабочего процесса вызывает AsyncOperationBase таблицы в базе данных MSCRM расти слишком велико, в Microsoft Dynamics CRM 4.0
Дополнительные сведения о терминах, используемых при описании обновлений программного обеспечения, см. в следующей статье базы знаний Майкрософт::
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт
Для получения дополнительных сведений о Microsoft Business Solutions CRM программное обеспечение исправления и обновления пакета терминологии, щелкните следующий номер статьи базы знаний Майкрософт:
887283Стандарты именования исправлений и обновлений для Microsoft Business Solutions CRM (эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 968520 - Последний отзыв: 12 сентября 2011 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Dynamics CRM 4.0
Ключевые слова: 
kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver kbmt KB968520 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:968520

Отправить отзыв

 

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