刪除SQL Server中“壞表”的方法
SQL Server 數(shù)據(jù)庫(kù)中某些無(wú)法使用的表很讓人頭疼,那么,如何才能刪除這些“壞表”呢?下文將為您介紹這種方法,供您參考。
在一些網(wǎng)站或者軟件系統(tǒng)中,由于安全或者程序異常等問題,可能會(huì)在SQL Server 2000中造成一個(gè)異常問題:在企業(yè)管理器中打開數(shù)據(jù)庫(kù)發(fā)現(xiàn)有一些“壞表”,即無(wú)法使用,也無(wú)法正常刪除。其原因往往是因?yàn)樵趪L試建表的過(guò)程中,只向數(shù)據(jù)庫(kù)服務(wù)器的系統(tǒng)表sysobjects中寫入了類型為“U”的記錄,卻并未真正在數(shù)據(jù)庫(kù)中成功創(chuàng)建該表的實(shí)體。ok,解決問題有思路了:
假設(shè)“壞表”的表名為cmd,那么我們?cè)诓樵兎治銎髦袑?duì)當(dāng)前的數(shù)據(jù)庫(kù)寫一個(gè)sql語(yǔ)句:
delete from sysobjects where [name]='cmd' and xtype='U'
按F5執(zhí)行,可能會(huì)碰到一個(gè)錯(cuò)誤提示:“未啟用對(duì)系統(tǒng)目錄的特殊更新。系統(tǒng)管理員必須重新配置 SQL Server 以允許這種操作。” 解決這個(gè)小小的問題的方法是:打開mssql server 屬性---》服務(wù)器選項(xiàng)----》啟用對(duì)系統(tǒng)目錄的特殊更新(允許對(duì)系統(tǒng)目錄進(jìn)行直接修改) 即可。之后重新在查詢分析器中執(zhí)行剛才的sql語(yǔ)句。
執(zhí)行成功后。在企業(yè)管理器中會(huì)發(fā)現(xiàn)那個(gè)壞表已經(jīng)不存在了。
[ 注:SQL2005中,由于微軟做了重大調(diào)整,正常情況下不允許對(duì)系統(tǒng)表進(jìn)行即席更新操作。所以本文提到的問題目前僅適用于SQL2000數(shù)據(jù)庫(kù),敬請(qǐng)注意 ]