问题:
数据库版本为2008R2 ,在自己笔记本上连接服务器sqlserver,
用delete 删除数据,数据量比较大,删除中途二级交换机断电,导致删除没有完成(delete已经执行30分钟),这时sqlserver正在回滚,
然后去服务器上把server服务重启了,
然后数据库就显示”正在恢复“,
又另想办法把服务停掉,然后删除ldf文件,在重新附加,可是问题出来了,
附加不上,ldf由于太大没发还原,
LDF日志不要轻易删除,恢复主数据要用到,如果删除,记得先分离,然后移动到另外的地方。
下面是针对未分离删除日志文件,MDF文件附加,提示找不到日志的问题的解决方法:
1,新建数据库,同名需要附加的数据库名(假设名为grab)。
2,在sqlserver配置管理器中停止sql服务,然后打开新建数据库grab的位置,将需要附加的MDF、NDF(如果有)文件复制,粘贴到此位置,覆盖新建的数据库文件。
3,重新在sqlserver配置管理器中启动sql服务,然后在客户端连接会看到覆盖完的数据库grab不能打开,点击属性提示错误。
4,在数据库master下新建查询(按字母顺序执行):
a:alter database grab set emergency /*设置紧急状态,此步骤执行完,grab的属性可以打开了。*/
b:alter database grab set single_user 或 Sp_dboption 'grab ', 'single user', 'true' /*设置单用户运行状态*/
c:dbcc checkdb('grab ',REPAIR_ALLOW_DATA_LOSS) /*检查并重建,此步骤略长,注意数据库名带引号。*/
/*如果此步骤,运行完毕有错误提示,日志文件无法创建,则运行下面命令;如果没有错误,略过...*/
dbcc checkdb('grab ',REPAIR_REBUILD)
d:alter database grab set multi_user 或 Sp_dboption 'grab ', 'single user', 'false' /*恢复多用户状态运行*/
e:刷新grab数据库,可以看到表数据了。