Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

증상

Microsoft Dynamics CRM 4.0, Microsoft Dynamics CRM 2011, Microsoft dynamics crm 2013 또는 Microsoft Dynamics crm 2015을 실행 하는 경우 AsyncOperationBase 표는 매우 커질 수 있습니다. 테이블에 수백만 개의 레코드가 포함 되어 있으면 성능이 느려집니다. 또한 다음과 유사한 오류가 Microsoft Dynamics CRM을 실행 하는 서버의 응용 프로그램 이벤트 로그에 기록 됩니다.

이벤트 유형: ErrorEvent 원본: MSCRMDeletionServiceEvent Category: Noevent ID: 16387Date: 2009/01/26Time: 11:41:54 AMUser: N/AComputer: CRMSERVERDescription: 오류: 삭제 서비스에서 table = CleanupInactiveWorkflowAssembliesProcedure을 정리 하지 못했습니다. 자세한 내용은 도움말 및 지원 센터를 참조 하세요.

해결 방법

이 문제를 해결 하려면 OrgName>_MSCRM 데이터베이스<에 대해 다음 스크립트를 실행 하 여 AsyncOperationBase 테이블의 정리를 수행 하 고,이 경우 자리 표시자<OrgName> 는 조직의 실제 이름을 나타냅니다.오류 데이터를 정리 하기 전에 완료 된 시스템 작업은 일부 경우에 비즈니스 가치를 가지 며 장기간 저장 해야 한다는 점에 유의 해야 합니다. 따라서 먼저 조직의 관리 직원과 논의 해야 합니다. 영향을 받는 시스템 작업:

  • SQM 데이터 컬렉션입니다. 소프트웨어 품질 메트릭은 사용자 환경 개선 프로그램에 대 한 데이터를 수집 합니다.

  • 계약 상태 업데이트 SQL 작업입니다. 이 작업은 매일 자정에 한 번 실행 됩니다. 이 작업에서는 만료 된 계약의 상태가 만료로 설정 됩니다.

  • 조직 전체 텍스트 카탈로그 인덱스입니다. CRM에서 Microsoft 기술 자료 문서를 검색 하기 위해 데이터베이스에 전체 텍스트 인덱스를 채웁니다.

되풀이 되는 작업이 취소 된 경우 제거 됩니다. 참고

  • For Microsoft Dynamics CRM 이 기술 자료 문서에 있는 SQL 스크립트는 일회성 작업입니다. 이를 SQL 작업으로 추가 하 여 야간, 주간 또는 월간 기준으로 실행할 수 있습니다. CRM이 실행 되는 동안 비즈니스 요구 사항에 따라이 문서를 매주 적용 하거나 사용자 지정 대량 삭제 작업을 작성 하 여 솔루션을 적용 해야 합니다. ( BulkDeleteRequest set 속성의 BulkDeleteRequest 클래스에 대 한 CRM SDK 설명서와 삭제 순서에 대 한 자세한 내용은 여기를 참조 하세요.)

  • 워크플로와 해당 레코드의 AsyncOperation 레코드가 Workflowlogbase 개체에서 삭제 되었는지 확인 합니다.

  • 해당 하는 모든 대량 삭제 실패와 대량 삭제 작업 레코드가 삭제 되었는지 확인 합니다.

  • 형식의 상태 코드가 3이 고 형식의 상태 코드가 30 또는 32 인 경우 다음 비동기 작업 유형만 삭제 되는지 확인 합니다.

    • 워크플로 확장 작업 (1)

    • SQM 데이터 수집 (9)

    • PersistMatchCode만 일치 (12)

    • FullTextCatalogIndex (25)

    • UpdateContractStates (27)

    • 워크플로 (10)

