ERROR INTERACTIVE MODE
isql /Usa /P
create procedure CatalogCheck as
/* Check syscolumns <---> sysobjects on "id" */
if exists (select *
from syscolumns
where id not in (select id
from sysobjects))
print "A column exists in syscolumns with no associated object in
sysobjects"
/* Check syscolumns <---> systypes on "usertype" */
if exists (select *
from syscolumns
where usertype not in (select usertype
from systypes))
print "A column exists in syscolumns with no associated type in systypes"
* Check sysobjects <---> syscolumns on "id" for views */
if exists (select *
from sysobjects
where type in ('v', 'V')
and id not in (select id
from syscolumns))
print "A view exists in sysobjects with no columns in syscolumns"
/* Check sysobjects <---> sysprocedures on "id" for views */
if exists (select *
from sysobjects
where type in ('v', 'V')
and id not in (select id
from sysprocedures))
print "A view exists in sysobjects with no entry in sysprocedures"
/* Check sysobjects <---> sysprocedures on "id" for
procedures */
if exists (select *
from sysobjects
where type in ('p', 'P')
and id not in (select id
from sysprocedures))
print "A procedure exists in sysobjects with no entry in sysprocedures"
/* Check sysobjects <---> sysprocedures on "id" for rules &
defaults */
if exists (select *
from sysobjects
where type in ('d', 'D', 'r', 'R')
and id not in (select id
from sysprocedures))
print "A rule and/or default exists in sysobjects with no entry in
sysprocedures"
/* Check sysobjects <---> syscolumns on "id" for tables */
if exists (select *
from sysobjects
where type in ('s', 'S', 'u', 'U')
and id not in (select id
from syscolumns))
print "A table exists in sysobjects with no entry in syscolumns"
/* Check sysobjects <---> sysindexes on "id" for tables */
if exists (select *
from sysobjects
where type in ('s', 'S', 'u', 'U')
and id not in (select id
from sysindexes))
print "A table exists in sysobjects with no entry in sysindexes"
/* Check sysindexes <---> sysobjects on "id" */
if exists (select *
from sysindexes
where id not in (select id
from sysobjects))
print "An entry exists in sysindexes with no entry in sysobjects"
/* Check sysindexes <---> syssegments on "segment" */
if exists (select *
from sysindexes
where segment not in (select segment
from syssegments))
print "An entry in sysindexes has a 'segment' value with no entry in
syssegments"
/* Check sysprocedures <---> sysobjects on "id" */
if exists (select *
from sysprocedures
where id not in (select id
from sysobjects))
print "An entry exists in sysprocedures with no entry in sysobjects"
print "Catalog Check complete"
go