This commit is contained in:
@@ -0,0 +1,500 @@
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user