人妻无码中文字幕永久在线,99RE6这里有精品热视频,国产成人综合色就色综合 ,蜜臀av在线观看

新聞建站cms系統(tǒng)、政府cms系統(tǒng)定制開發(fā)

廣州網(wǎng)站建設(shè)公司-閱速公司

asp.net新聞發(fā)布系統(tǒng)、報紙數(shù)字報系統(tǒng)方案
/
http://www.jdki.com.cn/
廣州網(wǎng)站建設(shè)公司

sqlserver數(shù)據(jù)庫

sql server系統(tǒng)表損壞處理方法sysobjects、sysindexes、syscolumns損壞的修復(fù)方法

發(fā)布時間:2024/7/7 17:02:51  作者:Admin  閱讀:139  

廣告:

sql server 系統(tǒng)表損壞處理方法ysobjects、sysindexes、syscolumns損壞的修復(fù)方法

sql server數(shù)據(jù)庫中三張重要的系統(tǒng)表:
sysobjects:在數(shù)據(jù)庫內(nèi)創(chuàng)建的每個對象(約束、默認值、日志、規(guī)則、存儲過程等)在表中占一行。
sysindexes:數(shù)據(jù)庫中的每個索引和表在表中各占一行。
syscolumns:每個表和視圖中的每列在表中占一行,存儲過程中的每個參數(shù)在表中也占一行。

這三張表用ID(表ID)字段關(guān)聯(lián)。這三張系統(tǒng)表一旦損壞,與之對應(yīng)數(shù)據(jù)庫對象將無法訪問,其作用相當于DOS中的“文件分配表” 。

系統(tǒng)表損壞的癥狀
1 用 DBCC CHECKDB 攜帶任何參數(shù)都無法修復(fù)數(shù)據(jù)庫,也就是說:DBCC CHECKDB對這個帳套根本不起作用;
2 無法執(zhí)行如下操作:
select * from sysobjects
select * from sysindexes
select * from syscolumns ;
3 無法用SQL server DTS或其他SQL 腳本導庫工具進行導庫,導庫的中途失敗,報告:連接中斷;未能讀取并閂鎖頁;在企業(yè)管理器或查詢分析器中,部分用戶數(shù)據(jù)表無法訪問。
未能讀取并閂鎖頁 (1:29262)(用閂鎖類型 SH)。SYSOBJECTS 失敗。
處理方法:
第一步:處理可以訪問的數(shù)據(jù)表
用SQL server DTS把能夠訪問的用戶數(shù)據(jù)表導入一個新的DataBase
第二步:處理不可訪問的數(shù)據(jù)表:
刪除sysobjects、sysindexes、syscolumns 表錯誤的記錄;根據(jù)“錯誤記錄的ID” ,重建系統(tǒng)表記錄;

找出哪些表不可訪問:

use datatest
DECLARE @TbName VARCHAR(80)
DECLARE FindErrTable SCROLL CURSOR FOR
select name from sysobjects where xtype='u' order by name
OPEN FindErrTable
FETCH FindErrTable INTO @TbName
WHILE @@FETCH_STATUS<>-1
BEGIN
print @TbName
exec('select top 1 * from' + @TbName)
FETCH FindErrTable INTO @TbName
END
PRINT 'Scan Complate'
CLOSE FindErrTable
DEALLOCATE FindErrTable

在聲明游標的記錄集中屏蔽T_voucher 表。即:

DECLARE FindErrTable SCROLL CURSOR FOR
select name from AisNew.dbo. sysobjects where xtype=‘u’ and name != ‘t_voucher’order by name

修改完畢,繼續(xù)執(zhí)行此SQL。如此反復(fù),就能夠不斷報告出sysobjects中那些表不能訪問。


找出系統(tǒng)表中錯誤記錄的ID

SELECT id FROM datatest.dbo.sysobjects WHERE name=‘ t_voucher’

( 說明:通常即使sysobjects表損壞,不能做 select * from sysobjects 查詢,但是可以做 select ID,name from sysobjects 查詢。如果select ID,name from sysobjects 查詢也不能執(zhí)行,可以對照AisNew和datatest兩個數(shù)據(jù)庫中的同名表: syscolumns。根據(jù)AisNew.dbo.syscolumns表中T_voucher所占字段的個數(shù)以及各個字段的名稱,在datatest.dbo.syscolumns中找出T_voucher所對應(yīng)的記錄,由此獲得T_voucher在datatest數(shù)據(jù)庫的系統(tǒng)表中所分配的ID。)

DELETE datatest.dbo.sysobjects WHERE id=123
DELETE datatest.dbo.sysindexes WHERE id=123
DELETE datatest.dbo.syscolumns WHERE id=123

重建系統(tǒng)表:
–重建datatest.dbo.sysobjects表中T_voucher表對應(yīng)的記錄:
INSERT INTO datatest.dbo.sysobjects
(name,id,xtype,uid,info,status,base_schema_ver,replinfo,parent_obj,crdate,ftcatid)
SELECT
‘t_voucher_b’,123,xtype,uid,info,status,base_schema_ver,replinfo,parent_obj,crdate,ftcatid
FROM AisNew.dbo. sysobjects WHERE id=456

–重建datatest.dbo.sysindexes表中t_voucher表對應(yīng)的記錄:
INSERT INTO datatest.dbo.sysindexes
(id,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,rowmodctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,reserved2,FirstIAM,impid,lockflags,pgmodctr,keys,name,statblob)
SELECT
123,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,rowmodctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,reserved2,FirstIAM,impid,lockflags,pgmodctr,keys,name,statblob
FROM AisNew.dbo.sysindexes WHERE id=456

–重建datatest.dbo.syscolumns表中t_voucher表對應(yīng)的記錄:
INSERT INTO datatest.dbo.syscolumns
(name,id,xtype,typestat,xusertype,length,xprec,xscale,colid,xoffset,bitpos,reserved,colstat,cdefault,domain,number,colorderby,autoval,offset,collationid,language)
SELECT
name,123,xtype,typestat,xusertype,length,xprec,xscale,colid,xoffset,bitpos,reserved,colstat,cdefault,domain,number,colORDERBY,autoval,offset,collationid,language
FROM AisNew.dbo.syscolumns WHERE id=456

語句請根據(jù)實際情況調(diào)整。

廣告:

相關(guān)文章
系統(tǒng)表
sysobjects
cms新聞系統(tǒng)購買咨詢
掃描關(guān)注 廣州閱速軟件科技有限公司
掃描關(guān)注 廣州閱速科技