日期:2014-05-18  浏览次数:20372 次

使用如下方法附加,一个表丢失但在查询分析器可看到
操作数据库突然发生错误,再次打开企业管理器,该数据库置疑,于是我就分离了数据库,但是我使用附加操作就不行了,说什么:19140:808:1错误.

然后我使用了如下的方法来附加数据库:

如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息      
    服务器:       消息       1813,级别       16,状态       2,行       1      
    未能打开新数据库       'test '。CREATE       DATABASE       将终止。      
    设备激活错误。物理文件名       'd:\test_log.LDF '       可能有误。      
    怎么办呢?别着急,下面我们举例说明恢复办法。      
    A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL       Server       Enterprise       Manager里面建立。      
    B.停掉数据库服务器。      
    C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。      
    D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。      
    E.设置数据库允许直接操作系统表。此操作可以在SQL       Server       Enterprise       Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。      
    use       master      
    go      
    sp_configure       'allow       updates ',1      
    go          
    reconfigure       with       override      
    go      
    F.设置test为紧急修复模式      
    update       sysdatabases       set       status=-32768       where       dbid=DB_ID( 'test ')      
    此时可以在SQL       Server       Enterprise       Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表      
    G.下面执行真正的恢复操作,重建数据库日志文件      
    dbcc       rebuild_log( 'test ', 'C:\Program       Files\Microsoft       SQL       Server\MSSQL\Data\test_log.ldf ')      
    执行过程中,如果遇到下列提示信息:      
    服务器:       消息       5030,级别       16,状态       1,行       1      
    未能排它地锁定数据库以执行该操作。      
    DBCC       执行完毕。如果       DBCC       输出了错误信息,请与系统管理员联系。      
    说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL       Server       Enterprise       Manager打开了test库的系统表,那么退出SQL       Server       Enterprise       Manager就可以了。      
    正确执行完成的提示应该类似于:      
    警告:       数据库       'test '       的日志已重建。已失去事务的一致性。应运行       DBCC       CHECKDB       以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。      
    DBCC       执行完毕。如果       DBC