SQL Server:列可空性不一致

时间:2008-09-16 03:42:08

标签: sql-server restore

我有一个只能使用

恢复的SQL Server 2005数据库
Restore Database The_DB_Name
From Disk = 'C:\etc\etc'
With Continue_After_Error

我被告知源数据库很好。还原报告

  

警告:列可为空   检测到的不一致性   索引的元数据   “IDX_Comp_CompanyId”(index_id = 2)   在数据库中的对象ID nnnnn上   “The_DB_Name”。该指数可能是   腐败。运行DBCC CHECKTABLE进行验证   一致性。

DBCC CHECKTABLE (Company)

给出

  

Msg 8967,Level 16,State 216,Line 1   DBCC中发生内部错误   这妨碍了进一步处理。   联系客户支持服务。

     

Msg 8921,Level 16,State 1,Line 1
  检查已终止。失败了   在收集事实时检测到   可能是tempdb空间不足或者   系统表不一致。校验   以前的错误。

Alter Index IDX_Comp_CompanyId On dbo.Company
Rebuild

给了我

  

Msg 824,Level 24,State 2,Line 1
  SQL Server检测到逻辑   基于一致性的I / O错误:不正确   pageid(预期1:77467;实际   45:2097184)。它发生在阅读期间   页面(1:77467)在数据库ID 20中   在文件中偏移0x00000025d36000   'C:\等\ etc.mdf'。其他消息   在SQL Server错误日志或系统中   事件日志可能会提供更多细节。   这是一个严重错误的情况   威胁数据库完整性并且必须   立即纠正。完成一个   完整的数据库一致性检查(DBCC   CHECKDB)。此错误可能是由   很多因素;欲获得更多信息,   请参阅SQL Server联机丛书。

我有多麻烦?

1 个答案:

答案 0 :(得分:3)

索引中的损坏并不像基表中的损坏那么糟糕,因为可以重建索引。

比较源数据库和目标数据库之间的表和索引定义。 检查两个服务器的版本。 (恢复到服务器时备份是否自动升级) 删除并重新创建索引并重新运行CheckTable。