DynamicCRM清理PrincipalObjectAccess表,清理POA,清理WorkFlowLog(轉)

 

本文爲轉載文章,原文地址:https://www.cnblogs.com/renshaoqun/p/4831656.html

 

在CRM2011長時間運行後,發現PrincipalObjectAccess表、AsyncOperationBase表、WorkflowLogBase表產生了上千萬條的數據,導致系統運行緩慢。

經過查找處理辦法,積累了下面的經驗:

詳細請見博客http://blogs.msdn.com/b/ritesh_ranjan/archive/2015/02/09/another-experience-with-cleaning-up-the-principalobjectaccess-table-dialogs.aspx

微軟官方給出的清理辦法:https://support.microsoft.com/en-gb/kb/968520

複製代碼
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

while(1=1)
begin
 declare @DeleteRowCount int = 10000
 declare @rowsAffected int
 declare @DeletedAsyncRowsTable table (AsyncOperationId uniqueidentifier not null primary key)
 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 @rowsAffected = @@rowcount 
 delete poa from PrincipalObjectAccess poa 
   join WorkflowLogBase wlb on
    poa.ObjectId = wlb.WorkflowLogId
   join @DeletedAsyncRowsTable dart on
    wlb.AsyncOperationId = dart.AsyncOperationId
 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
 /*If not calling from a SQL job, use the WAITFOR DELAY*/
 if(@DeleteRowCount > @rowsAffected)
  return
 else
  WAITFOR DELAY '00:00:02.000'
end
複製代碼

OperationType參照表:

系統事件 1
批量電子郵件 2
導入文件分析 3
轉換分析數據 4
導入 5
活動傳播 6
重複檢測規則發佈 7
批量重複檢測 8
SQM 數據收集 9
工作流 10
快速市場活動 11
匹配代碼更新 12
批量刪除 13
刪除服務 14
索引管理 15
收集組織統計信息 16
導入子進程 17
計算組織的存儲規模 18
收集組織的數據庫統計信息 19
收集組織規模統計信息 20
數據庫優化 21
計算組織的最大存儲規模 22
批量刪除子進程 23
更新統計信息的間隔 24
組織全文目錄索引 25
數據庫日誌備份 26
更新合同狀態 27
DBCC SHRINKDATABASE 維護作業 28
DBCC SHRINKFILE 維護作業 29
對所有索引維護作業重新編制索引 30
存儲限制通知 31
清理停用的工作流序集 32
定期系列擴展 33
導入示例數據 34
目標彙總 35
審覈分區創建 36
檢查語言包更新 37
設置語言包 38
更新組織數據庫 39
更新解決方案 40
重新生成實體行計數快照數據 41
重新生成閱讀共享快照數據 42
公佈到 Yammer 43
 
好文要頂 已關注 收藏該文  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章