You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
3.9 KiB
183 lines
3.9 KiB
-- Create sproc to bump the revision date of a batch of users |
|
IF OBJECT_ID('[dbo].[User_BumpAccountRevisionDateByOrganizationUserIds]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[User_BumpAccountRevisionDateByOrganizationUserIds] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[User_BumpAccountRevisionDateByOrganizationUserIds] |
|
@OrganizationUserIds [dbo].[GuidIdArray] READONLY |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
SELECT |
|
OU.UserId |
|
INTO |
|
#UserIds |
|
FROM |
|
[dbo].[OrganizationUser] OU |
|
INNER JOIN |
|
@OrganizationUserIds OUIds ON OUIds.Id = OU.Id |
|
WHERE |
|
OU.[Status] = 2 -- Confirmed |
|
|
|
UPDATE |
|
U |
|
SET |
|
U.[AccountRevisionDate] = GETUTCDATE() |
|
FROM |
|
[dbo].[User] U |
|
INNER JOIN |
|
#UserIds ON U.[Id] = #UserIds.[UserId] |
|
END |
|
GO |
|
|
|
-- Create TwoGuidIdArray Type |
|
IF NOT EXISTS ( |
|
SELECT |
|
* |
|
FROM |
|
sys.types |
|
WHERE |
|
[Name] = 'TwoGuidIdArray' AND |
|
is_user_defined = 1 |
|
) |
|
CREATE TYPE [dbo].[TwoGuidIdArray] AS TABLE ( |
|
[Id1] UNIQUEIDENTIFIER NOT NULL, |
|
[Id2] UNIQUEIDENTIFIER NOT NULL); |
|
GO |
|
|
|
-- Create sproc to delete batch of users |
|
-- Parameter Ids are UserId, OrganizationId |
|
IF OBJECT_ID('[dbo].[SsoUser_DeleteMany]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[SsoUser_DeleteMany] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[SsoUser_DeleteMany] |
|
@UserAndOrganizationIds [dbo].[TwoGuidIdArray] READONLY |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
SELECT |
|
Id |
|
INTO |
|
#SSOIds |
|
FROM |
|
[dbo].[SsoUser] SU |
|
INNER JOIN |
|
@UserAndOrganizationIds UOI ON UOI.Id1 = SU.UserId AND UOI.Id2 = SU.OrganizationId |
|
|
|
DECLARE @BatchSize INT = 100 |
|
|
|
-- Delete SSO Users |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION SsoUser_DeleteMany_SsoUsers |
|
|
|
DELETE TOP(@BatchSize) SU |
|
FROM |
|
[dbo].[SsoUser] SU |
|
INNER JOIN |
|
#SSOIDs ON #SSOIds.Id = SU.Id |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION SsoUser_DeleteMany_SsoUsers |
|
END |
|
END |
|
GO |
|
|
|
-- Create OrganizationUser Delete many by Id procedure |
|
IF OBJECT_ID('[dbo].[OrganizationUser_DeleteByIds]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[OrganizationUser_DeleteByIds] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[OrganizationUser_DeleteByIds] |
|
@Ids [dbo].[GuidIdArray] READONLY |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationUserIds] @Ids |
|
|
|
DECLARE @UserAndOrganizationIds [dbo].[TwoGuidIdArray] |
|
|
|
INSERT INTO @UserAndOrganizationIds |
|
(Id1, Id2) |
|
SELECT |
|
UserId, |
|
OrganizationId |
|
FROM |
|
[dbo].[OrganizationUser] OU |
|
INNER JOIN |
|
@Ids OUIds ON OUIds.Id = OU.Id |
|
WHERE |
|
UserId IS NOT NULL AND |
|
OrganizationId IS NOT NULL |
|
|
|
BEGIN |
|
EXEC [dbo].[SsoUser_DeleteMany] @UserAndOrganizationIds |
|
END |
|
|
|
DECLARE @BatchSize INT = 100 |
|
|
|
-- Delete CollectionUsers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION CollectionUser_DeleteMany_CUs |
|
|
|
DELETE TOP(@BatchSize) CU |
|
FROM |
|
[dbo].[CollectionUser] CU |
|
INNER JOIN |
|
@Ids I ON I.Id = CU.OrganizationUserId |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION CollectionUser_DeleteMany_CUs |
|
END |
|
|
|
SET @BatchSize = 100; |
|
|
|
-- Delete GroupUsers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION GroupUser_DeleteMany_GroupUsers |
|
|
|
DELETE TOP(@BatchSize) GU |
|
FROM |
|
[dbo].[GroupUser] GU |
|
INNER JOIN |
|
@Ids I ON I.Id = GU.OrganizationUserId |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION GoupUser_DeleteMany_GroupUsers |
|
END |
|
|
|
|
|
SET @BatchSize = 100; |
|
|
|
-- Delete OrganizationUsers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION OrganizationUser_DeleteMany_OUs |
|
|
|
DELETE TOP(@BatchSize) OU |
|
FROM |
|
[dbo].[OrganizationUser] OU |
|
INNER JOIN |
|
@Ids I ON I.Id = OU.Id |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION OrganizationUser_DeleteMany_OUs |
|
END |
|
END |
|
GO
|
|
|