SOCSEC

MSSQL备份数据库恢复总结

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

方法一

  • 步骤一

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

  • 步骤二

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    --设置为紧急模式
    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语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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,选中数据库右键选择“附加”,会弹出一个附加数据库的对话框,然后在要附加的数据库那里选择“添加”按钮,定位要恢复的数据库文件,这时会发现数据库详情信息栏那里会有“找不到”日志文件的错误提示,删除它,然后点击确定,等待恢复就好了。