前段时间要恢复一个仅有.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,选中数据库右键选择“附加”,会弹出一个附加数据库的对话框,然后在要附加的数据库那里选择“添加”按钮,定位要恢复的数据库文件,这时会发现数据库详情信息栏那里会有“找不到”日志文件的错误提示,删除它,然后点击确定,等待恢复就好了。