Skip to content

Instantly share code, notes, and snippets.

@timgaunt
Last active March 10, 2021 09:45
Show Gist options
  • Save timgaunt/44261ca46e08cc5a3893 to your computer and use it in GitHub Desktop.
Save timgaunt/44261ca46e08cc5a3893 to your computer and use it in GitHub Desktop.
Delete umbraco content via SQL
/* Delete Old Document Versions */
Declare @keepOldVersionsCount int, @keepNewerThanDate datetime
Set @keepOldVersionsCount = 0 /* 0 Keeps published and newest only. */
Set @keepNewerThanDate = getdate() /* getDate() or '2013-01-01' */
IF OBJECT_ID('tempdb..#versions') IS NOT NULL DROP TABLE #versions
SELECT VersionID, nodeId, updateDate, newest, published INTO #versions
FROM cmsDocument
WHERE versionID NOT IN
(SELECT D.versionId
FROM cmsDocument D
WHERE D.versionId IN
(SELECT versionId
FROM
(SELECT CV.versionId, published, newest, CV.versionDate, RANK() OVER(ORDER BY CV.versionDate DESC) RowNum
FROM cmsContentVersion CV JOIN cmsDocument DD ON CV.versionId = DD.versionId
WHERE DD.nodeId = D.nodeId) AS tmp
WHERE tmp.RowNum <= (@keepOldVersionsCount + 2) OR tmp.published = 1 OR tmp.newest = 1 or tmp.versionDate >= @keepNewerThanDate)
)
Select * from #versions
--DELETE FROM cmsPreviewXml WHERE versionId IN (select #versions.VersionId from #versions)
--DELETE FROM cmsContentVersion WHERE VersionId IN (select #versions.VersionId from #versions)
--DELETE FROM cmsPropertyData WHERE VersionId IN (select #versions.VersionId from #versions)
--DELETE FROM cmsDocument WHERE VersionId IN (select #versions.VersionId from #versions)
/* Delete Old Document Versions */
Declare @keepOldVersionsCount int, @keepNewerThanDate datetime
-- Set @keepOldVersionsCount = 0 /* 0 Keeps published and newest only. */
Set @keepNewerThanDate = getdate() /* getDate() or '2013-01-01' */
IF OBJECT_ID('tempdb..#toDelete') IS NOT NULL DROP TABLE #versions
SELECT cv.id
INTO #toDelete
FROM umbracoDocumentVersion dv
INNER JOIN umbracoContentVersion cv ON dv.id = cv.id
WHERE cv.[current] != 1 AND dv.published != 1 AND cv.VersionDate < @keepNewerThanDate
--DELETE FROM umbracoPropertyData WHERE versionId IN (select id from #toDelete)
--DELETE FROM umbracoContentVersionCultureVariation WHERE versionId IN (select id from #toDelete)
--DELETE FROM umbracoDocumentVersion WHERE id IN (select id from #toDelete)
--DELETE FROM umbracoContentVersion WHERE id IN (select id from #toDelete)
DROP TABLE #toDelete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment