-- Create temporary table to store User IDs CREATE TABLE #TempUserIDs ( RowNum INT IDENTITY(1,1) PRIMARY KEY, ID UNIQUEIDENTIFIER ); -- Populate temporary table with User IDs INSERT INTO #TempUserIDs (ID) SELECT Id FROM [dbo].[User] WHERE TwoFactorProviders LIKE '%"2":%' AND ISJSON(TwoFactorProviders) = 1; DECLARE @UserBatchSize INT = 1000; DECLARE @TotalUserRows INT = (SELECT COUNT(*) FROM #TempUserIDs); DECLARE @UserBatchNum INT = 0; WHILE @UserBatchNum * @UserBatchSize < @TotalUserRows BEGIN -- Update Users UPDATE U SET TwoFactorProviders = JSON_MODIFY( JSON_MODIFY( U.TwoFactorProviders, '$."2".MetaData.ClientSecret', JSON_VALUE(U.TwoFactorProviders, '$."2".MetaData.SKey') ), '$."2".MetaData.ClientId', JSON_VALUE(U.TwoFactorProviders, '$."2".MetaData.IKey') ) FROM [dbo].[User] U INNER JOIN #TempUserIDs T ON U.Id = T.ID WHERE T.RowNum > @UserBatchNum * @UserBatchSize AND T.RowNum <= (@UserBatchNum + 1) * @UserBatchSize; SET @UserBatchNum = @UserBatchNum + 1; END -- Clean up DROP TABLE #TempUserIDs; -- Create temporary table to store Organization IDs CREATE TABLE #TempOrganizationIDs ( RowNum INT IDENTITY(1,1) PRIMARY KEY, ID UNIQUEIDENTIFIER ); -- Populate temporary table with Organization IDs INSERT INTO #TempOrganizationIDs (ID) SELECT Id FROM [dbo].[Organization] WHERE TwoFactorProviders LIKE '%"6":%' AND ISJSON(TwoFactorProviders) = 1; DECLARE @OrganizationBatchSize INT = 1000; DECLARE @TotalOrganizationRows INT = (SELECT COUNT(*) FROM #TempOrganizationIDs); DECLARE @OrganizationBatchNum INT = 0; WHILE @OrganizationBatchNum * @OrganizationBatchSize < @TotalOrganizationRows BEGIN -- Update Organizations UPDATE Org SET TwoFactorProviders = JSON_MODIFY( JSON_MODIFY( Org.TwoFactorProviders, '$."6".MetaData.ClientSecret', JSON_VALUE(Org.TwoFactorProviders, '$."6".MetaData.SKey') ), '$."6".MetaData.ClientId', JSON_VALUE(Org.TwoFactorProviders, '$."6".MetaData.IKey') ) FROM [dbo].[Organization] Org INNER JOIN #TempOrganizationIDs T ON Org.Id = T.ID WHERE T.RowNum > @OrganizationBatchNum * @OrganizationBatchSize AND T.RowNum <= (@OrganizationBatchNum + 1) * @OrganizationBatchSize; SET @OrganizationBatchNum = @OrganizationBatchNum + 1; END -- Clean up DROP TABLE #TempOrganizationIDs;