IF EXISTS (SELECT name from sys.indexesWHERE name = N'CRM_AsyncOperation_CleanupCompleted')      DROP Index AsyncOperationBase.CRM_AsyncOperation_CleanupCompletedGOCREATE NONCLUSTERED INDEX CRM_AsyncOperation_CleanupCompletedON [dbo].[AsyncOperationBase] ([StatusCode],[StateCode],[OperationType])GOwhile(1=1)begindeclare @DeleteRowCount int = 10000declare @rowsAffected intdeclare @DeletedAsyncRowsTable table (AsyncOperationId uniqueidentifier not null primary key)insert into @DeletedAsyncRowsTable(AsyncOperationId)Select top (@DeleteRowCount) AsyncOperationId from AsyncOperationBasewhere   OperationType in (1, 9, 12, 25, 27, 10)   AND StateCode = 3   AND StatusCode in (30, 32) select @rowsAffected = @@rowcount  delete poa from PrincipalObjectAccess poa    join WorkflowLogBase wlb on    poa.ObjectId = wlb.WorkflowLogId   join @DeletedAsyncRowsTable dart on    wlb.AsyncOperationId = dart.AsyncOperationIddelete WorkflowLogBase from WorkflowLogBase W, @DeletedAsyncRowsTable dwhere   W.AsyncOperationId = d.AsyncOperationId              delete BulkDeleteFailureBase From BulkDeleteFailureBase B, @DeletedAsyncRowsTable dwhere   B.AsyncOperationId = d.AsyncOperationIddelete BulkDeleteOperationBase From BulkDeleteOperationBase O, @DeletedAsyncRowsTable dwhere   O.AsyncOperationId = d.AsyncOperationIddelete WorkflowWaitSubscriptionBase from WorkflowWaitSubscriptionBase WS, @DeletedAsyncRowsTable dwhere   WS.AsyncOperationId = d.AsyncOperationID  delete AsyncOperationBase From AsyncOperationBase A, @DeletedAsyncRowsTable dwhere   A.AsyncOperationId = d.AsyncOperationId/*If not calling from a SQL job, use the WAITFOR DELAY*/if(@DeleteRowCount > @rowsAffected)  returnelse  WAITFOR DELAY '00:00:02.000'end

삭제 스크립트의 성능 개선

  • 전체 Microsoft dynamics CRM 성능을 향상 시키려면 microsoft Dynamics crm 용 사용량이 적은 시간에 Microsoft Dynamics CRM 삭제 서비스를 실행 하도록 예약 합니다. 기본적으로 Microsoft Dynamics CRM이 설치 된 시점에 서비스가 실행 됩니다. 그러나 기본 시간 대신 10:00 PM에서 실행 되도록 서비스를 설정할 수 있습니다. 이렇게 하려면 Microsoft Dynamics CRM ScaleGroup 작업 편집기를 사용 합니다. 자세한 내용은 다음 CodePlex 웹 사이트를 방문 하세요.

    http://crmjobeditor.codeplex.com/참고

    1. 이 작업은 스크립트의 성능에 직접적인 영향을 주지 않습니다.

    2. Microsoft Dynamics CRM 4.0의 작업 편집기에는. m a 평가 기간이 지정 되어 있으며 더 이상 사용할 수 없습니다.

  • 이 문서의 삭제 스크립트 성능을 개선 하 고 유사한 삭제를 실행 하는 Microsoft Dynamics CRM 삭제 서비스 코드를 개선 하려면이 문서의 삭제 스크립트를 실행 하기 전에 다음 세 개의 인덱스를 OrganizationName_MSCRM 데이터베이스에 추가 합니다.

    CREATE NONCLUSTERED INDEX CRM_WorkflowLog_AsyncOperationID ON [dbo].[WorkflowLogBase] ([AsyncOperationID])GO CREATE NONCLUSTERED INDEX CRM_DuplicateRecord_AsyncOperationID ON [dbo].[DuplicateRecordBase] ([AsyncOperationID])GOCREATE NONCLUSTERED INDEX CRM_BulkDeleteOperation_AsyncOperationID ON [dbo].[BulkDeleteOperationBase](AsyncOperationID)GO

    참고 이러한 인덱스를 추가 하지 않으면 삭제 스크립트를 실행 하는 데 몇 시간이 걸릴 수 있습니다.

  • 이 스크립트를 실행 하는 동안 Microsoft Dynamics CRM 비동기 처리 서비스를 중지 합니다.

  • ) 다음 인덱스를 다시 작성 하 고 통계를 업데이트 합니다.

    -- 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
  • ) 다음 명령을 사용 하 여이 쿼리와 관련 된 모든 테이블에 대해 전체 검사를 사용 하 여 통계를 업데이트 합니다 (가능한 한 최대 사용 시간).

    UPDATE STATISTICS [dbo].[AsyncOperationBase] WITH FULLSCANUPDATE STATISTICS [dbo].[DuplicateRecordBase] WITH FULLSCANUPDATE STATISTICS [dbo].[BulkDeleteOperationBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowCompletedScopeBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowLogBase] WITH FULLSCANUPDATE STATISTICS [dbo].[WorkflowWaitSubscriptionBase] WITH FULLSCAN
  • ) Microsoft SQL Server 로그가 과도 하 게 생성 되지 않도록 MSCRM 데이터베이스의 복구 모델을 단순하게 변경 합니다. SQL Server 2005의 경우 Microsoft SQL Server Management Studio에 관리자로 로그온 하 고 <org_name>_MSCRM 데이터베이스를 마우스 오른쪽 단추로 클릭 하 고 속성을 클릭 한 다음 옵션을 클릭 하 고 복구 모델을 클릭 합니다. 간단하 게 표시 한 다음 확인을 클릭 합니다. 이 스크립트를 처음 실행 한 후에는 최상의 데이터 복구 모델을 위해 <org_name>_MSCRM 데이터베이스 복구 모델을 FULL로 다시 전환 해야 합니다.

  • 스크립트의 성능을 높이려면 1만의 @DeleteRowCount 값을 줄일 수 있습니다.

