Is anyone aware of any C# or SQL scripts to perform a database cleanup? Looking to compact the data set of things like old log entries, unused data types, unused doc types, old/unused content versions, etc.omegle
This has always worked great for Umbraco 7.
Unfortunately I have not tested this on Umbraco 8 so please take a backup.
My guess is it will probably work just fine.
TRUNCATE TABLE umbracoLog
GO
TRUNCATE TABLE umbracoUser2NodePermission
GO
TRUNCATE TABLE umbracoUserLogins
GO
-- Create a temporary table for all documents which are published and not in the recycle bin
CREATE TABLE #Nodes (id int)
GO
-- Delete all rows if the table exists before
TRUNCATE TABLE #Nodes
GO
-- Insert all nodeIds from all documents which are published and not in the recycle bin
INSERT INTO #Nodes
SELECT N.id
FROM umbracoNode N
INNER JOIN cmsDocument D ON N.ID = D.NodeId
WHERE nodeObjectType = 'C66BA18E-EAF3-4CFF-8A22-41B16D66A972'
AND [path] NOT LIKE '%-20%'
AND D.Published = 1
GO
-- Create a temporary table for all versionId's to delete
CREATE TABLE #Versions (id UniqueIdentifier)
GO
-- Delete all rows if it exists before
TRUNCATE TABLE #Versions
GO
-- Insert all versionId's from all nodeIds in the #Nodes table
-- and where published is set to false and newest is set to false
INSERT INTO #Versions
SELECT versionId
FROM cmsDocument
WHERE nodeId IN (SELECT id FROM #Nodes) AND published = 0 AND newest = 0
GO
-- DELETE all versions from cmsPreviewXml, cmsPropertyData, cmsContentVersion, cmsDocument
-- from the nodes which are published and which are not in the recycle bin
-- and which are not published and which are not the newest
DELETE FROM cmsPreviewXml WHERE versionId IN (SELECT id FROM #Versions)
GO
DELETE FROM cmsPropertyData WHERE VersionId IN (SELECT id FROM #Versions)
GO
DELETE FROM cmsContentVersion WHERE VersionId IN (SELECT id FROM #Versions)
GO
DELETE FROM cmsDocument WHERE VersionId IN (SELECT id FROM #Versions)
GO
-- Drop temp tables
DROP TABLE #Versions
GO
DROP TABLE #Nodes
GO
-- Reindex tables
DBCC DBREINDEX (cmsPropertyData)
DBCC DBREINDEX (cmsPreviewXml)
DBCC DBREINDEX (cmsContentVersion)
DBCC DBREINDEX (cmsDocument)
DBCC DBREINDEX (cmsContentXml)
DBCC DBREINDEX (umbracoDomains)
DBCC DBREINDEX (umbracoUser2NodePermission)
DBCC DBREINDEX (umbracoNode)
DBCC DBREINDEX (cmsContent)
I know this is an old thread, but if anyone is interested I have been running this updated version of @David Armitage SQL on my v8 dev environment
PRINT 'Clearing log- and audit tables'
TRUNCATE TABLE umbracoLog
GO
TRUNCATE TABLE umbracoAudit
GO
TRUNCATE TABLE umbracoUserLogin
GO
PRINT 'Select all published document nodes'
-- Create a temporary table for all documents which are published and not in the recycle bin
DROP TABLE IF EXISTS #Nodes
CREATE TABLE #Nodes (id int)
GO
-- Insert all nodeIds from all documents which are published and not in the recycle bin
INSERT INTO #Nodes
SELECT N.id
FROM umbracoNode N
INNER JOIN umbracoDocument D ON N.ID = D.NodeId
WHERE nodeObjectType = 'C66BA18E-EAF3-4CFF-8A22-41B16D66A972'
AND [path] NOT LIKE '%-20%'
AND D.Published = 1
GO
PRINT 'Select all unpublished document versions'
-- Create a temporary table for all versionId's to delete
DROP TABLE IF EXISTS #Versions
CREATE TABLE #Versions (id int)
GO
-- Insert all versionId's from all nodeIds in the #Nodes table
-- and where published is set to false and [current] is set to false
INSERT INTO #Versions
SELECT CV.id
FROM umbracoDocumentVersion AS DV INNER JOIN umbracoContentVersion AS CV ON DV.id = CV.id
WHERE nodeId IN (SELECT id FROM #Nodes) AND published = 0 AND [current] = 0
GO
PRINT 'DELETE unpublised versions from umbracoContentVersionCultureVariation, umbracoPropertyData, umbracoContentVersion, umbracoDocumentVersion '
-- DELETE all versions from umbracoContentVersionCultureVariation, umbracoPropertyData, umbracoContentVersion, umbracoDocumentVersion
-- from the nodes which are published and which are not in the recycle bin
-- and which are not published and which are not the newest
DELETE FROM umbracoContentVersionCultureVariation WHERE versionId IN (SELECT id FROM #Versions)
GO
DELETE FROM umbracoPropertyData WHERE VersionId IN (SELECT id FROM #Versions)
GO
DELETE FROM umbracoDocumentVersion WHERE id IN (SELECT id FROM #Versions)
GO
DELETE FROM umbracoContentVersion WHERE id IN (SELECT id FROM #Versions)
GO
-- Drop temp tables
DROP TABLE #Versions
GO
DROP TABLE #Nodes
GO
PRINT 'Reindex tables'
-- Reindex tables
DBCC DBREINDEX (umbracoPropertyData)
DBCC DBREINDEX (umbracoDocumentVersion)
DBCC DBREINDEX (umbracoContentVersion)
DBCC DBREINDEX (umbracoDocument)
DBCC DBREINDEX (umbracoContent)
DBCC DBREINDEX (umbracoContentVersionCultureVariation)
DBCC DBREINDEX (umbracoDomain)
DBCC DBREINDEX (umbracoAudit)
DBCC DBREINDEX (umbracoNode)
GO
PRINT 'Shrink databse'
DBCC SHRINKDATABASE (0)
GO
Sript to database Cleanup
Hello,
Is anyone aware of any C# or SQL scripts to perform a database cleanup? Looking to compact the data set of things like old log entries, unused data types, unused doc types, old/unused content versions, etc.omegle
Regards
Mary Greene
Hi Mary,
This has always worked great for Umbraco 7. Unfortunately I have not tested this on Umbraco 8 so please take a backup. My guess is it will probably work just fine.
Thanks for the script @David Armitage, it's helping me shrink some v7 sites, just wondering, is
meant to be
as I don't have tables called: umbracoUser2NodePermission or umbracoUserLogins
I know this is an old thread, but if anyone is interested I have been running this updated version of @David Armitage SQL on my v8 dev environment
Hello,
did anyone test the above script in Umbraco 8?
Many thanks, Mihai.
is working on a reply...