| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | -- Licensed Materials - Property of IBM---- BI and PM: CM---- (C) Copyright IBM Corp. 2008, 2009---- US Government Users Restricted Rights - Use, duplication or disclosure-- restricted by GSA ADP Schedule Contract with IBM Corp.-- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.-- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).CREATE TABLE #CMCHECKCONSISTENCY (INCONSISTENCY INT not null, DESCRIPTION varchar(255), CMID int)GODROP PROC getInconsistentCMIDsGO-- CMSCRIPT_SKIP_COMMANDDROP PROC printInconsistentCMIDsGOCREATE PROCEDURE getInconsistentCMIDs ASDECLARE @tablename char(20)DECLARE @CMID intDECLARE @columnname varchar(30)DECLARE @strsql Nvarchar(500)SET NOCOUNT ONDECLARE tables CURSOR FOR    SELECT TABLE_NAME from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME = 'CMID' and TABLE_NAME like 'CM%' and TABLE_SCHEMA = user_name()OPEN tablesFETCH NEXT FROM tables INTO @tablenameWHILE @@fetch_status = 0    BEGIN        SET @strsql = 'insert into #CMCHECKCONSISTENCY (INCONSISTENCY,DESCRIPTION , CMID) select 1,''' + @tablename + ''', CMID from ' + @tablename + ' where CMID not in (select CMID from CMOBJECTS)'        EXEC sp_executesql @strsql                FETCH NEXT FROM tables INTO @tablename    ENDCLOSE tablesDEALLOCATE tablesSET @strsql = 'insert into #CMCHECKCONSISTENCY (INCONSISTENCY,DESCRIPTION , CMID) select 2, ''CMOBJECTS'', CMID from CMOBJECTS where CMID not in (select CMID from CMOBJNAMES) or CMID not in (select CMID from CMPOLICIES)'EXEC sp_executesql @strsqlSET @strsql = 'insert into #CMCHECKCONSISTENCY (INCONSISTENCY,DESCRIPTION , CMID) select 3, ''CMSTOREIDS'', CMID from CMSTOREIDS where STOREID is null'EXEC sp_executesql @strsqlSET @strsql = 'insert into #CMCHECKCONSISTENCY (INCONSISTENCY,DESCRIPTION , CMID) select 4, ''CMSTOREIDS'', s.CMID from CMSTOREIDS s where UPPER(s.STOREID) in (select UPPERSTOREIDS.STOREID from (select b.CMID, UPPER(b.STOREID) as STOREID from CMSTOREIDS b) as UPPERSTOREIDS group by UPPERSTOREIDS.STOREID having COUNT(UPPERSTOREIDS.CMID) > 1)'EXEC sp_executesql @strsqlSET NOCOUNT OFFGO-- CMSCRIPT_SKIP_COMMANDCREATE PROCEDURE printInconsistentCMIDs ASDECLARE @tablename char(20)DECLARE @CMID intDECLARE @columnname varchar(30)DECLARE @strsql Nvarchar(500)SET NOCOUNT ONDECLARE summary CURSOR FOR    SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 1 ORDER BY DESCRIPTION, CMID ASCOPEN summaryFETCH NEXT FROM summary INTO @tablename, @CMIDIF @@fetch_status = 0   BEGIN      PRINT 'CMIDs not in CMOBJECTS table'      PRINT 'Table               Orphaned CMID'      PRINT '-----               -------------'   ENDWHILE @@fetch_status = 0    BEGIN        PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))        FETCH NEXT FROM summary INTO @tablename, @CMID    ENDCLOSE summaryDEALLOCATE summaryDECLARE summary CURSOR FOR    SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 2 ORDER BY DESCRIPTION, CMID ASCOPEN summaryFETCH NEXT FROM summary INTO @tablename, @CMIDIF @@fetch_status = 0   BEGIN      PRINT ''      PRINT 'CMIDs in CMOBJECTS table but not in CMOBJNAMES or CMPOLICIES tables'      PRINT 'Table               CMID'      PRINT '-----               -------------'   ENDWHILE @@fetch_status = 0    BEGIN        PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))        FETCH NEXT FROM summary INTO @tablename, @CMID    ENDCLOSE summaryDEALLOCATE summaryDECLARE summary CURSOR FOR    SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 4 ORDER BY DESCRIPTION, CMID ASCOPEN summaryFETCH NEXT FROM summary INTO @tablename, @CMIDIF @@fetch_status = 0   BEGIN      PRINT ''      PRINT 'CMIDs in CMSTOREIDS table which have non-unique STOREIDs'      PRINT 'Table               CMID'      PRINT '-----               -------------'   ENDWHILE @@fetch_status = 0    BEGIN        PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))        FETCH NEXT FROM summary INTO @tablename, @CMID    ENDCLOSE summaryDEALLOCATE summaryDECLARE summary CURSOR FOR    SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 3 ORDER BY DESCRIPTION, CMID ASCOPEN summaryFETCH NEXT FROM summary INTO @tablename, @CMIDIF @@fetch_status = 0   BEGIN      PRINT ''      PRINT 'CMIDs in CMSTOREIDS table where STOREID is null'      PRINT 'Table               CMID'      PRINT '-----               -------------'   ENDWHILE @@fetch_status = 0    BEGIN        PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))        FETCH NEXT FROM summary INTO @tablename, @CMID    ENDCLOSE summaryDEALLOCATE summarySET NOCOUNT OFFGOEXEC getInconsistentCMIDsGO-- CMSCRIPT_SKIP_COMMANDEXEC printInconsistentCMIDsGODROP PROC getInconsistentCMIDsGO-- CMSCRIPT_SKIP_COMMANDDROP PROC printInconsistentCMIDsGO-- CMSCRIPT_SKIP_COMMANDDROP TABLE #CMCHECKCONSISTENCYGO
 |