1.若仅有mdf文件而没有了日志文件请用
sp_attach_single_file_db 来回复数据库示例
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_attach_single_file_db @dbname = 'pubs', 
  @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
--
2.如果还是不行,你就新建一个同名的数据库,然后分离,将现在的mdf文件拷贝回去,看能不能恢复!

解决方案 »

  1.   

    1.新建一个同名的数据库(数据文件与原来的要一致)
    2.再停掉sql server(注意不要分离数据库)
    3.用原数据库的数据文件覆盖掉这个新建的数据库
    4.再重启sql server
      

  2.   

    删除日志文件(当然为了安全,先备份)再附加>
    附加数据库:企业管理器
    --右键"数据库"
    --所有任务
    --附加数据库
    --选择你的.mdf文件名
    --确定
    --提示没有.ldf文件,是否创建,选择"是"
    查询分析器中的方法:
    sp_attach_single_file_db '数据库名'
    ,'数据文件名(*.mdf注意要带目录)' --后面可以是用,分隔的该数据库的多个数据文件
      

  3.   

    再不行的话,创建一个同名的数据库.停止SQL服务. 用要恢复的数据文件覆盖新建数据库的数据文件.启动SQL服务.如果出现置疑.用下面的方法解决:/*--重置置疑状态
    1.系统方法:
    如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,
    那么 microsoft® sql server™ 2000 会返回错误 1105 
    并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题: 执行 sp_resetstatus。
    语法为:
    sp_resetstatus '数据库名'
    用 alter database 向数据库添加一个数据文件或日志文件。停止并重新启动 sql server。 用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。释放磁盘空间并且重新运行恢复操作。 sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
    --*/--2.手工重置置疑状态
    use master 
    go
    sp_configure 'allow updates',1 reconfigure with override 
    go
    declare @dbname varchar(30)
    set @dbname='你要处理的数据库名'if @@trancount > 0
    print '正在进行事务处理,操作不能进行'
    else if suser_id()!=1
    print '你不是系统管理员(sa),不能进行此操作'
    else if not exists(select 1 from master..sysdatabases where name=@dbname)
    print '你要操作的数据库不存在'
    else if not exists(select 1 from master..sysdatabases where name= @dbname and status & 256 = 256)
    print '你的数据库没有被置疑'
    else
    begin
    begin tran
    update master..sysdatabases set status = status ^ 256 where name = @dbname
    if @@error != 0 or @@rowcount != 1
    rollback tran
    else 
    begin
    commit tran
    print '操作成功,请重新启动SQL'
    end
    end
    go 
    sp_configure 'allow updates', 1 reconfigure with override 
    go 
      

  4.   

    多试几次 有时会出错 这是sql server的bug