ประสิทธิภาพการทำงานได้ช้าลงถ้าตาราง AsyncOperationBase มีขนาดใหญ่เกินไปใน Microsoft Dynamics CRM 4.0

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 968520 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อคุณเรียกใช้ Microsoft Dynamics CRM 4.0 ตาราง AsyncOperationBase grows มีขนาดใหญ่มาก เมื่อตารางประกอบด้วยล้านเร็กคอร์ด ประสิทธิภาพการทำงานช้าลงได้

นอกจากนี้ ข้อผิดพลาดที่มีลักษณะต่อไปนี้จะเข้าสู่เซิร์ฟเวอร์ Microsoft Dynamics CRM ในแฟ้มบันทึกเหตุการณ์ของโปรแกรมประยุกต์:
ชนิดเหตุการณ์: ข้อผิดพลาด
แหล่งที่มาของเหตุการณ์: MSCRMDeletionService
ประเภทเหตุการณ์: ไม่มี
รหัสเหตุการณ์: 16387
วัน: 2009/01/26
เวลา: 11:41:54 AM
ผู้ใช้: n/a
คอมพิวเตอร์: CRMSERVER
ข้อผิดพลาดคำอธิบาย:: การบริการลบที่ล้มเหลวในการล้างข้อมูลตาราง = CleanupInactiveWorkflowAssembliesProcedure สำหรับข้อมูลเพิ่มเติม ดูศูนย์บริการและวิธีใช้ที่ http://go.microsoft.com/fwlink/events.asp

การแก้ไข

เมื่อต้องการแก้ไขปัญหานี้ ทำการล้างข้อมูลของตาราง AsyncOperationBase โดยการเรียกใช้สคริปต์ต่อไปนี้จากนั้น<orgname></orgname>ฐานข้อมูล _MSCRM ซึ่ง<orgname>เป็นตัวยึดสำหรับชื่อจริงขององค์กรของคุณ</orgname>

คำเตือน:ก่อนที่จะทำการล้างข้อมูลโปรดหมายเหตุว่าเสร็จสมบูรณ์แล้วระบบ งานมีมูลค่าทางธุรกิจในบางกรณี และจำเป็นต้องถูกเก็บไว้สำหรับรอบระยะเวลานาน ดังกล่าวโปรดถึงกับพนักงานดูแล orgnization ของคุณก่อน

งานของระบบ effected:
  • คอลเลกชันข้อมูล sqm -Metrics คุณภาพซอฟต์แวร์ซึ่งรวบรวมข้อมูลสำหรับลูกค้าที่พบโปรแกรม
  • อเมริกาสัญญาการปรับปรุงงาน SQL งานนี้รันหนึ่งครั้งต่อวันเวลาเที่ยงคืน งานนี้ตั้งค่าสัญญาที่หมดอายุไปยังสถานะ Expired
  • องค์กรแบบเต็มรูปแบบข้อความแค็ตตาล็อกดัชนี - populates ดัชนีข้อความแบบเต็มใน db สำหรับการค้นหาบทความ kb ใน CRM

ถ้าได้ถูกยกเลิกงานที่เกิดซ้ำ ดังกล่าวจะถูกเอาออก

