​​前段时间要恢复一个仅有.mdf的SQLserver数据库。各种尝试之后发现是SQLserver2012的数据文件。恢复有两种方式。                                                                              

方法一

​    步骤一

​    打开SQL Server Management Studio,新建一个同名数据库,然后停止数据库服务。进入新建的数据库存储目录。删除数据库文件(即:新建数据库名.mdf和新建数据库名.ldf)。将需要恢复的数据库拷进数据库存储目录。
启动数据库服务。

​    步骤二

​    这是可以看到新建的数据库文件状态为:挂起状态。接着新建查询输入如下语句:

--设置为紧急模式
alter database '数据库名字' set emergency;
go
--设置为单用户模式
alter database '数据库名字' set single_user;
go
--查看数据库错误报告
dbcc checkdb('数据库名字') ;
go
--进行修复
dbcc checkdb('数据库名字',[选项]) ;
go

注:这里的[选项]包括:

​    REPAIR_ALLOW_DATA_LOSS

尝试修复所有错误,这个选项可能导致数据的丢失,慎用!

​    REPAIR_REBUILD

执行不会导致数据丢失的修复,

​    REPAIR_FAST

不会执行任何修复动作。

dbccy语法:

DBCC CHECKDB
    [ ( database_name | database_id | 0
        [ , NOINDEX
        | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
    ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS ]
            [ , EXTENDED_LOGICAL_CHECKS ]
            [ , NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , { PHYSICAL_ONLY | DATA_PURITY } ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

其中参数的意义参见:

https://msdn.microsoft.com/en-us/library/ms176064.aspx

方法二

打开SQL Server Management Studio,选中数据库右键选择“附加”,会弹出一个附加数据库的对话框,然后在要附加的数据库那里选择“添加”按钮,定位要恢复的数据库文件,这时会发现数据库详情信息栏那里会有“找不到”日志文件的错误提示,删除它,然后点击确定,等待恢复就好了。

源链接

Hacking more

...