SysPrcElHistoryLog и SysProcessLog - это можно удалять.
Записи журнала процессов доступны в разделе "Журнал процессов".
Ниже представлена инструкция, которая позволяет очистить таблицы SysPrcElHistoryLog, SysPrcEntityHistory, SysPrcHistoryLog (это таблицы куда переводятся в архив записи из SysProcessLog)
Для очистки таблиц необходимо:
1 - создать процедуру очистки, выполнив скрипт:
SET QUOTED_IDENTIFIER ON
GO
IF NOT OBJECT_ID('[dbo].[tsp_DeleteSysPrcHistoryLogById]') IS NULL
BEGIN
DROP PROCEDURE [dbo].[tsp_DeleteSysPrcHistoryLogById]
END
GO
CREATE PROCEDURE [dbo].[tsp_DeleteSysPrcHistoryLogById]
@SysProcessLogId uniqueidentifier
AS
BEGIN
SET NOCOUNT ON
DECLARE @sysProcessLogRecordsToDelete TABLE (Id uniqueidentifier)
INSERT INTO @sysProcessLogRecordsToDelete ([Id])
SELECT Id FROM SysPrcHistoryLog
WHERE ParentId = @SysProcessLogId
OPTION (OPTIMIZE FOR (@SysProcessLogId UNKNOWN))
DECLARE @COUNT int=(SELECT COUNT(*) FROM @sysProcessLogRecordsToDelete)
PRINT '-- ChildProcessLogToDeleteCount = '+ CAST(@COUNT AS nvarchar(50))
WHILE (@COUNT)!=0
BEGIN
DECLARE @parentId uniqueidentifier =(SELECT TOP 1 Id from @sysProcessLogRecordsToDelete)
PRINT '---- ChildProcessLogId = '+ CAST(@parentId AS nvarchar(50))
DELETE FROM @sysProcessLogRecordsToDelete WHERE Id = @parentId;
EXEC [dbo].[tsp_DeleteSysPrcHistoryLogById] @parentId
SET @COUNT = @COUNT -1
END
DELETE FROM SysPrcElHistoryLog
WHERE SysProcessId = @SysProcessLogId
DELETE FROM SysPrcEntityHistory
WHERE SysProcessId = @SysProcessLogId
DELETE FROM SysPrcHistoryLog
WHERE Id = @SysProcessLogId
END
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT OBJECT_ID('[dbo].[tsp_DeleteSysPrcHistoryLogByStartDate]') IS NULL
BEGIN
DROP PROCEDURE [dbo].[tsp_DeleteSysPrcHistoryLogByStartDate]
END
GO
CREATE PROCEDURE [dbo].[tsp_DeleteSysPrcHistoryLogByStartDate]
@StartDate date
AS
BEGIN
SET NOCOUNT ON
IF NOT OBJECT_ID('#SysProcessLogId') IS NULL
BEGIN
DROP TABLE #SysProcessLogId
END
CREATE TABLE #SysProcessLogId (Id uniqueidentifier)
INSERT INTO #SysProcessLogId ([Id])
SELECT Top 1000000 SysPrcHistoryLog.Id FROM SysPrcHistoryLog
WHERE SysPrcHistoryLog.ParentId IS NULL
AND SysPrcHistoryLog.StartDate< @StartDate
DECLARE SysProcessLogIdCursor CURSOR STATIC LOCAL FOR
SELECT
Id
FROM
#SysProcessLogId
DECLARE @COUNT int=(SELECT COUNT_BIG(*) FROM #SysProcessLogId)
DECLARE @processLogId uniqueidentifier
PRINT 'STATE - OPEN SysProcessLogIdCursor '+ RTRIM(CAST(CONVERT(time, GETDATE()) AS nvarchar(30)))
OPEN SysProcessLogIdCursor
WHILE (@COUNT >0)
BEGIN
FETCH NEXT FROM SysProcessLogIdCursor INTO @processLogId
IF @@FETCH_STATUS =-1 BREAK
IF @@FETCH_STATUS =-2 CONTINUE
PRINT 'START DELETE ProcessLogId = '+ CAST(@processLogId AS nvarchar(50))+' Time = '+ RTRIM(CAST(CONVERT(time, GETDATE()) AS nvarchar(30)))
EXEC [dbo].[tsp_DeleteSysPrcHistoryLogById] @processLogId
PRINT 'FINISH DELETE ProcessLogId = '+ CAST(@processLogId AS nvarchar(50))+' Time = '+ RTRIM(CAST(CONVERT(time, GETDATE()) AS nvarchar(30)))
SET @COUNT = @COUNT -1
PRINT 'Count = '+ CAST(@COUNT AS nvarchar(50))
END
CLOSE SysProcessLogIdCursor
DEALLOCATE SysProcessLogIdCursor
PRINT 'STATE - CLOSE SysProcessLogIdCursor '+ RTRIM(CAST(CONVERT(time, GETDATE()) AS nvarchar(30)))
IF NOT OBJECT_ID('#SysProcessLogId') IS NULL
BEGIN
DROP TABLE #SysProcessLogId
END
END
GO
2 - выполнить запрос:
DECLARE @date date ='2017-11-01'
exec [dbo].[tsp_DeleteSysPrcHistoryLogByStartDate] @date
далее в запросе '2017-11-01' - это дата до которой будут безвозвратно удалены первые 1000 000 записей из SysPrcHistoryLog, Также, будут удалены связанные записи из таблиц SysPrcElHistoryLog, SysPrcEntityHistory.
У Вас очень старая 7.7, могут быть отличия, запускать осторожно.
А вообще, в 7.15.3 обещают автоматическую чистку таких архивных таблиц, есть смысл обновиться.
спасибо. настрою очистку. мы уже обновились до 15.3 , и именно после этого начал увеличиваться SysPrcElHistoryLog, на ранних версиях я вообще не обращал внимания на эту таблицу
Для тех, кто обновляется, а не ставит с нуля, перенос в эти таблицы из основных таблиц процессов включен, вот и растёт, а чистка на всякий случай выключена. Чтобы включить, достаточно поменять значение системной настройки «Срок хранения архивных данных (дней)» с 0 на натуральное число.