none
无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。 RRS feed

  • 问题

  • 我在附加数据库的时候
    报错无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。

    附加使用的语句:
    USE master;
    GO
    sp_detach_db Need;
    GO
    -- Get the SQL Server data path
                     
    -- Execute CREATE DATABASE FOR ATTACH statement
    EXEC ('CREATE DATABASE Need
          ON (FILENAME = '''+ N'F:\Need\' + 'Need.mdf'')
          FOR ATTACH');
    GO

    2009年9月29日 2:20

答案

  • 把分离之前的日志文件也复制过来一齐附加嘛
    从错误提示看, 应该是你的日志文件中还包括有用的数据, 这些数据还没有正确写回数据文件, 导致附加失败.

    这种情况最好能找回之前的日志文件, 如果找不到, 应急的方法是新建一个数据库, 将数据库设置为 offline, 然后用附加失败的数据文件替换掉新建库的数据文件, 然后将数据库设置为应急恢复模式, 这样一般就能读数据了
    ALTER DATABASE DB_name SET EMERGENCY

    • 已标记为答案 胡冰 2009年9月29日 5:59
    2009年9月29日 4:43

全部回复

  • 这个错误,怎么解决噢?
    请高手赐教
    2009年9月29日 2:20
  • Tried with sp_attach_db?
    2009年9月29日 2:35
  • Why detach database by the way? Why don't do backup/restore instead?
    2009年9月29日 2:37
  • EXEC sp_detach_db @dbname = 'Need';
    EXEC sp_attach_single_file_db @dbname = 'Need',
        @physname = N'F:\Need\Need.mdf';

    测试过,不行
    文件激活失败。物理文件名称'E:\DB\Need_log.ldf'可能不正确。
    无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。
    消息 1813,级别 16,状态 2,第 1 行
    无法打开新数据库 'Need'。CREATE DATABASE 中止。

    这是错误信息,对了RMIAO可以加我MSN吗?我的MSN:babykingmax@hotmail.com
    给我一些在线指导?
    2009年9月29日 2:38
  • Why detach database by the way? Why don't do backup/restore instead?


    因为没有备份数据库,可以提供恢复,所以不得不这样进行附加操作!
    2009年9月29日 2:40
  • Why attach single file? Did you delete log file? If so, have to rebuild log first.
    2009年9月29日 2:52
  • Why attach single file? Did you delete log file? If so, have to rebuild log first.

    日志文件丢失了!郁闷!
    怎么rebuild log?
    2009年9月29日 2:53
  • Why detach database by the way? Why don't do backup/restore instead?


    因为没有备份数据库,可以提供恢复,所以不得不这样进行附加操作!
    The point is you shouldn't detach db in first place. 
    2009年9月29日 2:54
  • 好的
    我去看看
    谢谢
    2009年9月29日 3:07
  • 把分离之前的日志文件也复制过来一齐附加嘛
    从错误提示看, 应该是你的日志文件中还包括有用的数据, 这些数据还没有正确写回数据文件, 导致附加失败.

    这种情况最好能找回之前的日志文件, 如果找不到, 应急的方法是新建一个数据库, 将数据库设置为 offline, 然后用附加失败的数据文件替换掉新建库的数据文件, 然后将数据库设置为应急恢复模式, 这样一般就能读数据了
    ALTER DATABASE DB_name SET EMERGENCY

    • 已标记为答案 胡冰 2009年9月29日 5:59
    2009年9月29日 4:43
  • 数据库可以读之后, 你可以尝试再将其设置为 ONLINE 模式, 如果能成功, 那再 DBCC CHECKDB 一次, 确认没有问题
    如果无法ONLINE, 那么你大概就只好新建库, 然后把应急模式的库的数据导到新建的库了
    2009年9月29日 4:44
  • 邹建:
          大哥谢谢啊!我已经可以读出数据了!
    2009年9月29日 5:30
  • ALTER DATABASE Need SET ONLINE ;
    ONLINE 的时候
    数据库就停在哪儿很慢很慢,不知道什么时候会好!
    2009年9月29日 5:51