Dynamics CRM: Failed to delete audit data from one or more of the specified partitions
Issue
Exception information:
Exception type: CrmException
Exception message: Failed to delete audit data from one or more of the specified partitions.
The error in the event log is:
Failed to drop Partition on AuditBase. Exception message ALTER TABLE SWITCH statement failed. There is no identical index in source table 'Orgname_MSCRM.dbo.AuditBase' for the index 'ndx_ObjectId' in target table 'Orgname_MSCRM.dbo.NonPartitionAuditTable' .
Cause
You will see this error if there is a mismatch in the structure of 'ndx_ObjectId' index from what is shipped OOB. You will have to revert it back to the OOB structure for delete partition to succeed.
The stored procedure creates a temporary non-partitioned table (to switch the oldest audit partition) with all OOB index schemas hard-coded. If there are any additional indexes added/ columns on existing indexes modified, the partition switching step will fail.
Solution
Disclaimer: Take a backup of your CRM databases before making any changes
Script out the ndx_ObjectId index from the environment and compare it to the index definition shipped OOB
CREATE NONCLUSTERED INDEX [ndx_ObjectId] ON [dbo].[AuditBase]
(
[ObjectId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Drop the Index and recreate it