大家好,想问个基础问题。就是在修复数据库的时候会提示x个一致性错误和x个分配错误。我一直都没弄明白这个一致性错误和分配错误到底指的是哪种错误?请大家指教

解决方案 »

  1.   

    通常指的是数据页,区或者index等发生数据错误或者一致性错误。比如异常宕机,断电(无UPS)等情况导致数据库发生此类错误。您还是看联机丛书得了。
      

  2.   

    解决的方式通常是做一致性的检查并选择不同级别的修复。
    比如dbcc checkdb 或者checktable,对于生产库建议无异常情况下先选择on physical参数检查。
      

  3.   

    DBCC CHECKDB 看看.
    DBCC CHECKDB   重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。 use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态 
      然后执行 DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。 
      

  4.   

    还有这个:
    出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法 先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作 alter database [@error_database_name] set single_user 修复出现不一致错误的表 dbcc checktable('@error_table_name',repair_allow_data_loss) 或者可惜选择修复出现不一致错误的小型数据库名 dbcc checkdb('@error_database_name',repair_allow_data_loss) 
    alter database [@error_database_name] set multi_user 
    CHECKDB 有3个参数: 
    repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误, 
    以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。 
    修复操作可以在用户事务下完成以允许用户回滚所做的更改。 
    如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。 
    如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。 
    修复完成后,请备份数据库。 
    repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。 
    这些修复可以很快完成,并且不会有丢失数据的危险。 
    repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。 
    执行这些修复时不会有丢失数据的危险。 
      

  5.   

    DBCC CHECKALLOC 将检查数据库中所有页的分配,而不管其所属的页类型或对象类型。它还可验证各种内部结构,这些结构可用于跟踪这些页以及它们之间的关系
    -- Check the current database.
    DBCC CHECKALLOC;--当前数据
    GO
    -- Check the AdventureWorks database.
    DBCC CHECKALLOC (AdventureWorks);--指定数据库
    GO