分离并复制数据库后,再次把数据库附加回去报错9004

分享到:

2021-04-21 21:21:52

问题:将数据库分离,将MDF和LDF数据复制出来后,再次附加时,报错:
处理数据库 “databasename” 的日志时出错。如果可能,请从备份还原。如果没有可用备份,可能需要重新生成日志。无法打开新数据库 “databasename”。CREATE DATABASE 中止。 (Microsoft SQL Server,错误: 9004)
 
解决方法:
1.新建了一个同名的数据库,包括日志和行数据(比如dateBase1),用于恢复内容;
2.停止数据库服务(即停止SQL Server (MSSQLSERVER))
3.把之前生成的dateBase1的日志dateBase1_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件dateBase1_data.mdf。
4.启动数据库服务。
5.打开数据库时,会看到数据库dateBase1不可使用。
执行如下语句:
ALTER DATABASE dateBase1 SET EMERGENCY【将数据库置为紧急状态可以允许sysadmin服务器角色到数据库的只读访问 】
ALTER DATABASE dateBase1 SET SINGLE_USER【只允许一个用户访问数据库】
ALTER DATABASE dateBase1 REBUILD LOG ON (NAME=日志名称_log, FILENAME= '存放日志的地址')【重建日志文件】
 
执行后,会有警告信息“警告: 数据库 ‘dateBase1‘ 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。”
 
6.DBCC CHECKDB('dateBase1', REPAIR_ALLOW_DATA_LOSS) 【修复数据库】
7. ALTER DATABASE database_forrestore  SET MULTI_USER【恢复多用户模式】
8. ALTER DATABASE database_forrestore  SET ONLINE 【联机,可以在数据库上的右键菜单中执行】
9.刷新,这时数据恢复正常
————————————————
版权声明:本文为CSDN博主「XianRenShan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XianRenShan/article/details/79259457
声明:此篇为用友服务中心文章,转载请标明出处链接:
  • 相关文章
  • 热门下载
  • 数据修复
  • 热门标签
合作伙伴