数据库目录问题||数据库中损坏的内部表

问题描述 投票:0回答:0

运行的时候发现了这个问题

dbbc checkdb
.

它引发了损坏错误,所以我们继续对数据库进行 dbcc 检查目录,结果是

消息 3852,级别 16,状态 1,第 1 行
sys.objects (type=IT) 中的行 (object_id=160237313) 在 sys.indexes 中没有匹配的行 (object_id=160237313,index_id=0)。

消息 3852,级别 16,状态 1,第 1 行
sys.objects(type=IT)中的行(object_id=160237313)在 sys.columns 中没有匹配的行(object_id=160237313,column_id=1)

消息 3857,级别 16,状态 1,第 1 行
属性 (internal_type=NULL,parent_id=NULL,parent_minor_id=NULL) 是必需的,但在 sys.internal_tables 中缺少行 (object_id=160237313)。

我尝试了多种方法,例如修复重建和恢复数据丢失,但没有解决这个问题

问题是由于

select *
from sys.internal_tables 
where parent_id is null

导致

name    object_id   principal_id    schema_id   parent_object_id    type    type_desc   create_date modify_date is_ms_shipped   is_published    is_schema_published internal_type   internal_type_desc  parent_id   parent_minor_id lob_data_space_id   filestream_data_space_id
queue_messages_144237256    160237313   NULL    4   144237256   IT  INTERNAL_TABLE  2023-02-25 16:07:28.660 2023-02-25 16:07:28.660 0   0   0   NULL    NULL    NULL    NULL    0   NULL

ss1ss2

有什么办法可以恢复这个数据库吗?

任何改变系统表的方法,这似乎是来自服务代理的队列消息

dbcc checkdb repair_allow_data_loss
dbcc checkdb repair_rebuild
sql sql-server database database-administration sql-server-2017
© www.soinside.com 2019 - 2024. All rights reserved.