mirror of
https://github.com/jonbranan/globalscape.git
synced 2024-10-20 05:47:57 -05:00
120 lines
3.8 KiB
Transact-SQL
120 lines
3.8 KiB
Transact-SQL
-- EFT Purging Script - tbl_SocketConnections
|
|
-- Goal: Special script to purge data from tbl_SocketConnections by date
|
|
|
|
-- USAGE
|
|
|
|
-- 1. Configure the purge (bottom of script)
|
|
-- To perform a complete purge, just run the command at the bottom of the script: EXEC sp_PurgeEFT_SocketConnections NULL, NULL, NULL
|
|
-- If you want to purge a specific date range, then specify a start and end date: EXEC sp_PurgeEFT_SocketConnections '2019-01-01', '2019-05-18', NULL
|
|
-- If you want to purge a specific error code, for example error code 0: EXEC sp_PurgeEFT_SocketConnections '2019-01-01', '2019-05-18', 0
|
|
-- Note: Leaving begin date as NULL will default to earliest date.
|
|
-- Leaving end date as NULL will default to current date.
|
|
-- Leaving errorCode as NULL will purge all error codes.
|
|
|
|
-- Change Log:
|
|
-- 0.1: Original version
|
|
-- 0.2: Updated comments
|
|
|
|
-- USE EFTDB
|
|
|
|
-- This procedure will print the version of this script
|
|
IF OBJECT_ID('dbo.sp_PurgeEFT_SocketConnectionsVersion') IS NOT NULL
|
|
DROP PROC dbo.sp_PurgeEFT_SocketConnectionsVersion
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_PurgeEFT_SocketConnectionsVersion
|
|
AS
|
|
PRINT 'GlobalSCAPE, Inc. Purge Script Version 0.2'
|
|
GO
|
|
|
|
-- This procedure will delete EFT transactions from a all tables.
|
|
IF OBJECT_ID('dbo.sp_PurgeEFT_SocketConnections') IS NOT NULL BEGIN
|
|
DROP PROC dbo.sp_PurgeEFT_SocketConnections
|
|
END
|
|
GO
|
|
|
|
-- By default, with no parameters, this procedure will purge all socket connections
|
|
CREATE PROCEDURE sp_PurgeEFT_SocketConnections
|
|
@startTime datetime = NULL,
|
|
@stopTime datetime = NULL,
|
|
@errorCode int = NULL,
|
|
@debug bit = 0
|
|
AS
|
|
BEGIN
|
|
DECLARE @ErrMsg nvarchar(4000);
|
|
DECLARE @ErrSeverity int;
|
|
|
|
EXEC dbo.sp_PurgeEFT_SocketConnectionsVersion
|
|
|
|
SET NOCOUNT ON
|
|
|
|
IF @startTime IS NULL AND @stopTime IS NULL AND @errorCode IS NULL
|
|
BEGIN
|
|
--This will remove everything, regardless of ResultID code
|
|
TRUNCATE TABLE tbl_SocketConnections
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF @startTime IS NULL
|
|
BEGIN
|
|
SET @startTime = '1970-01-01 00:00:00'
|
|
END
|
|
|
|
IF @stopTime IS NULL
|
|
BEGIN
|
|
SET @stopTime = DATEADD(DAY, 1, GETDATE())
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @stopTime = DATEADD(DAY, 1, @stopTime)
|
|
END
|
|
|
|
IF @debug=1 PRINT CONVERT(varchar(30),CURRENT_TIMESTAMP, 8) + ' Deleting from tbl_SocketConnections';
|
|
|
|
BEGIN TRY
|
|
IF @errorCode IS NULL
|
|
BEGIN
|
|
DELETE FROM tbl_SocketConnections WHERE Time_stamp >= @startTime AND Time_stamp < @stopTime
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
DELETE FROM tbl_SocketConnections WHERE Time_stamp >= @startTime AND Time_stamp < @stopTime AND ResultID = @errorCode
|
|
END
|
|
END TRY
|
|
BEGIN CATCH
|
|
-- There was an error
|
|
IF @@TRANCOUNT > 0 ROLLBACK
|
|
-- Raise an error with the details of the exception
|
|
SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY()
|
|
RAISERROR(@ErrMsg, @ErrSeverity, 1)
|
|
END CATCH
|
|
|
|
DBCC SHRINKFILE (2) WITH NO_INFOMSGS; -- Truncate the log to its original creation size
|
|
|
|
IF @debug=1 PRINT CONVERT(varchar(30),CURRENT_TIMESTAMP, 8) + ' Done deleting from tbl_SocketConnections';
|
|
END
|
|
PRINT 'Procedure Complete'
|
|
END
|
|
GO
|
|
|
|
-- sp_PurgeEFT_SocketConnections parameters
|
|
--
|
|
-- startTime: set the time to purge from. If set to NULL it will default to January 1970.
|
|
-- stopTime : set the time to purge to. If set to NULL it will default to todays date.
|
|
-- errorCode: set the resultID to purge. If set to NULL it will purge all resultIDs.
|
|
-- The errorCodes are as follows:
|
|
-- - TOO_MANY_CONNECTIONS_PER_SITE = 8
|
|
-- - TOO_MANY_CONNECTIONS_PER_IP = 9
|
|
-- - RESTRICTED_IP = 10
|
|
-- - BANNED_IP = 11
|
|
-- - EFT_IN_DEV_MODE = 12
|
|
-- - INTERNAL_SERVER_ERROR = 13
|
|
-- - OK = 0
|
|
|
|
-- Default to purge entire table
|
|
|
|
-- SET STATISTICS TIME OFF
|
|
EXEC sp_PurgeEFT_SocketConnections NULL, NULL, NULL, 1
|
|
-- EXEC sp_PurgeEFT_SocketConnections '2018-01-01', '2018-12-31', NULL, 1
|
|
-- SET STATISTICS TIME OFF
|