Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions functions-scalar/dbo.ObsfucateIPAddress.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
CREATE OR ALTER FUNCTION dbo.ObsfucateIPAddress(@String NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
/*************************************************************************************************
AUTHOR: Patrick Hurst
CREATED: 20220414
Obsfucates the provided IP by returning the first digit of each octet and replacing the
rest with Xs
PARAMETERS:
@String - the IP Address to obsfucate
EXAMPLES:
* dbo.ObsfucateIPAddress('192.168.1.10') --> 1XX.1XX.1.1X
**************************************************************************************************
MODIFICATIONS:
YYYYMMDD -
**************************************************************************************************

*************************************************************************************************/
BEGIN
DECLARE @return NVARCHAR(MAX)
SELECT @return = STRING_AGG(LEFT(value,1) +COALESCE(REPLICATE('X',LEN(Value)-1),''), '.')
FROM string_split(@String,'.')
RETURN @return
END
GO
25 changes: 25 additions & 0 deletions functions-scalar/dbo.ObsfucateString.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
CREATE OR ALTER FUNCTION dbo.ObsfucateString(@String NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
/*************************************************************************************************
AUTHOR: Patrick Hurst
CREATED: 20220414
Obsfucates the provided string by returning the first two characters of any word, and
replacing the rest with Xs
PARAMETERS:
@String - the string to obsfucate
EXAMPLES:
* dbo.ObsfucateString('John Smith') --> JoXX SmXXX
**************************************************************************************************
MODIFICATIONS:
YYYYMMDD -
**************************************************************************************************

*************************************************************************************************/
BEGIN
DECLARE @return NVARCHAR(MAX)
SELECT @return = STRING_AGG(LEFT(value,2) +COALESCE(REPLICATE('X',LEN(Value)-2),''), ' ')
FROM string_split(@String,' ')
RETURN @return
END
GO
26 changes: 26 additions & 0 deletions functions-scalar/dbo.ObsufcateEmail.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
CREATE OR ALTER FUNCTION dbo.ObsufcateEmail(@Email NVARCHAR(100))
RETURNS NVARCHAR(100)
AS
/*************************************************************************************************
AUTHOR: Patrick Hurst
CREATED: 20220414
Obsfucates the provided Email address by returning the first two characters of the user name,
the first two characters of the domain and the complete TLD. If the value does not contain a
@ calls dbo.ObsfucateString instead.
PARAMETERS:
@Email - the Email Address to obsfucate
EXAMPLES:
* dbo.ObsufcateEmail('[email protected]') --> [email protected]
**************************************************************************************************
MODIFICATIONS:
YYYYMMDD -
**************************************************************************************************

*************************************************************************************************/
BEGIN
DECLARE @return NVARCHAR(100)
SELECT @return = CASE WHEN CHARINDEX('@', @Email) > 1 THEN REPLACE(LEFT(@Email,2),'@','') +COALESCE(REPLICATE('X',CHARINDEX('@',@Email)-3),'')+'@'+
LEFT(RIGHT(@Email,LEN(@Email)-CHARINDEX('@',@Email)),2)+REPLICATE('X',CHARINDEX('.',RIGHT(@Email,LEN(@Email)-CHARINDEX('@',@Email)-3)))+
RIGHT(@Email,LEN(RIGHT(@Email,LEN(@Email)-CHARINDEX('@',@Email)))-CHARINDEX('.',RIGHT(@Email,LEN(@Email)-CHARINDEX('@',@Email)))+1) ELSE dbo.ObsfucateString(@Email) END
RETURN @return
END
59 changes: 59 additions & 0 deletions stored-procedures/dbo.MaintenanceModeToggle.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
CREATE OR ALTER PROC dbo.MaintenanceModeToggle (
@Bit BIT,
@DatabaseName NVARCHAR(128) = NULL,
@AvailabilityGroup NVARCHAR(128) = NULL,
@ServerName NVARCHAR(128) = NULL
)
AS
/*************************************************************************************************
AUTHOR: Patrick hurst
CREATED: 20220414

PARAMETERS
* @Bit - maintenance mode on (1) or off (0)
@DatabaseName (NULL/optional) the name of the single database to toggle
@AvailabilityGroup (NULL/optional) the name of the availability group to toggle all databases
@ServerName (NULL/optional) the name of the server to toggle all databases
**************************************************************************************************
MODIFICATIONS:
YYYYMMDDD - Initials - Description of changes
**************************************************************************************************

*************************************************************************************************/
BEGIN
IF @bit = 1
BEGIN
INSERT INTO dbo.MaintenanceModeDatabases
SELECT d.name, SYSTEM_USER, GETUTCDATE()
FROM master.sys.databases d
LEFT OUTER JOIN sys.dm_hadr_cached_database_replica_states rs
ON d.name = rs.ag_db_name
AND rs.is_local = 1
LEFT OUTER JOIN MaintenanceModeDatabases mmd
ON d.name = mmd.DatabaseName
WHERE ((
(@databaseName IS NULL or @databaseName = d.name)
AND (@availabilityGroup IS NULL OR @availabilityGroup = rs.ag_name)
AND @ServerName IS NULL
)
OR (@serverName IS NOT NULL))
AND mmd.DatabaseName IS NULL;
END;
IF @bit = 0
BEGIN
DELETE mmd
FROM dbo.MaintenanceModeDatabases mmd
LEFT OUTER JOIN sys.dm_hadr_cached_database_replica_states rs
ON mmd.DatabaseName = rs.ag_db_name
AND rs.is_local = 1
WHERE (
(@databaseName IS NULL or @databaseName = mmd.DatabaseName)
AND (@availabilityGroup IS NULL OR @availabilityGroup = rs.ag_name)
AND @ServerName IS NULL
)
OR (@serverName IS NOT NULL);
END;
END;
GO


11 changes: 11 additions & 0 deletions tables/dbo.MaintenanceModeDatabases.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

IF EXISTS (SELECT 1 FROM sys.tables t INNER JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name = 'MaintenanceModeDatabases' AND s.name = 'dbo') DROP TABLE dbo.MaintenanceModeDatabases;
CREATE TABLE MaintenanceModeDatabases (
DatabaseName NVARCHAR(128),
AddedByUser NVARCHAR(100),
AddedDateTimeUTC DATETIME DEFAULT GETUTCDATE()
);
GO