55 lines
2.0 KiB
Transact-SQL
55 lines
2.0 KiB
Transact-SQL
USE [DocumedisLogs]
|
|
GO
|
|
|
|
/*
|
|
MDDOC-878
|
|
|
|
Purge of the table documedisLogs.dbo.DocumedisSecurityLogs
|
|
|
|
Only records that are more than 7 months old and present as archived in [archivedRowsJournal]
|
|
will be purged.
|
|
|
|
Deletion is made in small batches to avoid locking.
|
|
Only 1 iteration is made, the job calling this procedure will handle the calls and be executed several times.
|
|
it will also handle the hours the deletion should run from / to
|
|
*/
|
|
CREATE OR ALTER PROCEDURE [purge_documedisSecurityLogs] AS
|
|
BEGIN
|
|
DECLARE @cutoff DATE = DATEADD(MONTH, -7, CURRENT_TIMESTAMP);
|
|
DECLARE @batch INT = 5000;
|
|
DECLARE @tbl_to_del TABLE([DocumedisSecurityLogId] BIGINT NOT NULL);
|
|
|
|
BEGIN TRANSACTION;
|
|
|
|
-- region populate filter table
|
|
INSERT INTO @tbl_to_del([DocumedisSecurityLogId])
|
|
SELECT TOP (@batch)
|
|
[s].[DocumedisSecurityLogId]
|
|
FROM [DocumedisSecurityLogs] [s]
|
|
WHERE [s].[LogDateTime] < @cutoff
|
|
AND EXISTS(
|
|
SELECT 1
|
|
FROM [archivedRowsJournal] [j]
|
|
WHERE [j].[tableName] = 'DocumedisSecurityLogs'
|
|
AND [j].[tableRowId] = [s].[DocumedisSecurityLogId]
|
|
);
|
|
-- endregion
|
|
|
|
-- region DocumedisSecurityLogs
|
|
DELETE [s]
|
|
FROM @tbl_to_del [d]
|
|
INNER JOIN [dbo].[DocumedisSecurityLogs] [s] ON [s].[DocumedisSecurityLogId] = [d].[DocumedisSecurityLogId];
|
|
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - Deleted from DocumedisSecurityLogs. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
|
-- endregion
|
|
|
|
-- region archivedRowsJournal
|
|
DELETE [j]
|
|
FROM [archivedRowsJournal] [j]
|
|
INNER JOIN @tbl_to_del [d] ON [d].[DocumedisSecurityLogId] = [j].[tableRowId]
|
|
WHERE [tableName] = 'DocumedisSecurityLogs';
|
|
PRINT CONVERT(VARCHAR(20), CURRENT_TIMESTAMP, 114)+' - Deleted from archivedRowsJournal. '+REPLACE(REPLACE(CONVERT(VARCHAR(100), CONVERT(MONEY, @@rowcount), 1),',',''''),'.00','')+' row(s) affected.';
|
|
-- endregion
|
|
|
|
COMMIT TRANSACTION;
|
|
END
|