none
关于日志时间错乱,提示Sql执行错误问题 RRS feed

  • 问题

  • 这是我修改过系统时间,然后对某表进行过操作。然后备份再还原到其他电脑上。

    最后发现该表的数据不能查询。只要查询就会报以下错误提示。(也不能删除该表,也不能分离数据库)

    错误信息

    我将该数据库分离后,然后删除日志文件。再附加数据库。还是出现这个错误。

    请问该怎么解决这个问题!

    谢谢!

    附数据库备份文件

    • 已编辑 HUGO.CM 2013年4月8日 11:01
    2013年4月8日 8:15

答案

全部回复

  • DBCC CHECKDB 有什么结果呢?
    2013年4月8日 9:04
  • 消息 5030,级别 16,状态 12,第 1 行
    无法用排他锁锁定该数据库,以执行该操作。
    消息 7926,级别 16,状态 1,第 1 行
    检查语句已中止。由于无法创建数据库快照,且无法锁定数据库或表,因此无法检查该数据库。有关何时出现此行为以及有哪些解决方法的详细信息,请参阅联机丛书。有关详细信息,请参阅以前的错误。
    2013年4月8日 10:46
  • 我还原了你的数据库运行了DBCC CHECKDB发现下面的错误:

    Msg 7985, Level 16, State 2, Line 2
    System table pre-checks: Object ID 3. Could not read and latch page (1:1658) with latch type SH. Check statement terminated due to unrepairable error.

    显示这个错误是无法修复的,估计你要从旧的备份还原了。另外检查一下EVENT LOG看看有没硬件错误。


    2013年4月8日 12:19
  • 如果要从旧的备份还原话,中途会有N多数据丢失!
    2013年4月8日 12:56
  • That's why have to db full and log backups in proper schedule.
    2013年4月8日 13:08
  • 某个数据页损坏了,所以你是查询不了该表的数据

    建议LZ使用dbcc checktable语句来检查表

    如果有问题,而运行DBCC CHECKDB 的时候遇到无法锁定数据库或者表可以先drop掉所有对你的数据库的连接

    然后再运行dbcc checkdb 来修复数据库


    给我写信: QQ我:点击这里给我发消息

    2013年4月8日 16:11
  • -- 应用数据库修复举例
    declare @databasename varchar(255)
    set @databasename='gposdb'------一定要手工输入
    ---------执行一般性修复还存在问题时,进行允许数据丢失的修复 要求在单用户下进行,此时请退出中间层,客户端,sql的其他模块,所有功能退出,在查询分析器master里设置数据库为单用户
    
    exec sp_dboption @databasename, N'single', N'true'
    
    -----在查询分析器master里,进行修复数据库
    dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
    dbcc checkdb(@databasename,REPAIR_REBUILD)
    ------还原数据库状态
    exec sp_dboption @databasename, N'single', N'false'
    


    给我写信: QQ我:点击这里给我发消息

    2013年4月8日 16:12
  • 现在这个数据库不能删除、分离、脱机。而只能备份、还原。

    而出错的那张表,也不能删除、查询

    根据您提供的语句报出以下错误:

    消息 7985,级别 16,状态 2,第 8 行
    系统表预检查: 对象 ID 3。无法使用闩锁类型 SH 读取并闩锁页 (1:1658)。由于不可修复的错误,CHECK 语句已终止。
    TestPMS的 DBCC 结果。
    消息 5233,级别 16,状态 98,第 8 行
    表错误: 分配单元 ID 196608,页 (1:1658)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值是 29362185 和 -4。
    CHECKDB 发现有 0 个分配错误和 1 个一致性错误与任何单个的对象都没有关联。
    CHECKDB 在数据库 'TestPMS' 中发现 0 个分配错误和 1 个一致性错误。

    2013年4月9日 1:19
  • Sounds system table corruption, tried run 'dbcc checkdb' with repair option?
    2013年4月9日 1:52
  • 这个错误DBCC CHECKDB是无法修复的,因为系统元数据出问题了。

    2013年4月9日 3:55
  • 不知道LZ的数据库有没有显示置疑

    最坏的打算:把数据库里的数据全部导出来,然后导入到另一个库里

    要分离,脱机只能停SQL服务了

    可以看一下这篇文章:

    http://www.cnblogs.com/dudu/archive/2007/02/08/645191.html#2652443


    给我写信: QQ我:点击这里给我发消息

    2013年4月9日 11:26
  • 我现在解决办法是创建一张一样表结构的新表,然后修改所有相关代码!
    2013年4月9日 11:54