本文爲轉載文章,原文地址:https://www.cnblogs.com/renshaoqun/p/4831656.html
在CRM2011長時間運行後,發現PrincipalObjectAccess表、AsyncOperationBase表、WorkflowLogBase表產生了上千萬條的數據,導致系統運行緩慢。
經過查找處理辦法,積累了下面的經驗:
微軟官方給出的清理辦法: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 |