501 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			501 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
| 
 | |
| 
 | |
| 
 | |
| 	Set NoCount On;
 | |
| 
 | |
| 	Declare @ShowDetails Bit;
 | |
| 	Declare @IsAutoFixEnabled Bit;
 | |
| 
 | |
| 
 | |
| 	/*================================================================================================================================*/
 | |
| 
 | |
| 	Set @ShowDetails = 1;
 | |
| 	Set @IsAutoFixEnabled = 0;
 | |
| 	
 | |
| 	/*================================================================================================================================*/
 | |
| 
 | |
| 
 | |
| 	-- Local Variables
 | |
| 	Declare @IssueNum Int;
 | |
| 	Declare @Description VarChar(Max);
 | |
| 	Declare @SqlTables VarChar(250);
 | |
| 	Declare @FixType VarChar(50);	-- Auto or Manual
 | |
| 	Declare @NumOfRecords Int;
 | |
| 
 | |
| 	-- Create Results Table
 | |
| 	Declare @Results as Table (IssueNum Int Primary Key, SqlTables VarChar(250), [Description] VarChar(Max), FixType VarChar(50), NumOfRecords Int);
 | |
| 
 | |
| 	-- Default / Initialize Variables
 | |
| 	Set @IssueNum = 0;
 | |
| 	Set @Description = 'n/a';
 | |
| 	Set @SqlTables = 'n/a';
 | |
| 	Set @FixType = 'Manual';
 | |
| 	Set @NumOfRecords = 0;
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #1:	[Contents Table] - Records with space before Links after parenthesis
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 1;
 | |
| 	Set @Description = 'Records with space before Links after parenthesis';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) Where c.[Text] like '%( \v%'; 
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged From Contents c with (NoLock) Where c.[Text] like '%( \v%';
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblContents Set [Text] = Right([Text], Len([Text])-1) Where [Text] like '%( \v%';
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 	
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #2:	[Contents Table] - Records with space before Links as starting text
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 2;
 | |
| 	Set @Description = 'Records with space before Links as starting text';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) Where c.[Text] like ' \v%';	 
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged From Contents c with (NoLock) Where c.[Text] like ' \v%';
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblContents Set [Text] = Right([Text], Len([Text])-1) Where [Text] like ' \v%';
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 	
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #3:	[Contents Table] - Records with extra spaces before RO Links
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 3;
 | |
| 	Set @Description = 'Records with extra spaces before RO Links';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	--Select @NumOfRecords = Count(1) 
 | |
| 	--From Contents c with (NoLock) Where c.[Text] like '%  \v%';	
 | |
| 
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) 
 | |
| 	Where c.[Text] like '%  \v%' And Not (c.[Text] like '%\ul  \v%' Or c.[Text] like '%\ulnone  \v%' Or c.[Text] like '%\up0  \v%' Or c.[Text] like '%\b0  \v%' Or c.[Text] like '%\i0  \v%');
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		--Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged From Contents c with (NoLock) Where c.[Text] like '%  \v%';
 | |
| 
 | |
| 		Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged From Contents c with (NoLock) 
 | |
| 		Where c.[Text] like '%  \v%' And Not (c.[Text] like '%\ul  \v%' Or c.[Text] like '%\ulnone  \v%' Or c.[Text] like '%\up0  \v%' Or c.[Text] like '%\b0  \v%' Or c.[Text] like '%\i0  \v%');
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		--Update tblContents Set [Text] = Replace([Text], '  \v', ' \v') Where [Text] like '%  \v%';
 | |
| 
 | |
| 		Update tblContents Set [Text] = Replace([Text], '  \v', ' \v') 
 | |
| 		Where [Text] like '%  \v%' And Not ([Text] like '%\ul  \v%' Or [Text] like '%\ulnone  \v%' Or [Text] like '%\up0  \v%' Or [Text] like '%\b0  \v%' Or [Text] like '%\i0  \v%');
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #4:	[Grids Table] - Records with extra spaces before RO Links
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 4;
 | |
| 	Set @Description = 'Records with extra spaces before RO Links';
 | |
| 	Set @SqlTables = 'Grids';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Grids g with (NoLock) 
 | |
| 	Where Cast(g.[Data] as VarChar(Max)) like '%  \v%'
 | |
| 		And Not (Cast(g.[Data] as VarChar(Max)) like '%\ul  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\ulnone  \v%' 
 | |
| 			Or Cast(g.[Data] as VarChar(Max)) like '%\up0  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\b0  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\i0  \v%');
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select g.ContentID, g.Config, g.DTS, g.UserID, g.LastChanged, Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText', g.[Data] as 'XmlData' 
 | |
| 		From Grids g with (NoLock) 
 | |
| 		Where Cast(g.[Data] as VarChar(Max)) like '%  \v%'
 | |
| 			And Not (Cast(g.[Data] as VarChar(Max)) like '%\ul  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\ulnone  \v%' 
 | |
| 			Or Cast(g.[Data] as VarChar(Max)) like '%\up0  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\b0  \v%' Or Cast(g.[Data] as VarChar(Max)) like '%\i0  \v%');
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 
 | |
