Friday 15 January 2010

Dropping a Corrupt Table from Sybase

1> declare @obj int
2> select @obj = id from sysobjects where name = 'dddd'
3> delete syscolumns where id = @obj
4> delete sysindexes where id = @obj
5> delete sysobjects where id in (select constrid from sysconstraints where tableid = @obj)
6> delete sysdepends where depid = @obj
7> delete syskeys where id = @obj
8> delete syskeys where depid = @obj
9> delete sysprotects where id = @obj
10> delete sysconstraints where tableid = @obj
11> delete sysreferences where tableid = @obj
12> delete sysattributes where object = @obj
delete syspartitions where id = @obj
13> 14> delete sysstatistics where id = @obj
15> delete systabstats where id = @obj
16> delete syscomments where id in (select id from sysobjects where deltrig = @obj)
17> delete syscomments where id in (select id from sysobjects where instrig = @obj)
18> delete syscomments where id in (select id from sysobjects where updtrig = @obj)
19> delete sysprocedures where id in (select id from sysobjects where deltrig = @obj)
20> delete sysprocedures where id in (select id from sysobjects where instrig = @obj)
21> delete sysobjects where deltrig = @obj
22> delete sysobjects where instrig = @obj
23> delete sysobjects where updtrig = @obj
24> delete sysobjects where id = @obj
25> delete sysstatistics where id = @obj
26> delete systabstats where id = @obj
delete syspartitionkeys where id = @obj
27>
28>
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(12 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
(0 rows affected)
1> commit tran
2>


Finallly dont forget to destroy the object descriptor from the metadata cache :

1> select object_id('dddd')
2>
-----------
828526954
(1 row affected)
1> sp_monitorconfig 'open objects'
2>
Usage information at date and time: Apr 21 2009 9:54AM.
Name Num_free Num_active Pct_act Max_Used Reuse_cnt
------------------------- ----------- ----------- ------- ----------- -----------
number of open objects 948 52 5.20 52 0
(1 row affected)
(return status = 0)
1> dbcc cacheremove(5,828526954)
2>
1> sp_monitorconfig 'open objects'
2>
Usage information at date and time: Apr 21 2009 9:54AM.
Name Num_free Num_active Pct_act Max_Used Reuse_cnt
------------------------- ----------- ----------- ------- ----------- -----------
number of open objects 949 51 5.10 52 0
(1 row affected)
(return status = 0)
1> select object_id('dddd')
2>
-----------
NULL
(1 row affected)
1>

1 comment:

  1. Congratulations on your blog. It's very impressive and has many areas which are uncovered on many forums.

    Good posts. Add dbcc extentzap() for complete object deletion.

    All the best!

    Cheers,
    Abhijit

    ReplyDelete