이 문서의 스크립트에서 삭제할 레코드 수를 결정 하려면 OrganizationName_MSCRM 데이터베이스에 대해 다음 count 스크립트를 실행 합니다.

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

스크립트 오류정리 스크립트를 실행할 때 다음과 같은 오류 메시지가 나타날 수 있습니다.

DELETE 문이 참조 제약 조건 "asyncoperation_workflowwaitsubscription"과 충돌 했습니다. 데이터베이스 "Contoso_MSCRM", 테이블 "dbo에서 충돌이 발생 했습니다. WorkflowWaitSubscriptionBase ", ' AsyncOperationId ' 열입니다. 문이 종료 되었습니다.

이 오류 메시지가 표시 되는 경우 정리 스크립트를 중지 하 고 다음 단계에 따라 완료 되거나 취소 된 워크플로에 존재 하는 남은 WorkflowWaitSubscription 레코드를 제거 합니다. 이러한 레코드는 워크플로가 완료 되거나 취소 될 때 삭제 되기 때문에 더 이상 존재 하지 않아야 합니다. 이 쿼리에서 반환 되는 레코드는 표시 되지 않아야 합니다. 이 쿼리에 표시 되는 WorkflowWaitSubscriptionBase 테이블에 남아 있는 모든 항목은 고아 레코드입니다. Microsoft CRM 비동기 프로세스가 취소 되거나 완료 된 상태 이므로 UI를 통해 이러한 레코드를 삭제할 수 없습니다. 다음 스크립트는 완료 및 취소 된 워크플로 레코드에 대해 존재 하는 고아 WorkflowWaitSubscriptionBase 레코드 수를 확인 합니다.

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

다음 스크립트는 완료 및 취소 된 워크플로 레코드에 대 한 ' 남겨진 ' WorkflowWaitSubscriptionBase 레코드의 WorkflowWaitSubscriptionBase 레코드를 삭제 합니다.

delete from workflowwaitsubscriptionbase where asyncoperationid in(Select asyncoperationidfrom AsyncOperationBasewhere OperationType in (1, 9, 12, 25, 27, 10) AND StateCode = 3 AND StatusCode IN (30,32))

이 delete 문을 실행 하면 AsyncoperationBase 및 워크플로 정리 스크립트가 성공적으로 완료 됩니다.

추가 정보

자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.

954929 AsyncOperation 엔터티는 [Org] _MSCRM 데이터베이스의 상당 부분을 소모 하 여 Microsoft Dynamics CRM에서 성능이 저하 됩니다.

957871 워크플로 확장 작업 레코드가 Microsoft Dynamics CRM 4.0에서 MSCRM 데이터베이스의 AsyncOperationBase 테이블을 너무 크게 증가 시킵니다. 소프트웨어 업데이트 용어에 대 한 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.

824684 Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명Microsoft 비즈니스 솔루션 CRM 소프트웨어 핫픽스 및 업데이트 패키지 용어에 대 한 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.

887283 Microsoft 비즈니스 솔루션 CRM 소프트웨어 핫픽스 및 업데이트 패키지 명명 표준

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×