| 		Update tblGrids Set [Data] = Cast(Replace(Cast([Data] as VarChar(Max)), '  \v', ' \v') as xml)
 | |
| 		Where Cast([Data] as VarChar(Max)) like '%  \v%'
 | |
| 			And Not (Cast([Data] as VarChar(Max)) like '%\ul  \v%' Or Cast([Data] as VarChar(Max)) like '%\ulnone  \v%' 
 | |
| 			Or Cast([Data] as VarChar(Max)) like '%\up0  \v%' Or Cast([Data] as VarChar(Max)) like '%\b0  \v%' Or Cast([Data] as VarChar(Max)) like '%\i0  \v%');
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 	
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #5:	[Contents Table] - Records with UnEscaped Hyphens
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 5;
 | |
| 	Set @Description = 'Records with UnEscaped Hyphens';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) Where c.[Text] like '%-%';
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged From Contents c with (NoLock) Where c.[Text] like '%-%';
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblContents Set [Text] = Replace([Text], '-', '\u8209?') Where [Text] like '%-%';
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #6:	[Grid Table] - Records with Escaped Hyphens
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 6;
 | |
| 	Set @Description = 'Records with Escaped Hyphens';
 | |
| 	Set @SqlTables = 'Grids';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Grids g with (NoLock) Where Cast(g.[Data] as VarChar(Max)) like '%\u8209?%'; 
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select g.ContentID, g.Config, g.DTS, g.UserID, g.LastChanged, Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText', g.[Data] as 'XmlData' 
 | |
| 		From Grids g with (NoLock) Where Cast(g.[Data] as VarChar(Max)) like '%\u8209?%';
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblGrids Set [Data] = Cast(Replace(Cast([Data] as VarChar(Max)), '\u8209?', '-') as xml) Where Cast([Data] as VarChar(Max)) like '%\u8209?%';
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #7:	[Contents Table] - Records with Double <START] tags
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 7;
 | |
| 	Set @Description = 'Records with Double <START] tags';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) left outer join Grids g with (NoLock) on g.ContentID = c.ContentID Where g.ContentID is null And c.[Text] like '%<START]<START]%';
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 
 | |
| 		Select c.ContentID, c.[Text], c.Config, c.DTS, c.UserID, c.LastChanged 
 | |
| 		From Contents c with (NoLock) left outer join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 		Where g.ContentID is null And c.[Text] like '%<START]<START]%';
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblContents  Set [Text] = Replace([Text], '<START]<START]', '<START]')  Where [Text] like '%<START]<START]%' And ContentID Not in (Select ContentID From Grids);
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #8:	[Grids/Contents Table] - Records with Double <START] tags
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 8;
 | |
| 	Set @Description = 'Records with Double <START] tags';
 | |
| 	Set @SqlTables = 'Grids/Contents';
 | |
| 	Set @FixType = 'Auto';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From Contents c with (NoLock) inner join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 	Where (c.[Text] like '%<START]<START]%' Or Cast(g.[Data] as VarChar(Max)) like '%<START]<START]%');
 | |
| 	
 | |
| 	--Select c.ContentID, c.[Text] as 'Text', Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText',  g.[Data] as 'XmlData'
 | |
| 	--From Contents c with (NoLock) inner join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 	--Where (c.[Text] like '%<START]<START]%' Or Cast(g.[Data] as VarChar(Max)) like '%<START]<START]%');
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 		
 | |
| 		Select c.ContentID, c.[Text], Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText',  g.[Data] as 'XmlData'
 | |
| 		From Contents c with (NoLock) inner join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 		Where (c.[Text] like '%<START]<START]%' Or Cast(g.[Data] as VarChar(Max)) like '%<START]<START]%');
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue   
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@IsAutoFixEnabled = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Update tblContents Set [Text] = Replace([Text], '<START]<START]', '<START]') Where [Text] like '%<START]<START]%'; 
 | |
| 		Update tblGrids Set [Data] = Cast(Replace(Cast([Data] as VarChar(Max)), '<START]<START]', '<START]') as xml) Where Cast([Data] as VarChar(Max)) like '%<START]<START]%';
 | |
| 	End
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #9:	[Contents Table] - Records with Num of <START] / [END> tags don't match
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 9;
 | |
| 	Set @Description = 'Num of <START] / [END> tags don''t match';
 | |
| 	Set @SqlTables = 'Contents';
 | |
| 	Set @FixType = 'Manual';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	With zContents as 
 | |
| 	( 
 | |
| 		Select c.ContentID, c.[Text], dbo.vefn_NumOfOccurrences(c.[Text], '<START]') as 'StartCntText', dbo.vefn_NumOfOccurrences(c.[Text], '[END>') as 'EndCntText'
 | |
| 		From Contents c with (NoLock) left outer join Grids g with (NoLock) on g.ContentID = c.ContentID Where g.ContentID is null
 | |
| 	)
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From zContents z Where z.StartCntText <> z.EndCntText;
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 		
 | |