หมายเหตุ
  • สคริปต์ SQL ในบทความนี้กิโลไบต์จะไม่ต้องเปลืองขาจรแรงเท่านั้นคุณสามารถเพิ่มนี้เป็นงาน SQL จะเรียกใช้บนพื้นฐานในทั้ง nightly รายสัปดาห์ หรือรายเดือนที่เกิดซ้ำในขณะที่เรียกใช้ CRM ของคุณ,คุณจำเป็นต้องใช้บทความนี้กิโลไบต์ในรายสัปดาห์ทั้งนี้ขึ้นอยู่กับความต้องการทางธุรกิจของคุณ หรือใช้การแก้ไขปัญหา โดย writting แบบกำหนดเอง DELETE เป็นกลุ่มงาน (โปรดดูเอกสารประกอบของเรา CRM SDK ใน คุณสมบัติ BulkDeleteRequest.QuerySet ระดับ ชั้น BulkDeleteRequest และใบสั่งการลบ)
  • ตรวจสอบให้แน่ใจว่า ระเบียน AsyncOperation สำหรับกระแสงานและระเบียนที่ตรงกันจะถูกลบจากนั้นWorkflowLogBaseวัตถุ
  • ตรวจสอบให้แน่ใจว่า มีลบที่สอดคล้องกัน bulkdeletefailure ระเบียนทั้งหมด
  • ตรวจสอบให้แน่ใจว่า เฉพาะการ Async ดำเนินงานชนิดต่อไปนี้จะถูกลบออกถ้ารหัสสถานะของชนิด 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 โดยรวม กำหนดเวลาการบริการการลบ CRM Microsoft จะเรียกใช้ในระหว่างการชั่วโมง off-peak Microsoft CRM โดยค่าเริ่มต้น บริการการทำงานในขณะที่ติดตั้ง Microsoft CRM อย่างไรก็ตาม คุณสามารถเรียกใช้การบริการที่จะรันเมื่อ 10:00 PM แทนเวลาเริ่มต้น เมื่อต้องการทำเช่นนี้ ใช้'ตัวแก้ไขที่ Microsoft CRM ScaleGroup งาน' สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้ของ MSDN::
    http://code.msdn.microsoft.com/ScaleGroupJobEditor/Release/ProjectReleases.aspx?ReleaseId=676
    หมายเหตุ:การกระทำนี้ไม่มีผลโดยตรงต่อประสิทธิภาพการทำงานของสคริปต์
  • การปรับปรุงประสิทธิภาพของสคริปต์การลบในบทความนี้เพื่อปรับปรุง DeletionService CRM Microsoft ที่รหัสที่ทำงานที่คล้ายกันลบ เพิ่มต่อไปนี้3ดัชนีไปยังฐานข้อมูล OrganizationName_MSCRM ก่อนที่จะเรียกใช้สคริปต์การลบในบทความนี้:
    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
    
    หมายเหตุ:ถ้าคุณไม่ต้องเพิ่มดัชนีเหล่านี้ สคริปต์ลบอาจใช้เวลาชั่วโมงการทำงาน
  • หยุดการ CRM แบบอะซิงโครนัสผลบริการของ Microsoft ในขณะที่คุณเรียกใช้สคริปต์นี้
  • ไม่จำเป็น:สร้างดัชนีการต่อไปนี้ และการปรับปรุงสถิติ:
    -- 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
  • ไม่จำเป็น:ปรับปรุงสถิติเกี่ยวกับการสแกนแบบเต็มรูปแบบในตารางทั้งหมดที่เกี่ยวข้องกับแบบสอบถามนี้โดยใช้อยู่ใต้คำสั่ง (preferably ที่ปิดชั่วโมงสูงสุด):
    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
  • ไม่ใส่ก็ได้: เปลี่ยนรูปแบบจำลองการกู้คืนข้อมูลของฐานข้อมูล MSCRM อย่างง่ายเพื่อหลีกเลี่ยงการสร้างส่วนเกินของไฟล์บันทึกของเซิร์ฟเวอร์ SQL สำหรับเซิร์ฟเวอร์ SQL 2005 ล็อกอินไปยัง Microsoft SQL Server Management Studio เป็นผู้ดูแลระบบ คลิ<org_name>ฐานข้อมูล _MSCRM คลิก</org_name>คุณสมบัติคลิกตัวเลือกแล้ว คลิกแบบจำลองการกู้คืน. ทำเครื่องหมายแบบง่ายแล้ว คลิกตกลง.หลังจากการรันสคริปต์นี้เวลาเริ่มต้น <org_name>ควรจะ switched _MSCRM โมเดลการกู้คืนฐานข้อมูลไปทั้งหมดสำหรับการดีที่สุดข้อมูล recoverability รุ่น</org_name>




เมื่อต้องการกำหนดหมายเลขของเร็กคอร์ดที่จะถูกลบทิ้ง โดยสคริปต์ในบทความนี้ รันสคริปต์การนับต่อไปนี้กับฐานข้อมูล 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) 

ข้อผิดพลาดของสคริปต์:

เมื่อต้องการเรียกใช้สคริปต์การล้างข้อมูล คุณอาจทำงานเป็นข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้:

คำสั่ง DELETE conflicted มีข้อจำกัดการอ้างอิง "asyncoperation_workflowwaitsubscription" ความขัดแย้งเกิดขึ้นในฐานข้อมูล "Contoso_MSCRM" ตาราง "dbo.WorkflowWaitSubscriptionBase" คอลัมน์ 'AsyncOperationId' จะรายงานได้ถูกลง


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.



ข้อมูลเพิ่มเติม

สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
954929The AsyncOperation entity consumes a significant part of the [Org]_MSCRM database and causes poor performance in Microsoft Dynamics CRM
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
957871บันทึกกระแสงานที่ขยายทำให้เกิด AsyncOperationBase ตารางในฐานข้อมูล MSCRM เพื่อขยายขนาดใหญ่เกินไปใน Microsoft Dynamics CRM 4.0
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำศัพท์ของการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความใน Microsoft Knowledge Base::
824684คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์ของ Microsoft
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ CRM โซลูชัน Business Microsoft ซอฟต์แวร์โปรแกรมแก้ไขด่วนและการปรับปรุงแพคเกจคำ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
887283โปรแกรมแก้ไขด่วนของซอฟต์แวร์ Microsoft CRM วิธีแก้ไขปัญหาของธุรกิจและการปรับปรุงแพ็คเกจมาตรฐานที่ตั้งชื่อ

คุณสมบัติ

หมายเลขบทความ (Article ID): 968520 - รีวิวครั้งสุดท้าย: 12 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Dynamics CRM 4.0
Keywords: 
kbfix kbautohotfix kbexpertiseinter kbsurveynew kbmbsmigrate kbqfe kbhotfixserver kbmt KB968520 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้: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