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)
- GO
- DROP PROC getInconsistentCMIDs
- GO
- -- CMSCRIPT_SKIP_COMMAND
- DROP PROC printInconsistentCMIDs
- GO
- CREATE PROCEDURE getInconsistentCMIDs AS
- DECLARE @tablename char(20)
- DECLARE @CMID int
- DECLARE @columnname varchar(30)
- DECLARE @strsql Nvarchar(500)
- SET NOCOUNT ON
- DECLARE 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 tables
- FETCH NEXT FROM tables INTO @tablename
- WHILE @@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
- END
- CLOSE tables
- DEALLOCATE tables
- SET @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 @strsql
- SET @strsql = 'insert into #CMCHECKCONSISTENCY (INCONSISTENCY,DESCRIPTION , CMID) select 3, ''CMSTOREIDS'', CMID from CMSTOREIDS where STOREID is null'
- EXEC sp_executesql @strsql
- SET @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 @strsql
- SET NOCOUNT OFF
- GO
- -- CMSCRIPT_SKIP_COMMAND
- CREATE PROCEDURE printInconsistentCMIDs AS
- DECLARE @tablename char(20)
- DECLARE @CMID int
- DECLARE @columnname varchar(30)
- DECLARE @strsql Nvarchar(500)
- SET NOCOUNT ON
- DECLARE summary CURSOR FOR
- SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 1 ORDER BY DESCRIPTION, CMID ASC
- OPEN summary
- FETCH NEXT FROM summary INTO @tablename, @CMID
- IF @@fetch_status = 0
- BEGIN
- PRINT 'CMIDs not in CMOBJECTS table'
- PRINT 'Table Orphaned CMID'
- PRINT '----- -------------'
- END
- WHILE @@fetch_status = 0
- BEGIN
- PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))
- FETCH NEXT FROM summary INTO @tablename, @CMID
- END
- CLOSE summary
- DEALLOCATE summary
- DECLARE summary CURSOR FOR
- SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 2 ORDER BY DESCRIPTION, CMID ASC
- OPEN summary
- FETCH NEXT FROM summary INTO @tablename, @CMID
- IF @@fetch_status = 0
- BEGIN
- PRINT ''
- PRINT 'CMIDs in CMOBJECTS table but not in CMOBJNAMES or CMPOLICIES tables'
- PRINT 'Table CMID'
- PRINT '----- -------------'
- END
- WHILE @@fetch_status = 0
- BEGIN
- PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))
- FETCH NEXT FROM summary INTO @tablename, @CMID
- END
- CLOSE summary
- DEALLOCATE summary
- DECLARE summary CURSOR FOR
- SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 4 ORDER BY DESCRIPTION, CMID ASC
- OPEN summary
- FETCH NEXT FROM summary INTO @tablename, @CMID
- IF @@fetch_status = 0
- BEGIN
- PRINT ''
- PRINT 'CMIDs in CMSTOREIDS table which have non-unique STOREIDs'
- PRINT 'Table CMID'
- PRINT '----- -------------'
- END
- WHILE @@fetch_status = 0
- BEGIN
- PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))
- FETCH NEXT FROM summary INTO @tablename, @CMID
- END
- CLOSE summary
- DEALLOCATE summary
- DECLARE summary CURSOR FOR
- SELECT DESCRIPTION, CMID FROM #CMCHECKCONSISTENCY WHERE INCONSISTENCY = 3 ORDER BY DESCRIPTION, CMID ASC
- OPEN summary
- FETCH NEXT FROM summary INTO @tablename, @CMID
- IF @@fetch_status = 0
- BEGIN
- PRINT ''
- PRINT 'CMIDs in CMSTOREIDS table where STOREID is null'
- PRINT 'Table CMID'
- PRINT '----- -------------'
- END
- WHILE @@fetch_status = 0
- BEGIN
- PRINT @tablename + RTRIM(CONVERT(varchar(10), @CMID))
- FETCH NEXT FROM summary INTO @tablename, @CMID
- END
- CLOSE summary
- DEALLOCATE summary
- SET NOCOUNT OFF
- GO
- EXEC getInconsistentCMIDs
- GO
- -- CMSCRIPT_SKIP_COMMAND
- EXEC printInconsistentCMIDs
- GO
- DROP PROC getInconsistentCMIDs
- GO
- -- CMSCRIPT_SKIP_COMMAND
- DROP PROC printInconsistentCMIDs
- GO
- -- CMSCRIPT_SKIP_COMMAND
- DROP TABLE #CMCHECKCONSISTENCY
- GO
|