| 		With zContents as 
 | |
| 		( 
 | |
| 			Select c.ContentID, c.[Text], dbo.vefn_NumOfOccurrences(c.[Text], '<START]') as 'StartCntText', dbo.vefn_NumOfOccurrences(c.[Text], '[END>') as 'EndCntText'
 | |
| 			From Contents c with (NoLock) left outer join Grids g with (NoLock) on g.ContentID = c.ContentID Where g.ContentID is null
 | |
| 		)
 | |
| 		Select z.* 
 | |
| 		From zContents z Where z.StartCntText <> z.EndCntText;
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue  
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	-- Data needs to be reviewed / fixed Manually
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*======================================================================================================*/
 | |
| 	-- Case/Issue #10:	[Grids/Contents Table] - Records with Num of <START] / [END> tags don't match
 | |
| 	/*======================================================================================================*/
 | |
| 	Set @IssueNum = 10;
 | |
| 	Set @Description = 'Num of <START] / [END> tags don''t match';
 | |
| 	Set @SqlTables = 'Grids/Contents';
 | |
| 	Set @FixType = 'Manual';
 | |
| 
 | |
| 
 | |
| 	-- Get Record Count for the Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	With zContents as 
 | |
| 	( 
 | |
| 		Select c.ContentID, 
 | |
| 			dbo.vefn_NumOfOccurrences(c.[Text], '<START]') as 'StartCntText', dbo.vefn_NumOfOccurrences(c.[Text], '[END>') as 'EndCntText',
 | |
| 			dbo.vefn_NumOfOccurrences(Replace(Cast(g.[Data] as VarChar(Max)),'<', '<'), '<START]') as 'StartCntXml', 
 | |
| 			dbo.vefn_NumOfOccurrences(Replace(Cast(g.[Data] as VarChar(Max)),'>', '>'), '[END>') as 'EndCntXml',
 | |
| 			c.[Text], Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText',  g.[Data] as 'XmlData'
 | |
| 		From Contents c with (NoLock) inner join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 	)
 | |
| 	Select @NumOfRecords = Count(1) 
 | |
| 	From zContents z Where (z.StartCntText <> z.EndCntText Or z.StartCntXml <> z.EndCntXml);
 | |
| 
 | |
| 	-- If Any Bad Data Records Exist, Get Record Details for the specific Case/Issue
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	If (@ShowDetails = 1 And @NumOfRecords > 0)
 | |
| 	Begin
 | |
| 		Select Concat('Case/Issue #', @IssueNum, ':  [', @SqlTables, '] - ', @Description, '  (', @NumOfRecords, ' record(s))');
 | |
| 		
 | |
| 		With zContents as 
 | |
| 		( 
 | |
| 			Select c.ContentID, 
 | |
| 				dbo.vefn_NumOfOccurrences(c.[Text], '<START]') as 'StartCntText', dbo.vefn_NumOfOccurrences(c.[Text], '[END>') as 'EndCntText',
 | |
| 				dbo.vefn_NumOfOccurrences(Replace(Cast(g.[Data] as VarChar(Max)),'<', '<'), '<START]') as 'StartCntXml', 
 | |
| 				dbo.vefn_NumOfOccurrences(Replace(Cast(g.[Data] as VarChar(Max)),'>', '>'), '[END>') as 'EndCntXml',
 | |
| 				c.[Text], Cast(g.[Data] as VarChar(Max)) as 'XmlDataAsText',  g.[Data] as 'XmlData'
 | |
| 			From Contents c with (NoLock) inner join Grids g with (NoLock) on g.ContentID = c.ContentID 
 | |
| 		)
 | |
| 		Select z.*
 | |
| 		From zContents z Where (z.StartCntText <> z.EndCntText Or z.StartCntXml <> z.EndCntXml);
 | |
| 	End
 | |
| 		
 | |
| 	-- If Enabled and Any Bad Data Records Exist, Automatically fix the bad data records for the specific Case/Issue  
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	-- Data needs to be reviewed / fixed Manually
 | |
| 
 | |
| 
 | |
| 	-- Create Results Record for the specific Case/Issue 
 | |
| 	---------------------------------------------------------------------------------------
 | |
| 	Insert Into @Results (IssueNum, SqlTables, [Description], FixType, NumOfRecords) 
 | |
| 	Values (@IssueNum, @SqlTables, @Description,  @FixType, @NumOfRecords);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	/*================================================================================================================================*/
 | |
| 	-- Return analysis/results for all of the bad data Case/Issue(s)
 | |
| 	/*================================================================================================================================*/
 | |
| 	Select IssueNum as 'Case #', SqlTables as 'SQL Tables', [Description] as 'Description', FixType as 'Type of Fix', NumOfRecords as '# of Records'
 | |
| 	From @Results  Order By IssueNum Asc;
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |